diff --git a/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt b/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt index e4d66646d..73b99a693 100644 --- a/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt @@ -31,6 +31,8 @@ import mozilla.components.feature.session.SessionFeature import mozilla.components.feature.session.SessionUseCases import mozilla.components.feature.session.ThumbnailsFeature import mozilla.components.feature.sitepermissions.SitePermissionsFeature +import mozilla.components.feature.sitepermissions.SitePermissionsRules +import mozilla.components.feature.sitepermissions.SitePermissionsRules.Action.ASK_TO_ALLOW import mozilla.components.support.base.feature.BackHandler import mozilla.components.support.base.feature.ViewBoundFeatureWrapper import mozilla.components.support.ktx.android.view.enterToImmersiveMode @@ -56,6 +58,7 @@ import org.mozilla.fenix.ext.share import org.mozilla.fenix.mvi.ActionBusFactory import org.mozilla.fenix.mvi.getAutoDisposeObservable import org.mozilla.fenix.quickactionsheet.QuickActionSheet +import org.mozilla.fenix.utils.Settings class BrowserFragment : Fragment(), BackHandler { private lateinit var toolbarComponent: ToolbarComponent @@ -258,6 +261,8 @@ class BrowserFragment : Fragment(), BackHandler { is SearchAction.ToolbarMenuItemTapped -> handleToolbarItemInteraction(it) } } + + assignSitePermissionsRules() } override fun onBackPressed(): Boolean { @@ -335,6 +340,25 @@ class BrowserFragment : Fragment(), BackHandler { } } + private fun assignSitePermissionsRules() { + val settings = Settings.getInstance(requireContext()) + + val recommendedSettings = SitePermissionsRules( + camera = ASK_TO_ALLOW, + notification = ASK_TO_ALLOW, + location = ASK_TO_ALLOW, + microphone = ASK_TO_ALLOW + ) + val rules: SitePermissionsRules? = if (settings.shouldRecommendedSettingsBeActivated) { + recommendedSettings + } else { + null + } + sitePermissionsFeature.withFeature { + it.sitePermissionsRules = rules + } + } + object Do { inline infix fun exhaustive(any: T?) = any } diff --git a/app/src/main/java/org/mozilla/fenix/utils/Settings.kt b/app/src/main/java/org/mozilla/fenix/utils/Settings.kt index b4f86878e..82a0d22f4 100644 --- a/app/src/main/java/org/mozilla/fenix/utils/Settings.kt +++ b/app/src/main/java/org/mozilla/fenix/utils/Settings.kt @@ -50,6 +50,9 @@ class Settings private constructor(context: Context) { val shouldAutoBounceQuickActionSheet: Boolean get() = autoBounceQuickActionSheetCount < autoBounceMaximumCount + val shouldRecommendedSettingsBeActivated: Boolean + get() = preferences.getBoolean(appContext.getPreferenceKey(R.string.pref_key_recommended_settings), true) + private val autoBounceQuickActionSheetCount: Int get() = (preferences.getInt(appContext.getPreferenceKey(R.string.pref_key_bounce_quick_action), 0))