1
0
Fork 0

For #8153: Allow web-ext to open new tabs in correct browsing mode

master
Simon Chae 2020-02-10 16:57:29 -05:00 committed by Jeff Boek
parent 5e4ef202b8
commit 2c01022c4b
20 changed files with 89 additions and 55 deletions

View File

@ -304,7 +304,7 @@ open class FenixApplication : LocaleAwareApplication() {
components.core.store, components.core.store,
onNewTabOverride = { onNewTabOverride = {
_, engineSession, url -> _, engineSession, url ->
val session = Session(url) val session = Session(url, components.browsingModeManager.mode.isPrivate)
components.core.sessionManager.add(session, true, engineSession) components.core.sessionManager.add(session, true, engineSession)
session.id session.id
}, },

View File

@ -40,8 +40,7 @@ import mozilla.components.support.utils.toSafeIntent
import mozilla.components.support.webextensions.WebExtensionPopupFeature import mozilla.components.support.webextensions.WebExtensionPopupFeature
import org.mozilla.fenix.browser.UriOpenedObserver import org.mozilla.fenix.browser.UriOpenedObserver
import org.mozilla.fenix.browser.browsingmode.BrowsingMode import org.mozilla.fenix.browser.browsingmode.BrowsingMode
import org.mozilla.fenix.browser.browsingmode.BrowsingModeManager import org.mozilla.fenix.browser.browsingmode.BrowsingModeListener
import org.mozilla.fenix.browser.browsingmode.DefaultBrowsingModeManager
import org.mozilla.fenix.components.metrics.BreadcrumbsRecorder import org.mozilla.fenix.components.metrics.BreadcrumbsRecorder
import org.mozilla.fenix.components.metrics.Event import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.exceptions.ExceptionsFragmentDirections import org.mozilla.fenix.exceptions.ExceptionsFragmentDirections
@ -74,7 +73,7 @@ open class HomeActivity : LocaleAwareAppCompatActivity() {
private var webExtScope: CoroutineScope? = null private var webExtScope: CoroutineScope? = null
lateinit var themeManager: ThemeManager lateinit var themeManager: ThemeManager
lateinit var browsingModeManager: BrowsingModeManager private val browsingModeManager get() = components.browsingModeManager
private var sessionObserver: SessionManager.Observer? = null 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?) { override fun applyOverrideConfiguration(overrideConfiguration: Configuration?) {
if (overrideConfiguration != null) { if (overrideConfiguration != null) {
val uiMode = overrideConfiguration.uiMode val uiMode = overrideConfiguration.uiMode
@ -161,6 +166,16 @@ open class HomeActivity : LocaleAwareAppCompatActivity() {
hotStartMonitor.onPostResumeFinalMethodCall() hotStartMonitor.onPostResumeFinalMethodCall()
} }
final override fun onStart() {
super.onStart()
browsingModeManager.registerBrowsingModeListener(browsingModeListener)
}
final override fun onStop() {
super.onStop()
browsingModeManager.unregisterBrowsingModeListener()
}
final override fun onPause() { final override fun onPause() {
super.onPause() super.onPause()
@ -237,7 +252,7 @@ open class HomeActivity : LocaleAwareAppCompatActivity() {
private fun setupThemeAndBrowsingMode(mode: BrowsingMode) { private fun setupThemeAndBrowsingMode(mode: BrowsingMode) {
settings().lastKnownMode = mode settings().lastKnownMode = mode
browsingModeManager = createBrowsingModeManager(mode) browsingModeManager.mode = mode
themeManager = createThemeManager() themeManager = createThemeManager()
themeManager.setActivityTheme(this) themeManager.setActivityTheme(this)
themeManager.applyStatusBarTheme(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 { protected open fun createThemeManager(): ThemeManager {
return DefaultThemeManager(browsingModeManager.mode, this) return DefaultThemeManager(browsingModeManager.mode, this)
} }

View File

@ -160,10 +160,10 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session
navController = findNavController(), navController = findNavController(),
readerModeController = DefaultReaderModeController( readerModeController = DefaultReaderModeController(
readerViewFeature, readerViewFeature,
(activity as HomeActivity).browsingModeManager.mode.isPrivate, requireComponents.browsingModeManager.mode.isPrivate,
view.readerViewControlsBar view.readerViewControlsBar
), ),
browsingModeManager = (activity as HomeActivity).browsingModeManager, browsingModeManager = requireComponents.browsingModeManager,
sessionManager = requireComponents.core.sessionManager, sessionManager = requireComponents.core.sessionManager,
findInPageLauncher = { findInPageIntegration.withFeature { it.launch() } }, findInPageLauncher = { findInPageIntegration.withFeature { it.launch() } },
browserLayout = view.browserLayout, browserLayout = view.browserLayout,

View File

@ -31,19 +31,32 @@ interface BrowsingModeManager {
var mode: BrowsingMode var mode: BrowsingMode
} }
interface BrowsingModeListener {
fun onBrowsingModeChange(newMode: BrowsingMode)
}
/** /**
* Wraps a [BrowsingMode] and executes a callback whenever [mode] is updated. * Wraps a [BrowsingMode] and executes a callback whenever [mode] is updated.
*/ */
class DefaultBrowsingModeManager( class DefaultBrowsingModeManager(
private var _mode: BrowsingMode, private var _mode: BrowsingMode = BrowsingMode.Normal
private val modeDidChange: (BrowsingMode) -> Unit
) : BrowsingModeManager { ) : BrowsingModeManager {
private var _browsingModeListener: BrowsingModeListener? = null
fun registerBrowsingModeListener(browsingModeListener: BrowsingModeListener) {
_browsingModeListener = browsingModeListener
}
fun unregisterBrowsingModeListener() {
_browsingModeListener = null
}
override var mode: BrowsingMode override var mode: BrowsingMode
get() = _mode get() = _mode
set(value) { set(value) {
_mode = value _mode = value
modeDidChange(value) _browsingModeListener?.onBrowsingModeChange(value)
Settings.instance?.lastKnownMode = value Settings.instance?.lastKnownMode = value
} }
} }

View File

@ -12,6 +12,7 @@ import mozilla.components.feature.addons.update.DefaultAddonUpdater
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.browser.browsingmode.DefaultBrowsingModeManager
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
@ -71,6 +72,8 @@ class Components(private val context: Context) {
AddonManager(core.store, core.engine, addonCollectionProvider, addonUpdater) AddonManager(core.store, core.engine, addonCollectionProvider, addonUpdater)
} }
val browsingModeManager by lazy { DefaultBrowsingModeManager() }
val tabsUseCases: TabsUseCases by lazy { TabsUseCases(core.sessionManager) } val tabsUseCases: TabsUseCases by lazy { TabsUseCases(core.sessionManager) }
val analytics by lazy { Analytics(context) } val analytics by lazy { Analytics(context) }

View File

@ -22,10 +22,8 @@ import mozilla.components.browser.menu.item.BrowserMenuItemToolbar
import mozilla.components.browser.session.Session import mozilla.components.browser.session.Session
import mozilla.components.browser.session.SessionManager import mozilla.components.browser.session.SessionManager
import mozilla.components.concept.storage.BookmarksStorage import mozilla.components.concept.storage.BookmarksStorage
import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.browser.browsingmode.BrowsingMode import org.mozilla.fenix.browser.browsingmode.BrowsingMode
import org.mozilla.fenix.ext.asActivity
import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.components
import org.mozilla.fenix.theme.ThemeManager import org.mozilla.fenix.theme.ThemeManager
import org.mozilla.fenix.utils.Settings import org.mozilla.fenix.utils.Settings
@ -130,8 +128,8 @@ class DefaultToolbarMenu(
private val menuItems by lazy { private val menuItems by lazy {
// Predicates that are called once, during screen init // Predicates that are called once, during screen init
val shouldShowSaveToCollection = (context.asActivity() as? HomeActivity) val shouldShowSaveToCollection =
?.browsingModeManager?.mode == BrowsingMode.Normal context.components.browsingModeManager.mode == BrowsingMode.Normal
val shouldDeleteDataOnQuit = Settings.getInstance(context) val shouldDeleteDataOnQuit = Settings.getInstance(context)
.shouldDeleteBrowsingDataOnQuit .shouldDeleteBrowsingDataOnQuit

View File

@ -27,7 +27,6 @@ import mozilla.components.lib.state.ext.consumeFrom
import mozilla.components.support.base.feature.UserInteractionHandler import mozilla.components.support.base.feature.UserInteractionHandler
import mozilla.components.support.base.feature.ViewBoundFeatureWrapper import mozilla.components.support.base.feature.ViewBoundFeatureWrapper
import mozilla.components.support.ktx.android.arch.lifecycle.addObservers import mozilla.components.support.ktx.android.arch.lifecycle.addObservers
import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.browser.BaseBrowserFragment import org.mozilla.fenix.browser.BaseBrowserFragment
import org.mozilla.fenix.browser.CustomTabContextMenuCandidate import org.mozilla.fenix.browser.CustomTabContextMenuCandidate
@ -69,7 +68,7 @@ class ExternalAppBrowserFragment : BaseBrowserFragment(), UserInteractionHandler
activity = activity, activity = activity,
engineLayout = view.swipeRefresh, engineLayout = view.swipeRefresh,
onItemTapped = { browserInteractor.onBrowserToolbarMenuItemTapped(it) }, onItemTapped = { browserInteractor.onBrowserToolbarMenuItemTapped(it) },
isPrivate = (activity as HomeActivity).browsingModeManager.mode.isPrivate, isPrivate = requireComponents.browsingModeManager.mode.isPrivate,
shouldReverseItems = !activity.settings().shouldUseBottomToolbar shouldReverseItems = !activity.settings().shouldUseBottomToolbar
), ),
owner = this, owner = this,

View File

@ -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 var homeAppBarOffset = 0
private val singleSessionObserver = object : Session.Observer { private val singleSessionObserver = object : Session.Observer {
override fun onTitleChanged(session: Session, title: String) { override fun onTitleChanged(session: Session, title: String) {

View File

@ -15,6 +15,7 @@ import org.mozilla.fenix.GlobalDirections
import org.mozilla.fenix.HomeActivity import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.browser.browsingmode.BrowsingMode import org.mozilla.fenix.browser.browsingmode.BrowsingMode
import org.mozilla.fenix.ext.alreadyOnDestination 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. * 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) { private fun handleDeepLinkSideEffects(deepLink: Uri) {
when (deepLink.host) { when (deepLink.host) {
"enable_private_browsing" -> { "enable_private_browsing" -> {
activity.browsingModeManager.mode = BrowsingMode.Private activity.components.browsingModeManager.mode = BrowsingMode.Private
} }
"make_default_browser" -> { "make_default_browser" -> {
if (SDK_INT >= Build.VERSION_CODES.N) { if (SDK_INT >= Build.VERSION_CODES.N) {

View File

@ -5,10 +5,10 @@
package org.mozilla.fenix.library package org.mozilla.fenix.library
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.browser.browsingmode.BrowsingMode import org.mozilla.fenix.browser.browsingmode.BrowsingMode
import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.hideToolbar import org.mozilla.fenix.ext.hideToolbar
import org.mozilla.fenix.ext.requireComponents
abstract class LibraryPageFragment<T> : Fragment() { abstract class LibraryPageFragment<T> : Fragment() {
@ -24,7 +24,7 @@ abstract class LibraryPageFragment<T> : Fragment() {
} }
} }
(activity as HomeActivity).browsingModeManager.mode = BrowsingMode.fromBoolean(private) requireComponents.browsingModeManager.mode = BrowsingMode.fromBoolean(private)
hideToolbar() hideToolbar()
} }
} }

View File

@ -56,7 +56,7 @@ class DefaultBookmarkController(
private val services: Services = activity.components.services private val services: Services = activity.components.services
override fun handleBookmarkTapped(item: BookmarkNode) { 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) { override fun handleBookmarkExpand(folder: BookmarkNode) {
@ -117,7 +117,7 @@ class DefaultBookmarkController(
) { ) {
invokePendingDeletion.invoke() invokePendingDeletion.invoke()
with(activity) { with(activity) {
browsingModeManager.mode = mode components.browsingModeManager.mode = mode
openToBrowserAndLoad(searchTermOrURL, newTab, from) openToBrowserAndLoad(searchTermOrURL, newTab, from)
} }
} }

View File

@ -169,7 +169,7 @@ class HistoryFragment : LibraryPageFragment<HistoryItem>(), UserInteractionHandl
} }
(activity as HomeActivity).apply { (activity as HomeActivity).apply {
browsingModeManager.mode = BrowsingMode.Private components.browsingModeManager.mode = BrowsingMode.Private
supportActionBar?.hide() supportActionBar?.hide()
} }
nav( nav(

View File

@ -88,7 +88,7 @@ class DefaultSearchController(
store.dispatch( store.dispatch(
SearchFragmentAction.AllowSearchSuggestionsInPrivateModePrompt( SearchFragmentAction.AllowSearchSuggestionsInPrivateModePrompt(
text.isNotEmpty() && text.isNotEmpty() &&
(context as HomeActivity).browsingModeManager.mode.isPrivate && context.components.browsingModeManager.mode.isPrivate &&
!context.settings().shouldShowSearchSuggestionsInPrivate && !context.settings().shouldShowSearchSuggestionsInPrivate &&
!context.settings().showSearchSuggestionsInPrivateOnboardingFinished !context.settings().showSearchSuggestionsInPrivateOnboardingFinished
) )

View File

@ -87,7 +87,7 @@ class SearchFragment : Fragment(), UserInteractionHandler {
) )
val showSearchSuggestions = val showSearchSuggestions =
if ((activity as HomeActivity).browsingModeManager.mode.isPrivate) { if (requireComponents.browsingModeManager.mode.isPrivate) {
requireContext().settings().shouldShowSearchSuggestions && requireContext().settings().shouldShowSearchSuggestions &&
requireContext().settings().shouldShowSearchSuggestionsInPrivate requireContext().settings().shouldShowSearchSuggestionsInPrivate
} else { } else {
@ -130,7 +130,7 @@ class SearchFragment : Fragment(), UserInteractionHandler {
view.toolbar_component_wrapper, view.toolbar_component_wrapper,
searchInteractor, searchInteractor,
historyStorageProvider(), historyStorageProvider(),
(activity as HomeActivity).browsingModeManager.mode.isPrivate requireComponents.browsingModeManager.mode.isPrivate
) )
val urlView = toolbarView.view val urlView = toolbarView.view

View File

@ -28,9 +28,7 @@ import mozilla.components.feature.session.SessionUseCases
import mozilla.components.feature.tabs.TabsUseCases import mozilla.components.feature.tabs.TabsUseCases
import mozilla.components.support.ktx.android.content.getColorFromAttr import mozilla.components.support.ktx.android.content.getColorFromAttr
import mozilla.components.support.ktx.android.view.hideKeyboard import mozilla.components.support.ktx.android.view.hideKeyboard
import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.ext.asActivity
import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.components
import org.mozilla.fenix.search.SearchEngineSource import org.mozilla.fenix.search.SearchEngineSource
import org.mozilla.fenix.search.SearchFragmentState import org.mozilla.fenix.search.SearchFragmentState
@ -304,10 +302,7 @@ class AwesomeBarView(
return providersToRemove return providersToRemove
} }
private fun isBrowsingModePrivate(): Boolean { private fun isBrowsingModePrivate(): Boolean = container.context.components.browsingModeManager.mode.isPrivate
return (container.context.asActivity() as? HomeActivity)?.browsingModeManager?.mode?.isPrivate
?: false
}
private fun getSelectedSearchSuggestionProvider(state: SearchFragmentState): SearchSuggestionProvider? { private fun getSelectedSearchSuggestionProvider(state: SearchFragmentState): SearchSuggestionProvider? {
return when (state.searchEngineSource) { return when (state.searchEngineSource) {

View File

@ -4,40 +4,42 @@
package org.mozilla.fenix.browser.browsingmode package org.mozilla.fenix.browser.browsingmode
import io.mockk.MockKAnnotations import mozilla.components.support.test.any
import io.mockk.impl.annotations.MockK import mozilla.components.support.test.mock
import io.mockk.verify
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.mockito.Mockito.times
import org.mockito.Mockito.verify
class DefaultBrowsingModeManagerTest { class DefaultBrowsingModeManagerTest {
@MockK(relaxed = true) lateinit var callback: (BrowsingMode) -> Unit lateinit var manager: DefaultBrowsingModeManager
lateinit var manager: BrowsingModeManager
private val initMode = BrowsingMode.Normal private val initMode = BrowsingMode.Normal
@Before @Before
fun before() { fun before() {
MockKAnnotations.init(this) manager = DefaultBrowsingModeManager(initMode)
manager = DefaultBrowsingModeManager(initMode, callback)
} }
@Test @Test
fun `WHEN mode is updated THEN callback is invoked`() { 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 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
manager.mode = BrowsingMode.Normal manager.mode = BrowsingMode.Normal
verify(exactly = 5) { callback.invoke(any()) } verify(browsingModeListener, times(5)).onBrowsingModeChange(any())
} }
@Test @Test

View File

@ -8,6 +8,7 @@ import android.content.Context
import io.mockk.mockk import io.mockk.mockk
import mozilla.components.support.test.mock import mozilla.components.support.test.mock
import org.mockito.Mockito.`when` import org.mockito.Mockito.`when`
import org.mozilla.fenix.browser.browsingmode.DefaultBrowsingModeManager
import org.mozilla.fenix.utils.ClipboardHandler import org.mozilla.fenix.utils.ClipboardHandler
class TestComponents(private val context: Context) : Components(context) { 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 analytics by lazy { Analytics(context) }
override val browsingModeManager by lazy { DefaultBrowsingModeManager() }
override val clipboardHandler by lazy { ClipboardHandler(context) } override val clipboardHandler by lazy { ClipboardHandler(context) }
} }

View File

@ -8,6 +8,7 @@ import android.content.Intent
import androidx.core.net.toUri import androidx.core.net.toUri
import androidx.navigation.NavController import androidx.navigation.NavController
import io.mockk.Called import io.mockk.Called
import io.mockk.every
import io.mockk.mockk import io.mockk.mockk
import io.mockk.verify import io.mockk.verify
import org.junit.Assert.assertFalse import org.junit.Assert.assertFalse
@ -20,6 +21,8 @@ import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.NavGraphDirections import org.mozilla.fenix.NavGraphDirections
import org.mozilla.fenix.TestApplication import org.mozilla.fenix.TestApplication
import org.mozilla.fenix.browser.browsingmode.BrowsingMode 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.RobolectricTestRunner
import org.robolectric.annotation.Config import org.robolectric.annotation.Config
@ -114,9 +117,12 @@ class DeepLinkIntentProcessorTest {
@Test @Test
fun `process enable_private_browsing deep link`() { 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)) 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 { navController.navigate(NavGraphDirections.actionGlobalHomeFragment()) }
verify { out wasNot Called } verify { out wasNot Called }
} }

View File

@ -109,16 +109,16 @@ class BookmarkControllerTest {
@Test @Test
fun `handleBookmarkTapped should respect browsing mode`() { fun `handleBookmarkTapped should respect browsing mode`() {
// if in normal mode, should be in normal 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) 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 // 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) controller.handleBookmarkTapped(item)
assertEquals(BrowsingMode.Private, homeActivity.browsingModeManager.mode) assertEquals(BrowsingMode.Private, context.components.browsingModeManager.mode)
} }
@Test @Test
@ -204,7 +204,7 @@ class BookmarkControllerTest {
verifyOrder { verifyOrder {
invokePendingDeletion.invoke() invokePendingDeletion.invoke()
homeActivity.browsingModeManager.mode = BrowsingMode.Normal homeActivity.components.browsingModeManager.mode = BrowsingMode.Normal
homeActivity.openToBrowserAndLoad(item.url!!, true, BrowserDirection.FromBookmarks) homeActivity.openToBrowserAndLoad(item.url!!, true, BrowserDirection.FromBookmarks)
} }
} }
@ -215,7 +215,7 @@ class BookmarkControllerTest {
verifyOrder { verifyOrder {
invokePendingDeletion.invoke() invokePendingDeletion.invoke()
homeActivity.browsingModeManager.mode = BrowsingMode.Private homeActivity.components.browsingModeManager.mode = BrowsingMode.Private
homeActivity.openToBrowserAndLoad(item.url!!, true, BrowserDirection.FromBookmarks) homeActivity.openToBrowserAndLoad(item.url!!, true, BrowserDirection.FromBookmarks)
} }
} }

View File

@ -24,8 +24,10 @@ import org.mozilla.fenix.BrowserDirection
import org.mozilla.fenix.FenixApplication import org.mozilla.fenix.FenixApplication
import org.mozilla.fenix.HomeActivity import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.TestApplication import org.mozilla.fenix.TestApplication
import org.mozilla.fenix.browser.browsingmode.DefaultBrowsingModeManager
import org.mozilla.fenix.components.metrics.Event import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.components.searchengine.CustomSearchEngineStore.PREF_FILE_SEARCH_ENGINES 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.metrics
import org.mozilla.fenix.ext.searchEngineManager import org.mozilla.fenix.ext.searchEngineManager
import org.mozilla.fenix.ext.settings import org.mozilla.fenix.ext.settings
@ -108,6 +110,9 @@ class SearchInteractorTest {
val context: HomeActivity = mockk(relaxed = true) val context: HomeActivity = mockk(relaxed = true)
val settings = testContext.settings().apply { testContext.settings().clear() } val settings = testContext.settings().apply { testContext.settings().clear() }
val browsingModeManager: DefaultBrowsingModeManager = mockk(relaxed = true)
every { context.components.browsingModeManager } returns browsingModeManager
mockkObject(Settings) mockkObject(Settings)
every { Settings.getInstance(context = context) } returns settings every { Settings.getInstance(context = context) } returns settings