diff --git a/app/src/main/java/org/mozilla/fenix/HomeActivity.kt b/app/src/main/java/org/mozilla/fenix/HomeActivity.kt index 7a50685cc057..fd6bc611cce7 100644 --- a/app/src/main/java/org/mozilla/fenix/HomeActivity.kt +++ b/app/src/main/java/org/mozilla/fenix/HomeActivity.kt @@ -57,6 +57,7 @@ import mozilla.components.feature.search.BrowserStoreSearchAdapter import mozilla.components.service.fxa.sync.SyncReason import mozilla.components.support.base.feature.ActivityResultHandler import mozilla.components.support.base.feature.UserInteractionHandler +import mozilla.components.support.base.log.logger.Logger import mozilla.components.support.ktx.android.arch.lifecycle.addObservers import mozilla.components.support.ktx.android.content.call import mozilla.components.support.ktx.android.content.email @@ -86,8 +87,8 @@ import org.mozilla.fenix.ext.setNavigationIcon import org.mozilla.fenix.ext.settings import org.mozilla.fenix.home.HomeFragmentDirections import org.mozilla.fenix.home.intent.CrashReporterIntentProcessor -import org.mozilla.fenix.home.intent.HomeDeepLinkIntentProcessor import org.mozilla.fenix.home.intent.DefaultBrowserIntentProcessor +import org.mozilla.fenix.home.intent.HomeDeepLinkIntentProcessor import org.mozilla.fenix.home.intent.OpenBrowserIntentProcessor import org.mozilla.fenix.home.intent.OpenSpecificTabIntentProcessor import org.mozilla.fenix.home.intent.SpeechProcessingIntentProcessor @@ -279,6 +280,10 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity { components.core.requestInterceptor.setNavigationController(navHost.navController) + if (settings().showContileFeature) { + components.core.contileTopSitesUpdater.startPeriodicWork() + } + if (settings().showPocketRecommendationsFeature) { components.core.pocketStoriesService.startPeriodicStoriesRefresh() } @@ -309,6 +314,7 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity { } @CallSuper + @Suppress("TooGenericExceptionCaught") override fun onResume() { super.onResume() @@ -332,7 +338,19 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity { } } - isFenixTheDefaultBrowser() + lifecycleScope.launch(IO) { + try { + components.core.contileTopSitesProvider.refreshTopSitesIfCacheExpired() + } catch (e: Exception) { + Logger.error("Failed to refresh contile top sites", e) + } + + if (settings().checkIfFenixIsDefaultBrowserOnAppResume()) { + metrics.track(Event.ChangedToDefaultBrowser) + } + + DefaultBrowserNotificationWorker.setDefaultBrowserNotificationIfNeeded(applicationContext) + } } override fun onStart() { @@ -435,6 +453,7 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity { ) ) + components.core.contileTopSitesUpdater.stopPeriodicWork() components.core.pocketStoriesService.stopPeriodicStoriesRefresh() privateNotificationObserver?.stop() } @@ -975,19 +994,6 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity { } } - private fun isFenixTheDefaultBrowser() { - // Launch this on a background thread so as not to affect startup performance - lifecycleScope.launch(IO) { - if ( - settings().checkIfFenixIsDefaultBrowserOnAppResume() - ) { - metrics.track(Event.ChangedToDefaultBrowser) - } - - DefaultBrowserNotificationWorker.setDefaultBrowserNotificationIfNeeded(applicationContext) - } - } - @VisibleForTesting internal fun isActivityColdStarted(startingIntent: Intent, activityIcicle: Bundle?): Boolean { // First time opening this activity in the task. diff --git a/app/src/main/java/org/mozilla/fenix/components/Core.kt b/app/src/main/java/org/mozilla/fenix/components/Core.kt index 6266902214b8..ea4ddf81af20 100644 --- a/app/src/main/java/org/mozilla/fenix/components/Core.kt +++ b/app/src/main/java/org/mozilla/fenix/components/Core.kt @@ -55,6 +55,7 @@ import mozilla.components.feature.webcompat.reporter.WebCompatReporterFeature import mozilla.components.feature.webnotifications.WebNotificationFeature import mozilla.components.lib.dataprotect.SecureAbove22Preferences import mozilla.components.service.contile.ContileTopSitesProvider +import mozilla.components.service.contile.ContileTopSitesUpdater import mozilla.components.service.digitalassetlinks.RelationChecker import mozilla.components.service.digitalassetlinks.local.StatementApi import mozilla.components.service.digitalassetlinks.local.StatementRelationChecker @@ -348,6 +349,15 @@ class Core( ) } + @Suppress("MagicNumber") + val contileTopSitesUpdater by lazyMonitored { + ContileTopSitesUpdater( + context = context, + provider = contileTopSitesProvider, + frequency = Frequency(3, TimeUnit.HOURS) + ) + } + val topSitesStorage by lazyMonitored { val defaultTopSites = mutableListOf>()