From 2c01022c4b7d46d135b56fe37f7b8b3253437e20 Mon Sep 17 00:00:00 2001 From: Simon Chae Date: Mon, 10 Feb 2020 16:57:29 -0500 Subject: [PATCH] For #8153: Allow web-ext to open new tabs in correct browsing mode --- .../org/mozilla/fenix/FenixApplication.kt | 2 +- .../java/org/mozilla/fenix/HomeActivity.kt | 29 ++++++++++++------- .../fenix/browser/BaseBrowserFragment.kt | 4 +-- .../browsingmode/BrowsingModeManager.kt | 19 ++++++++++-- .../mozilla/fenix/components/Components.kt | 3 ++ .../components/toolbar/DefaultToolbarMenu.kt | 6 ++-- .../customtabs/ExternalAppBrowserFragment.kt | 3 +- .../org/mozilla/fenix/home/HomeFragment.kt | 2 +- .../home/intent/DeepLinkIntentProcessor.kt | 3 +- .../fenix/library/LibraryPageFragment.kt | 4 +-- .../library/bookmarks/BookmarkController.kt | 4 +-- .../fenix/library/history/HistoryFragment.kt | 2 +- .../mozilla/fenix/search/SearchController.kt | 2 +- .../mozilla/fenix/search/SearchFragment.kt | 4 +-- .../fenix/search/awesomebar/AwesomeBarView.kt | 7 +---- .../DefaultBrowsingModeManagerTest.kt | 22 +++++++------- .../fenix/components/TestComponents.kt | 3 ++ .../intent/DeepLinkIntentProcessorTest.kt | 8 ++++- .../bookmarks/BookmarkControllerTest.kt | 12 ++++---- .../fenix/search/SearchInteractorTest.kt | 5 ++++ 20 files changed, 89 insertions(+), 55 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/FenixApplication.kt b/app/src/main/java/org/mozilla/fenix/FenixApplication.kt index f4a826289..1cca1f39b 100644 --- a/app/src/main/java/org/mozilla/fenix/FenixApplication.kt +++ b/app/src/main/java/org/mozilla/fenix/FenixApplication.kt @@ -304,7 +304,7 @@ open class FenixApplication : LocaleAwareApplication() { components.core.store, onNewTabOverride = { _, engineSession, url -> - val session = Session(url) + val session = Session(url, components.browsingModeManager.mode.isPrivate) components.core.sessionManager.add(session, true, engineSession) session.id }, diff --git a/app/src/main/java/org/mozilla/fenix/HomeActivity.kt b/app/src/main/java/org/mozilla/fenix/HomeActivity.kt index 4fe2d7663..034857f65 100644 --- a/app/src/main/java/org/mozilla/fenix/HomeActivity.kt +++ b/app/src/main/java/org/mozilla/fenix/HomeActivity.kt @@ -40,8 +40,7 @@ import mozilla.components.support.utils.toSafeIntent import mozilla.components.support.webextensions.WebExtensionPopupFeature import org.mozilla.fenix.browser.UriOpenedObserver import org.mozilla.fenix.browser.browsingmode.BrowsingMode -import org.mozilla.fenix.browser.browsingmode.BrowsingModeManager -import org.mozilla.fenix.browser.browsingmode.DefaultBrowsingModeManager +import org.mozilla.fenix.browser.browsingmode.BrowsingModeListener import org.mozilla.fenix.components.metrics.BreadcrumbsRecorder import org.mozilla.fenix.components.metrics.Event import org.mozilla.fenix.exceptions.ExceptionsFragmentDirections @@ -74,7 +73,7 @@ open class HomeActivity : LocaleAwareAppCompatActivity() { private var webExtScope: CoroutineScope? = null lateinit var themeManager: ThemeManager - lateinit var browsingModeManager: BrowsingModeManager + private val browsingModeManager get() = components.browsingModeManager private var sessionObserver: SessionManager.Observer? = null @@ -99,6 +98,12 @@ open class HomeActivity : LocaleAwareAppCompatActivity() { ) } + private val browsingModeListener = object : BrowsingModeListener { + override fun onBrowsingModeChange(newMode: BrowsingMode) { + themeManager.currentTheme = newMode + } + } + override fun applyOverrideConfiguration(overrideConfiguration: Configuration?) { if (overrideConfiguration != null) { val uiMode = overrideConfiguration.uiMode @@ -161,6 +166,16 @@ open class HomeActivity : LocaleAwareAppCompatActivity() { hotStartMonitor.onPostResumeFinalMethodCall() } + final override fun onStart() { + super.onStart() + browsingModeManager.registerBrowsingModeListener(browsingModeListener) + } + + final override fun onStop() { + super.onStop() + browsingModeManager.unregisterBrowsingModeListener() + } + final override fun onPause() { super.onPause() @@ -237,7 +252,7 @@ open class HomeActivity : LocaleAwareAppCompatActivity() { private fun setupThemeAndBrowsingMode(mode: BrowsingMode) { settings().lastKnownMode = mode - browsingModeManager = createBrowsingModeManager(mode) + browsingModeManager.mode = mode themeManager = createThemeManager() themeManager.setActivityTheme(this) themeManager.applyStatusBarTheme(this) @@ -374,12 +389,6 @@ open class HomeActivity : LocaleAwareAppCompatActivity() { } } - protected open fun createBrowsingModeManager(initialMode: BrowsingMode): BrowsingModeManager { - return DefaultBrowsingModeManager(initialMode) { newMode -> - themeManager.currentTheme = newMode - } - } - protected open fun createThemeManager(): ThemeManager { return DefaultThemeManager(browsingModeManager.mode, this) } 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 4addbb583..cd5ee0ba2 100644 --- a/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt @@ -160,10 +160,10 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session navController = findNavController(), readerModeController = DefaultReaderModeController( readerViewFeature, - (activity as HomeActivity).browsingModeManager.mode.isPrivate, + requireComponents.browsingModeManager.mode.isPrivate, view.readerViewControlsBar ), - browsingModeManager = (activity as HomeActivity).browsingModeManager, + browsingModeManager = requireComponents.browsingModeManager, sessionManager = requireComponents.core.sessionManager, findInPageLauncher = { findInPageIntegration.withFeature { it.launch() } }, browserLayout = view.browserLayout, diff --git a/app/src/main/java/org/mozilla/fenix/browser/browsingmode/BrowsingModeManager.kt b/app/src/main/java/org/mozilla/fenix/browser/browsingmode/BrowsingModeManager.kt index cfe32f6f3..abb856b06 100644 --- a/app/src/main/java/org/mozilla/fenix/browser/browsingmode/BrowsingModeManager.kt +++ b/app/src/main/java/org/mozilla/fenix/browser/browsingmode/BrowsingModeManager.kt @@ -31,19 +31,32 @@ interface BrowsingModeManager { var mode: BrowsingMode } +interface BrowsingModeListener { + fun onBrowsingModeChange(newMode: BrowsingMode) +} + /** * Wraps a [BrowsingMode] and executes a callback whenever [mode] is updated. */ class DefaultBrowsingModeManager( - private var _mode: BrowsingMode, - private val modeDidChange: (BrowsingMode) -> Unit + private var _mode: BrowsingMode = BrowsingMode.Normal ) : BrowsingModeManager { + private var _browsingModeListener: BrowsingModeListener? = null + + fun registerBrowsingModeListener(browsingModeListener: BrowsingModeListener) { + _browsingModeListener = browsingModeListener + } + + fun unregisterBrowsingModeListener() { + _browsingModeListener = null + } + override var mode: BrowsingMode get() = _mode set(value) { _mode = value - modeDidChange(value) + _browsingModeListener?.onBrowsingModeChange(value) Settings.instance?.lastKnownMode = value } } 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 83e2769ba..100f1b020 100644 --- a/app/src/main/java/org/mozilla/fenix/components/Components.kt +++ b/app/src/main/java/org/mozilla/fenix/components/Components.kt @@ -12,6 +12,7 @@ import mozilla.components.feature.addons.update.DefaultAddonUpdater import mozilla.components.feature.tabs.TabsUseCases import mozilla.components.lib.publicsuffixlist.PublicSuffixList import mozilla.components.support.migration.state.MigrationStore +import org.mozilla.fenix.browser.browsingmode.DefaultBrowsingModeManager import org.mozilla.fenix.test.Mockable import org.mozilla.fenix.utils.ClipboardHandler import java.util.concurrent.TimeUnit @@ -71,6 +72,8 @@ class Components(private val context: Context) { AddonManager(core.store, core.engine, addonCollectionProvider, addonUpdater) } + val browsingModeManager by lazy { DefaultBrowsingModeManager() } + val tabsUseCases: TabsUseCases by lazy { TabsUseCases(core.sessionManager) } val analytics by lazy { Analytics(context) } diff --git a/app/src/main/java/org/mozilla/fenix/components/toolbar/DefaultToolbarMenu.kt b/app/src/main/java/org/mozilla/fenix/components/toolbar/DefaultToolbarMenu.kt index c1169874f..af4bfa65c 100644 --- a/app/src/main/java/org/mozilla/fenix/components/toolbar/DefaultToolbarMenu.kt +++ b/app/src/main/java/org/mozilla/fenix/components/toolbar/DefaultToolbarMenu.kt @@ -22,10 +22,8 @@ import mozilla.components.browser.menu.item.BrowserMenuItemToolbar import mozilla.components.browser.session.Session import mozilla.components.browser.session.SessionManager import mozilla.components.concept.storage.BookmarksStorage -import org.mozilla.fenix.HomeActivity import org.mozilla.fenix.R import org.mozilla.fenix.browser.browsingmode.BrowsingMode -import org.mozilla.fenix.ext.asActivity import org.mozilla.fenix.ext.components import org.mozilla.fenix.theme.ThemeManager import org.mozilla.fenix.utils.Settings @@ -130,8 +128,8 @@ class DefaultToolbarMenu( private val menuItems by lazy { // Predicates that are called once, during screen init - val shouldShowSaveToCollection = (context.asActivity() as? HomeActivity) - ?.browsingModeManager?.mode == BrowsingMode.Normal + val shouldShowSaveToCollection = + context.components.browsingModeManager.mode == BrowsingMode.Normal val shouldDeleteDataOnQuit = Settings.getInstance(context) .shouldDeleteBrowsingDataOnQuit diff --git a/app/src/main/java/org/mozilla/fenix/customtabs/ExternalAppBrowserFragment.kt b/app/src/main/java/org/mozilla/fenix/customtabs/ExternalAppBrowserFragment.kt index 48308f763..283c628ce 100644 --- a/app/src/main/java/org/mozilla/fenix/customtabs/ExternalAppBrowserFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/customtabs/ExternalAppBrowserFragment.kt @@ -27,7 +27,6 @@ import mozilla.components.lib.state.ext.consumeFrom import mozilla.components.support.base.feature.UserInteractionHandler import mozilla.components.support.base.feature.ViewBoundFeatureWrapper import mozilla.components.support.ktx.android.arch.lifecycle.addObservers -import org.mozilla.fenix.HomeActivity import org.mozilla.fenix.R import org.mozilla.fenix.browser.BaseBrowserFragment import org.mozilla.fenix.browser.CustomTabContextMenuCandidate @@ -69,7 +68,7 @@ class ExternalAppBrowserFragment : BaseBrowserFragment(), UserInteractionHandler activity = activity, engineLayout = view.swipeRefresh, onItemTapped = { browserInteractor.onBrowserToolbarMenuItemTapped(it) }, - isPrivate = (activity as HomeActivity).browsingModeManager.mode.isPrivate, + isPrivate = requireComponents.browsingModeManager.mode.isPrivate, shouldReverseItems = !activity.settings().shouldUseBottomToolbar ), owner = this, 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 b317795c7..bf800f467 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt @@ -106,7 +106,7 @@ class HomeFragment : Fragment() { } } - private val browsingModeManager get() = (activity as HomeActivity).browsingModeManager + private val browsingModeManager get() = requireComponents.browsingModeManager private var homeAppBarOffset = 0 private val singleSessionObserver = object : Session.Observer { override fun onTitleChanged(session: Session, title: String) { 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..0592043c3 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 @@ -15,6 +15,7 @@ import org.mozilla.fenix.GlobalDirections import org.mozilla.fenix.HomeActivity import org.mozilla.fenix.browser.browsingmode.BrowsingMode import org.mozilla.fenix.ext.alreadyOnDestination +import org.mozilla.fenix.ext.components /** * Deep links in the form of `fenix://host` open different parts of the app. @@ -56,7 +57,7 @@ class DeepLinkIntentProcessor( private fun handleDeepLinkSideEffects(deepLink: Uri) { when (deepLink.host) { "enable_private_browsing" -> { - activity.browsingModeManager.mode = BrowsingMode.Private + activity.components.browsingModeManager.mode = BrowsingMode.Private } "make_default_browser" -> { if (SDK_INT >= Build.VERSION_CODES.N) { diff --git a/app/src/main/java/org/mozilla/fenix/library/LibraryPageFragment.kt b/app/src/main/java/org/mozilla/fenix/library/LibraryPageFragment.kt index 56245353c..a43e552ca 100644 --- a/app/src/main/java/org/mozilla/fenix/library/LibraryPageFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/library/LibraryPageFragment.kt @@ -5,10 +5,10 @@ package org.mozilla.fenix.library import androidx.fragment.app.Fragment -import org.mozilla.fenix.HomeActivity import org.mozilla.fenix.browser.browsingmode.BrowsingMode import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.hideToolbar +import org.mozilla.fenix.ext.requireComponents abstract class LibraryPageFragment : Fragment() { @@ -24,7 +24,7 @@ abstract class LibraryPageFragment : Fragment() { } } - (activity as HomeActivity).browsingModeManager.mode = BrowsingMode.fromBoolean(private) + requireComponents.browsingModeManager.mode = BrowsingMode.fromBoolean(private) hideToolbar() } } diff --git a/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkController.kt b/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkController.kt index a8c1caefb..08b900e53 100644 --- a/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkController.kt +++ b/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkController.kt @@ -56,7 +56,7 @@ class DefaultBookmarkController( private val services: Services = activity.components.services override fun handleBookmarkTapped(item: BookmarkNode) { - openInNewTab(item.url!!, true, BrowserDirection.FromBookmarks, activity.browsingModeManager.mode) + openInNewTab(item.url!!, true, BrowserDirection.FromBookmarks, context.components.browsingModeManager.mode) } override fun handleBookmarkExpand(folder: BookmarkNode) { @@ -117,7 +117,7 @@ class DefaultBookmarkController( ) { invokePendingDeletion.invoke() with(activity) { - browsingModeManager.mode = mode + components.browsingModeManager.mode = mode openToBrowserAndLoad(searchTermOrURL, newTab, from) } } diff --git a/app/src/main/java/org/mozilla/fenix/library/history/HistoryFragment.kt b/app/src/main/java/org/mozilla/fenix/library/history/HistoryFragment.kt index c22eb0415..7517e831a 100644 --- a/app/src/main/java/org/mozilla/fenix/library/history/HistoryFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/library/history/HistoryFragment.kt @@ -169,7 +169,7 @@ class HistoryFragment : LibraryPageFragment(), UserInteractionHandl } (activity as HomeActivity).apply { - browsingModeManager.mode = BrowsingMode.Private + components.browsingModeManager.mode = BrowsingMode.Private supportActionBar?.hide() } nav( diff --git a/app/src/main/java/org/mozilla/fenix/search/SearchController.kt b/app/src/main/java/org/mozilla/fenix/search/SearchController.kt index 40140d5c1..ce441cb0e 100644 --- a/app/src/main/java/org/mozilla/fenix/search/SearchController.kt +++ b/app/src/main/java/org/mozilla/fenix/search/SearchController.kt @@ -88,7 +88,7 @@ class DefaultSearchController( store.dispatch( SearchFragmentAction.AllowSearchSuggestionsInPrivateModePrompt( text.isNotEmpty() && - (context as HomeActivity).browsingModeManager.mode.isPrivate && + context.components.browsingModeManager.mode.isPrivate && !context.settings().shouldShowSearchSuggestionsInPrivate && !context.settings().showSearchSuggestionsInPrivateOnboardingFinished ) diff --git a/app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt b/app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt index 76ca499f8..454de55c1 100644 --- a/app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt @@ -87,7 +87,7 @@ class SearchFragment : Fragment(), UserInteractionHandler { ) val showSearchSuggestions = - if ((activity as HomeActivity).browsingModeManager.mode.isPrivate) { + if (requireComponents.browsingModeManager.mode.isPrivate) { requireContext().settings().shouldShowSearchSuggestions && requireContext().settings().shouldShowSearchSuggestionsInPrivate } else { @@ -130,7 +130,7 @@ class SearchFragment : Fragment(), UserInteractionHandler { view.toolbar_component_wrapper, searchInteractor, historyStorageProvider(), - (activity as HomeActivity).browsingModeManager.mode.isPrivate + requireComponents.browsingModeManager.mode.isPrivate ) val urlView = toolbarView.view diff --git a/app/src/main/java/org/mozilla/fenix/search/awesomebar/AwesomeBarView.kt b/app/src/main/java/org/mozilla/fenix/search/awesomebar/AwesomeBarView.kt index cd040043f..47790b04d 100644 --- a/app/src/main/java/org/mozilla/fenix/search/awesomebar/AwesomeBarView.kt +++ b/app/src/main/java/org/mozilla/fenix/search/awesomebar/AwesomeBarView.kt @@ -28,9 +28,7 @@ import mozilla.components.feature.session.SessionUseCases import mozilla.components.feature.tabs.TabsUseCases import mozilla.components.support.ktx.android.content.getColorFromAttr import mozilla.components.support.ktx.android.view.hideKeyboard -import org.mozilla.fenix.HomeActivity import org.mozilla.fenix.R -import org.mozilla.fenix.ext.asActivity import org.mozilla.fenix.ext.components import org.mozilla.fenix.search.SearchEngineSource import org.mozilla.fenix.search.SearchFragmentState @@ -304,10 +302,7 @@ class AwesomeBarView( return providersToRemove } - private fun isBrowsingModePrivate(): Boolean { - return (container.context.asActivity() as? HomeActivity)?.browsingModeManager?.mode?.isPrivate - ?: false - } + private fun isBrowsingModePrivate(): Boolean = container.context.components.browsingModeManager.mode.isPrivate private fun getSelectedSearchSuggestionProvider(state: SearchFragmentState): SearchSuggestionProvider? { return when (state.searchEngineSource) { diff --git a/app/src/test/java/org/mozilla/fenix/browser/browsingmode/DefaultBrowsingModeManagerTest.kt b/app/src/test/java/org/mozilla/fenix/browser/browsingmode/DefaultBrowsingModeManagerTest.kt index 1130996d6..eafb4c0f3 100644 --- a/app/src/test/java/org/mozilla/fenix/browser/browsingmode/DefaultBrowsingModeManagerTest.kt +++ b/app/src/test/java/org/mozilla/fenix/browser/browsingmode/DefaultBrowsingModeManagerTest.kt @@ -4,40 +4,42 @@ package org.mozilla.fenix.browser.browsingmode -import io.mockk.MockKAnnotations -import io.mockk.impl.annotations.MockK -import io.mockk.verify +import mozilla.components.support.test.any +import mozilla.components.support.test.mock import org.junit.Assert.assertEquals import org.junit.Before import org.junit.Test +import org.mockito.Mockito.times +import org.mockito.Mockito.verify class DefaultBrowsingModeManagerTest { - @MockK(relaxed = true) lateinit var callback: (BrowsingMode) -> Unit - lateinit var manager: BrowsingModeManager + lateinit var manager: DefaultBrowsingModeManager private val initMode = BrowsingMode.Normal @Before fun before() { - MockKAnnotations.init(this) - manager = DefaultBrowsingModeManager(initMode, callback) + manager = DefaultBrowsingModeManager(initMode) } @Test fun `WHEN mode is updated THEN callback is invoked`() { - verify(exactly = 0) { callback.invoke(any()) } + val browsingModeListener: BrowsingModeListener = mock() + manager.registerBrowsingModeListener(browsingModeListener) + + verify(browsingModeListener, times(0)).onBrowsingModeChange(any()) manager.mode = BrowsingMode.Private manager.mode = BrowsingMode.Private manager.mode = BrowsingMode.Private - verify(exactly = 3) { callback.invoke(any()) } + verify(browsingModeListener, times(3)).onBrowsingModeChange(any()) manager.mode = BrowsingMode.Normal manager.mode = BrowsingMode.Normal - verify(exactly = 5) { callback.invoke(any()) } + verify(browsingModeListener, times(5)).onBrowsingModeChange(any()) } @Test diff --git a/app/src/test/java/org/mozilla/fenix/components/TestComponents.kt b/app/src/test/java/org/mozilla/fenix/components/TestComponents.kt index 0ce3505a9..db34466ea 100644 --- a/app/src/test/java/org/mozilla/fenix/components/TestComponents.kt +++ b/app/src/test/java/org/mozilla/fenix/components/TestComponents.kt @@ -8,6 +8,7 @@ import android.content.Context import io.mockk.mockk import mozilla.components.support.test.mock import org.mockito.Mockito.`when` +import org.mozilla.fenix.browser.browsingmode.DefaultBrowsingModeManager import org.mozilla.fenix.utils.ClipboardHandler class TestComponents(private val context: Context) : Components(context) { @@ -38,5 +39,7 @@ class TestComponents(private val context: Context) : Components(context) { } override val analytics by lazy { Analytics(context) } + override val browsingModeManager by lazy { DefaultBrowsingModeManager() } + override val clipboardHandler by lazy { ClipboardHandler(context) } } 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..158bf127d 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 @@ -8,6 +8,7 @@ import android.content.Intent import androidx.core.net.toUri import androidx.navigation.NavController import io.mockk.Called +import io.mockk.every import io.mockk.mockk import io.mockk.verify import org.junit.Assert.assertFalse @@ -20,6 +21,8 @@ import org.mozilla.fenix.HomeActivity import org.mozilla.fenix.NavGraphDirections import org.mozilla.fenix.TestApplication import org.mozilla.fenix.browser.browsingmode.BrowsingMode +import org.mozilla.fenix.browser.browsingmode.DefaultBrowsingModeManager +import org.mozilla.fenix.ext.components import org.robolectric.RobolectricTestRunner import org.robolectric.annotation.Config @@ -114,9 +117,12 @@ class DeepLinkIntentProcessorTest { @Test fun `process enable_private_browsing deep link`() { + val browsingModeManager: DefaultBrowsingModeManager = mockk(relaxed = true) + every { activity.components.browsingModeManager } returns browsingModeManager + assertTrue(processor.process(testIntent("fenix://enable_private_browsing"), navController, out)) - verify { activity.browsingModeManager.mode = BrowsingMode.Private } + verify { browsingModeManager.mode = BrowsingMode.Private } verify { navController.navigate(NavGraphDirections.actionGlobalHomeFragment()) } verify { out wasNot Called } } diff --git a/app/src/test/java/org/mozilla/fenix/library/bookmarks/BookmarkControllerTest.kt b/app/src/test/java/org/mozilla/fenix/library/bookmarks/BookmarkControllerTest.kt index 1fcbe92fa..42c0f4f35 100644 --- a/app/src/test/java/org/mozilla/fenix/library/bookmarks/BookmarkControllerTest.kt +++ b/app/src/test/java/org/mozilla/fenix/library/bookmarks/BookmarkControllerTest.kt @@ -109,16 +109,16 @@ class BookmarkControllerTest { @Test fun `handleBookmarkTapped should respect browsing mode`() { // if in normal mode, should be in normal mode - every { homeActivity.browsingModeManager.mode } returns BrowsingMode.Normal + every { context.components.browsingModeManager.mode } returns BrowsingMode.Normal controller.handleBookmarkTapped(item) - assertEquals(BrowsingMode.Normal, homeActivity.browsingModeManager.mode) + assertEquals(BrowsingMode.Normal, context.components.browsingModeManager.mode) // if in private mode, should be in private mode - every { homeActivity.browsingModeManager.mode } returns BrowsingMode.Private + every { context.components.browsingModeManager.mode } returns BrowsingMode.Private controller.handleBookmarkTapped(item) - assertEquals(BrowsingMode.Private, homeActivity.browsingModeManager.mode) + assertEquals(BrowsingMode.Private, context.components.browsingModeManager.mode) } @Test @@ -204,7 +204,7 @@ class BookmarkControllerTest { verifyOrder { invokePendingDeletion.invoke() - homeActivity.browsingModeManager.mode = BrowsingMode.Normal + homeActivity.components.browsingModeManager.mode = BrowsingMode.Normal homeActivity.openToBrowserAndLoad(item.url!!, true, BrowserDirection.FromBookmarks) } } @@ -215,7 +215,7 @@ class BookmarkControllerTest { verifyOrder { invokePendingDeletion.invoke() - homeActivity.browsingModeManager.mode = BrowsingMode.Private + homeActivity.components.browsingModeManager.mode = BrowsingMode.Private homeActivity.openToBrowserAndLoad(item.url!!, true, BrowserDirection.FromBookmarks) } } diff --git a/app/src/test/java/org/mozilla/fenix/search/SearchInteractorTest.kt b/app/src/test/java/org/mozilla/fenix/search/SearchInteractorTest.kt index 571dfd8fb..2203ac9b3 100644 --- a/app/src/test/java/org/mozilla/fenix/search/SearchInteractorTest.kt +++ b/app/src/test/java/org/mozilla/fenix/search/SearchInteractorTest.kt @@ -24,8 +24,10 @@ import org.mozilla.fenix.BrowserDirection import org.mozilla.fenix.FenixApplication import org.mozilla.fenix.HomeActivity import org.mozilla.fenix.TestApplication +import org.mozilla.fenix.browser.browsingmode.DefaultBrowsingModeManager import org.mozilla.fenix.components.metrics.Event import org.mozilla.fenix.components.searchengine.CustomSearchEngineStore.PREF_FILE_SEARCH_ENGINES +import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.metrics import org.mozilla.fenix.ext.searchEngineManager import org.mozilla.fenix.ext.settings @@ -108,6 +110,9 @@ class SearchInteractorTest { val context: HomeActivity = mockk(relaxed = true) val settings = testContext.settings().apply { testContext.settings().clear() } + val browsingModeManager: DefaultBrowsingModeManager = mockk(relaxed = true) + every { context.components.browsingModeManager } returns browsingModeManager + mockkObject(Settings) every { Settings.getInstance(context = context) } returns settings