From 46aa6a003ef6aeb99fb6caaaf2fec4d442ede673 Mon Sep 17 00:00:00 2001 From: Gabriel Luong Date: Tue, 18 Aug 2020 17:47:06 -0400 Subject: [PATCH] For #10342 - Part 3: Use the TopSitesUseCase in the BrowserToolbarController and SessionControlController Use the provided `addPinnedSites` and `removeTopSites` use cases in `BrowserToolbarController` and `SessionControlController`. --- .../org/mozilla/fenix/browser/BaseBrowserFragment.kt | 1 - .../java/org/mozilla/fenix/components/Components.kt | 3 ++- .../main/java/org/mozilla/fenix/components/UseCases.kt | 10 +++++++++- .../components/toolbar/BrowserToolbarController.kt | 6 +++--- .../main/java/org/mozilla/fenix/home/HomeFragment.kt | 1 - .../home/sessioncontrol/SessionControlController.kt | 6 +++--- 6 files changed, 17 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt b/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt index f76fe4288..8a922ecd1 100644 --- a/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt @@ -241,7 +241,6 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session bookmarkTapped = { viewLifecycleOwner.lifecycleScope.launch { bookmarkTapped(it) } }, scope = viewLifecycleOwner.lifecycleScope, tabCollectionStorage = requireComponents.core.tabCollectionStorage, - topSiteStorage = requireComponents.core.topSiteStorage, onTabCounterClicked = { thumbnailsFeature.get()?.requestScreenshot() findNavController().nav( 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 be263b0dc..8ff934dbe 100644 --- a/app/src/main/java/org/mozilla/fenix/components/Components.kt +++ b/app/src/main/java/org/mozilla/fenix/components/Components.kt @@ -53,7 +53,8 @@ class Components(private val context: Context) { core.sessionManager, core.store, search.searchEngineManager, - core.webAppShortcutManager + core.webAppShortcutManager, + core.topSiteStorage ) } val intentProcessors by lazy { diff --git a/app/src/main/java/org/mozilla/fenix/components/UseCases.kt b/app/src/main/java/org/mozilla/fenix/components/UseCases.kt index 2cec0c741..8897cb8de 100644 --- a/app/src/main/java/org/mozilla/fenix/components/UseCases.kt +++ b/app/src/main/java/org/mozilla/fenix/components/UseCases.kt @@ -20,6 +20,8 @@ import mozilla.components.feature.session.SessionUseCases import mozilla.components.feature.session.SettingsUseCases import mozilla.components.feature.session.TrackingProtectionUseCases import mozilla.components.feature.tabs.TabsUseCases +import mozilla.components.feature.top.sites.TopSitesStorage +import mozilla.components.feature.top.sites.TopSitesUseCases import org.mozilla.fenix.utils.Mockable /** @@ -34,7 +36,8 @@ class UseCases( private val sessionManager: SessionManager, private val store: BrowserStore, private val searchEngineManager: SearchEngineManager, - private val shortcutManager: WebAppShortcutManager + private val shortcutManager: WebAppShortcutManager, + private val topSitesStorage: TopSitesStorage ) { /** * Use cases that provide engine interactions for a given browser session. @@ -69,4 +72,9 @@ class UseCases( val engineSessionUseCases by lazy { EngineSessionUseCases(sessionManager) } val trackingProtectionUseCases by lazy { TrackingProtectionUseCases(store, engine) } + + /** + * Use cases that provide top sites management. + */ + val topSitesUseCase by lazy { TopSitesUseCases(topSitesStorage) } } diff --git a/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarController.kt b/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarController.kt index 436b8136d..0d8ede070 100644 --- a/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarController.kt +++ b/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarController.kt @@ -34,7 +34,6 @@ import org.mozilla.fenix.browser.readermode.ReaderModeController import org.mozilla.fenix.collections.SaveCollectionStep import org.mozilla.fenix.components.FenixSnackbar import org.mozilla.fenix.components.TabCollectionStorage -import org.mozilla.fenix.components.TopSiteStorage import org.mozilla.fenix.components.metrics.Event import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.getRootView @@ -75,7 +74,6 @@ class DefaultBrowserToolbarController( private val bookmarkTapped: (Session) -> Unit, private val scope: CoroutineScope, private val tabCollectionStorage: TabCollectionStorage, - private val topSiteStorage: TopSiteStorage, private val onTabCounterClicked: () -> Unit, private val onCloseTab: (Session) -> Unit ) : BrowserToolbarController { @@ -245,7 +243,9 @@ class DefaultBrowserToolbarController( scope.launch { ioScope.launch { currentSession?.let { - topSiteStorage.addTopSite(it.title, it.url) + with(activity.components.useCases.topSitesUseCase) { + addPinnedSites(it.title, it.url) + } } }.join() diff --git a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt index 96d5bb0b6..ce16a8da3 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt @@ -209,7 +209,6 @@ class HomeFragment : Fragment() { metrics = components.analytics.metrics, sessionManager = sessionManager, tabCollectionStorage = components.core.tabCollectionStorage, - topSiteStorage = components.core.topSiteStorage, addTabUseCase = components.useCases.tabsUseCases.addTab, fragmentStore = homeFragmentStore, navController = findNavController(), diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlController.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlController.kt index 73a32c5a6..7c927d2c5 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlController.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlController.kt @@ -22,7 +22,6 @@ import org.mozilla.fenix.R import org.mozilla.fenix.browser.browsingmode.BrowsingMode import org.mozilla.fenix.collections.SaveCollectionStep import org.mozilla.fenix.components.TabCollectionStorage -import org.mozilla.fenix.components.TopSiteStorage import org.mozilla.fenix.components.metrics.Event import org.mozilla.fenix.components.metrics.MetricController import org.mozilla.fenix.components.metrics.MetricsUtils @@ -160,7 +159,6 @@ class DefaultSessionControlController( private val metrics: MetricController, private val sessionManager: SessionManager, private val tabCollectionStorage: TabCollectionStorage, - private val topSiteStorage: TopSiteStorage, private val addTabUseCase: TabsUseCases.AddNewTabUseCase, private val fragmentStore: HomeFragmentStore, private val navController: NavController, @@ -290,7 +288,9 @@ class DefaultSessionControlController( } viewLifecycleScope.launch(Dispatchers.IO) { - topSiteStorage.removeTopSite(topSite) + with(activity.components.useCases.topSitesUseCase) { + removeTopSites(topSite) + } } }