1
0
Fork 0

For issue #8908 Notify users when previously unsupported add-ons

become available
master
Arturo Mejia 2020-03-09 15:23:57 -04:00
parent e86120027f
commit ce4293c8c8
6 changed files with 35 additions and 0 deletions

View File

@ -336,6 +336,7 @@ open class FenixApplication : LocaleAwareApplication() {
}, },
onExtensionsLoaded = { extensions -> onExtensionsLoaded = { extensions ->
components.addonUpdater.registerForFutureUpdates(extensions) components.addonUpdater.registerForFutureUpdates(extensions)
components.supportedAddChecker.registerForChecks()
}, },
onUpdatePermissionRequest = components.addonUpdater::onUpdatePermissionRequest onUpdatePermissionRequest = components.addonUpdater::onUpdatePermissionRequest
) )

View File

@ -33,5 +33,9 @@ enum class GlobalDirections(val navDirections: NavDirections, val destinationId:
DeleteData( DeleteData(
NavGraphDirections.actionGlobalDeleteBrowsingDataFragment(), NavGraphDirections.actionGlobalDeleteBrowsingDataFragment(),
R.id.deleteBrowsingDataFragment R.id.deleteBrowsingDataFragment
),
SettingsAddonManager(
NavGraphDirections.actionGlobalSettingsAddonsManagementFragment(),
R.id.addonsManagementFragment
) )
} }

View File

@ -5,13 +5,18 @@
package org.mozilla.fenix.components package org.mozilla.fenix.components
import android.content.Context import android.content.Context
import android.content.Intent
import androidx.core.net.toUri
import mozilla.components.feature.addons.AddonManager import mozilla.components.feature.addons.AddonManager
import mozilla.components.feature.addons.amo.AddonCollectionProvider import mozilla.components.feature.addons.amo.AddonCollectionProvider
import mozilla.components.feature.addons.update.AddonUpdater import mozilla.components.feature.addons.update.AddonUpdater
import mozilla.components.feature.addons.update.DefaultAddonUpdater 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.feature.tabs.TabsUseCases
import mozilla.components.lib.publicsuffixlist.PublicSuffixList import mozilla.components.lib.publicsuffixlist.PublicSuffixList
import mozilla.components.support.migration.state.MigrationStore import mozilla.components.support.migration.state.MigrationStore
import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.test.Mockable import org.mozilla.fenix.test.Mockable
import org.mozilla.fenix.utils.ClipboardHandler import org.mozilla.fenix.utils.ClipboardHandler
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
@ -68,6 +73,17 @@ class Components(private val context: Context) {
DefaultAddonUpdater(context, AddonUpdater.Frequency(12, TimeUnit.HOURS)) 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 { val addonManager by lazy {
AddonManager(core.store, core.engine, addonCollectionProvider, addonUpdater) AddonManager(core.store, core.engine, addonCollectionProvider, addonUpdater)
} }

View File

@ -32,6 +32,7 @@ class DeepLinkIntentProcessor(
} }
} }
@Suppress("ComplexMethod")
private fun handleDeepLink(deepLink: Uri, navController: NavController) { private fun handleDeepLink(deepLink: Uri, navController: NavController) {
handleDeepLinkSideEffects(deepLink) handleDeepLinkSideEffects(deepLink)
@ -42,6 +43,7 @@ class DeepLinkIntentProcessor(
"settings_search_engine" -> GlobalDirections.SearchEngine "settings_search_engine" -> GlobalDirections.SearchEngine
"settings_accessibility" -> GlobalDirections.Accessibility "settings_accessibility" -> GlobalDirections.Accessibility
"settings_delete_browsing_data" -> GlobalDirections.DeleteData "settings_delete_browsing_data" -> GlobalDirections.DeleteData
"settings_addon_manager" -> GlobalDirections.SettingsAddonManager
else -> return else -> return
} }

View File

@ -35,6 +35,10 @@
android:id="@+id/action_global_settingsFragment" android:id="@+id/action_global_settingsFragment"
app:destination="@id/settingsFragment" /> app:destination="@id/settingsFragment" />
<action
android:id="@+id/action_global_settings_addonsManagementFragment"
app:destination="@id/addonsManagementFragment" />
<action <action
android:id="@+id/action_global_searchEngineFragment" android:id="@+id/action_global_searchEngineFragment"
app:destination="@id/searchEngineFragment" /> app:destination="@id/searchEngineFragment" />

View File

@ -150,5 +150,13 @@ class DeepLinkIntentProcessorTest {
verify { out wasNot Called } 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()) private fun testIntent(uri: String) = Intent("", uri.toUri())
} }