diff --git a/app/build.gradle b/app/build.gradle index 4368b5351..796fc4244 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -191,6 +191,7 @@ dependencies { implementation Deps.mozilla_feature_tabs implementation Deps.mozilla_feature_findinpage implementation Deps.mozilla_feature_session_bundling + implementation Deps.mozilla_feature_site_permissions implementation Deps.mozilla_service_firefox_accounts implementation Deps.mozilla_service_fretboard diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f93af7994..75530f99e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -7,6 +7,8 @@ + + () private val customTabsToolbarFeature = ViewBoundFeatureWrapper() private val toolbarIntegration = ViewBoundFeatureWrapper() + private val sitePermissionsFeature = ViewBoundFeatureWrapper() var sessionId: String? = null override fun onCreateView( @@ -165,6 +167,17 @@ class BrowserFragment : Fragment(), BackHandler { feature = (toolbarComponent.uiView as ToolbarUIView).toolbarIntegration, owner = this, view = view) + + sitePermissionsFeature.set( + feature = SitePermissionsFeature( + anchorView = view.findInPageView, + sessionManager = sessionManager + ) { permissions -> + requestPermissions(permissions, REQUEST_CODE_APP_PERMISSIONS) + }, + owner = this, + view = view + ) } override fun onResume() { @@ -204,6 +217,9 @@ class BrowserFragment : Fragment(), BackHandler { REQUEST_CODE_PROMPT_PERMISSIONS -> promptsFeature.withFeature { it.onPermissionsResult(permissions, grantResults) } + REQUEST_CODE_APP_PERMISSIONS -> sitePermissionsFeature.withFeature { + it.onPermissionsResult(grantResults) + } } } @@ -257,6 +273,7 @@ class BrowserFragment : Fragment(), BackHandler { companion object { private const val REQUEST_CODE_DOWNLOAD_PERMISSIONS = 1 private const val REQUEST_CODE_PROMPT_PERMISSIONS = 2 + private const val REQUEST_CODE_APP_PERMISSIONS = 3 private const val TOOLBAR_HEIGHT = 56f private const val REPORT_SITE_ISSUE_URL = "https://webcompat.com/issues/new?url=%s&label=browser-fenix" } diff --git a/buildSrc/src/main/java/Dependencies.kt b/buildSrc/src/main/java/Dependencies.kt index 04abbbfce..870c5fa8c 100644 --- a/buildSrc/src/main/java/Dependencies.kt +++ b/buildSrc/src/main/java/Dependencies.kt @@ -90,6 +90,7 @@ object Deps { const val mozilla_feature_toolbar = "org.mozilla.components:feature-toolbar:${Versions.mozilla_android_components}" const val mozilla_feature_findinpage = "org.mozilla.components:feature-findinpage:${Versions.mozilla_android_components}" const val mozilla_feature_session_bundling = "org.mozilla.components:feature-session-bundling:${Versions.mozilla_android_components}" + const val mozilla_feature_site_permissions = "org.mozilla.components:feature-sitepermissions:${Versions.mozilla_android_components}" const val mozilla_service_firefox_accounts = "org.mozilla.components:service-firefox-accounts:${Versions.mozilla_android_components}" const val mozilla_service_fretboard = "org.mozilla.components:service-fretboard:${Versions.mozilla_android_components}"