diff --git a/app/src/main/java/org/mozilla/fenix/FenixApplication.kt b/app/src/main/java/org/mozilla/fenix/FenixApplication.kt
index bfac06236..25d4c8fb4 100644
--- a/app/src/main/java/org/mozilla/fenix/FenixApplication.kt
+++ b/app/src/main/java/org/mozilla/fenix/FenixApplication.kt
@@ -336,6 +336,7 @@ open class FenixApplication : LocaleAwareApplication() {
},
onExtensionsLoaded = { extensions ->
components.addonUpdater.registerForFutureUpdates(extensions)
+ components.supportedAddChecker.registerForChecks()
},
onUpdatePermissionRequest = components.addonUpdater::onUpdatePermissionRequest
)
diff --git a/app/src/main/java/org/mozilla/fenix/GlobalDirections.kt b/app/src/main/java/org/mozilla/fenix/GlobalDirections.kt
index 76cdd6971..315f673b4 100644
--- a/app/src/main/java/org/mozilla/fenix/GlobalDirections.kt
+++ b/app/src/main/java/org/mozilla/fenix/GlobalDirections.kt
@@ -33,5 +33,9 @@ enum class GlobalDirections(val navDirections: NavDirections, val destinationId:
DeleteData(
NavGraphDirections.actionGlobalDeleteBrowsingDataFragment(),
R.id.deleteBrowsingDataFragment
+ ),
+ SettingsAddonManager(
+ NavGraphDirections.actionGlobalSettingsAddonsManagementFragment(),
+ R.id.addonsManagementFragment
)
}
diff --git a/app/src/main/java/org/mozilla/fenix/components/Components.kt b/app/src/main/java/org/mozilla/fenix/components/Components.kt
index aa8552b85..29d84cac6 100644
--- a/app/src/main/java/org/mozilla/fenix/components/Components.kt
+++ b/app/src/main/java/org/mozilla/fenix/components/Components.kt
@@ -5,13 +5,18 @@
package org.mozilla.fenix.components
import android.content.Context
+import android.content.Intent
+import androidx.core.net.toUri
import mozilla.components.feature.addons.AddonManager
import mozilla.components.feature.addons.amo.AddonCollectionProvider
import mozilla.components.feature.addons.update.AddonUpdater
import mozilla.components.feature.addons.update.DefaultAddonUpdater
+import mozilla.components.feature.addons.migration.SupportedAddonsChecker
+import mozilla.components.feature.addons.migration.DefaultSupportedAddonsChecker
import mozilla.components.feature.tabs.TabsUseCases
import mozilla.components.lib.publicsuffixlist.PublicSuffixList
import mozilla.components.support.migration.state.MigrationStore
+import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.test.Mockable
import org.mozilla.fenix.utils.ClipboardHandler
import java.util.concurrent.TimeUnit
@@ -68,6 +73,17 @@ class Components(private val context: Context) {
DefaultAddonUpdater(context, AddonUpdater.Frequency(12, TimeUnit.HOURS))
}
+ @Suppress("MagicNumber")
+ val supportedAddChecker by lazy {
+ DefaultSupportedAddonsChecker(context, SupportedAddonsChecker.Frequency(16, TimeUnit.MINUTES),
+ onNotificationClickIntent = Intent(context, HomeActivity::class.java).apply {
+ action = Intent.ACTION_VIEW
+ flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
+ data = "fenix://settings_addon_manager".toUri()
+ }
+ )
+ }
+
val addonManager by lazy {
AddonManager(core.store, core.engine, addonCollectionProvider, addonUpdater)
}
diff --git a/app/src/main/java/org/mozilla/fenix/home/intent/DeepLinkIntentProcessor.kt b/app/src/main/java/org/mozilla/fenix/home/intent/DeepLinkIntentProcessor.kt
index 3e71695c3..3e3c0f69c 100644
--- a/app/src/main/java/org/mozilla/fenix/home/intent/DeepLinkIntentProcessor.kt
+++ b/app/src/main/java/org/mozilla/fenix/home/intent/DeepLinkIntentProcessor.kt
@@ -32,6 +32,7 @@ class DeepLinkIntentProcessor(
}
}
+ @Suppress("ComplexMethod")
private fun handleDeepLink(deepLink: Uri, navController: NavController) {
handleDeepLinkSideEffects(deepLink)
@@ -42,6 +43,7 @@ class DeepLinkIntentProcessor(
"settings_search_engine" -> GlobalDirections.SearchEngine
"settings_accessibility" -> GlobalDirections.Accessibility
"settings_delete_browsing_data" -> GlobalDirections.DeleteData
+ "settings_addon_manager" -> GlobalDirections.SettingsAddonManager
else -> return
}
diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml
index 71774d434..6e96515a0 100644
--- a/app/src/main/res/navigation/nav_graph.xml
+++ b/app/src/main/res/navigation/nav_graph.xml
@@ -35,6 +35,10 @@
android:id="@+id/action_global_settingsFragment"
app:destination="@id/settingsFragment" />
+
+
diff --git a/app/src/test/java/org/mozilla/fenix/home/intent/DeepLinkIntentProcessorTest.kt b/app/src/test/java/org/mozilla/fenix/home/intent/DeepLinkIntentProcessorTest.kt
index ba9c55ec7..8bd2173fb 100644
--- a/app/src/test/java/org/mozilla/fenix/home/intent/DeepLinkIntentProcessorTest.kt
+++ b/app/src/test/java/org/mozilla/fenix/home/intent/DeepLinkIntentProcessorTest.kt
@@ -150,5 +150,13 @@ class DeepLinkIntentProcessorTest {
verify { out wasNot Called }
}
+ @Test
+ fun `process settings_addon_manager deep link`() {
+ assertTrue(processor.process(testIntent("fenix://settings_addon_manager"), navController, out))
+
+ verify { navController.navigate(NavGraphDirections.actionGlobalSettingsAddonsManagementFragment()) }
+ verify { out wasNot Called }
+ }
+
private fun testIntent(uri: String) = Intent("", uri.toUri())
}