diff --git a/app/src/main/java/org/mozilla/fenix/HomeActivity.kt b/app/src/main/java/org/mozilla/fenix/HomeActivity.kt index 7a50685cc057..251a6f134698 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() } @@ -332,7 +337,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 +452,7 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity { ) ) + components.core.contileTopSitesUpdater.stopPeriodicWork() components.core.pocketStoriesService.stopPeriodicStoriesRefresh() privateNotificationObserver?.stop() } @@ -975,19 +993,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..8c7e611be03b 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 @@ -89,6 +90,7 @@ import org.mozilla.fenix.telemetry.TelemetryMiddleware import org.mozilla.fenix.utils.getUndoDelay import org.mozilla.geckoview.GeckoRuntime import java.util.concurrent.TimeUnit +import mozilla.components.service.contile.Frequency as ContileFrequency /** * Component group for all core browser functionality. @@ -348,6 +350,15 @@ class Core( ) } + @Suppress("MagicNumber") + val contileTopSitesUpdater by lazyMonitored { + ContileTopSitesUpdater( + context = context, + provider = contileTopSitesProvider, + frequency = ContileFrequency(3, TimeUnit.HOURS) + ) + } + val topSitesStorage by lazyMonitored { val defaultTopSites = mutableListOf>()