Reverts all BrowsingModeManager changes
parent
0d398f7d44
commit
541bcf072a
|
@ -293,7 +293,7 @@ open class FenixApplication : LocaleAwareApplication() {
|
||||||
components.core.store,
|
components.core.store,
|
||||||
onNewTabOverride = {
|
onNewTabOverride = {
|
||||||
_, engineSession, url ->
|
_, engineSession, url ->
|
||||||
val session = Session(url, components.browsingModeManager.mode.isPrivate)
|
val session = Session(url)
|
||||||
components.core.sessionManager.add(session, true, engineSession)
|
components.core.sessionManager.add(session, true, engineSession)
|
||||||
session.id
|
session.id
|
||||||
},
|
},
|
||||||
|
|
|
@ -41,7 +41,8 @@ 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.BrowsingModeListener
|
import org.mozilla.fenix.browser.browsingmode.BrowsingModeManager
|
||||||
|
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 +75,7 @@ open class HomeActivity : LocaleAwareAppCompatActivity() {
|
||||||
|
|
||||||
private var webExtScope: CoroutineScope? = null
|
private var webExtScope: CoroutineScope? = null
|
||||||
lateinit var themeManager: ThemeManager
|
lateinit var themeManager: ThemeManager
|
||||||
private val browsingModeManager get() = components.browsingModeManager
|
lateinit var browsingModeManager: BrowsingModeManager
|
||||||
|
|
||||||
private var sessionObserver: SessionManager.Observer? = null
|
private var sessionObserver: SessionManager.Observer? = null
|
||||||
|
|
||||||
|
@ -99,12 +100,6 @@ 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
|
||||||
|
@ -167,16 +162,6 @@ 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(browsingModeListener)
|
|
||||||
}
|
|
||||||
|
|
||||||
final override fun onPause() {
|
final override fun onPause() {
|
||||||
super.onPause()
|
super.onPause()
|
||||||
|
|
||||||
|
@ -259,7 +244,7 @@ open class HomeActivity : LocaleAwareAppCompatActivity() {
|
||||||
|
|
||||||
private fun setupThemeAndBrowsingMode(mode: BrowsingMode) {
|
private fun setupThemeAndBrowsingMode(mode: BrowsingMode) {
|
||||||
settings().lastKnownMode = mode
|
settings().lastKnownMode = mode
|
||||||
browsingModeManager.mode = mode
|
browsingModeManager = createBrowsingModeManager(mode)
|
||||||
themeManager = createThemeManager()
|
themeManager = createThemeManager()
|
||||||
themeManager.setActivityTheme(this)
|
themeManager.setActivityTheme(this)
|
||||||
themeManager.applyStatusBarTheme(this)
|
themeManager.applyStatusBarTheme(this)
|
||||||
|
@ -394,6 +379,12 @@ open class HomeActivity : LocaleAwareAppCompatActivity() {
|
||||||
browsingModeManager.mode = sessionMode
|
browsingModeManager.mode = sessionMode
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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)
|
||||||
}
|
}
|
||||||
|
|
|
@ -173,10 +173,10 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session
|
||||||
navController = findNavController(),
|
navController = findNavController(),
|
||||||
readerModeController = DefaultReaderModeController(
|
readerModeController = DefaultReaderModeController(
|
||||||
readerViewFeature,
|
readerViewFeature,
|
||||||
requireComponents.browsingModeManager.mode.isPrivate,
|
(activity as HomeActivity).browsingModeManager.mode.isPrivate,
|
||||||
view.readerViewControlsBar
|
view.readerViewControlsBar
|
||||||
),
|
),
|
||||||
browsingModeManager = requireComponents.browsingModeManager,
|
browsingModeManager = (activity as HomeActivity).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,
|
||||||
|
|
|
@ -31,32 +31,19 @@ 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 = BrowsingMode.Normal
|
private var _mode: BrowsingMode,
|
||||||
|
private val modeDidChange: (BrowsingMode) -> Unit
|
||||||
) : BrowsingModeManager {
|
) : BrowsingModeManager {
|
||||||
|
|
||||||
private val browsingModeListeners = mutableSetOf<BrowsingModeListener>()
|
|
||||||
|
|
||||||
fun registerBrowsingModeListener(browsingModeListener: BrowsingModeListener) {
|
|
||||||
browsingModeListeners.add(browsingModeListener)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun unregisterBrowsingModeListener(browsingModeListener: BrowsingModeListener) {
|
|
||||||
browsingModeListeners.remove(browsingModeListener)
|
|
||||||
}
|
|
||||||
|
|
||||||
override var mode: BrowsingMode
|
override var mode: BrowsingMode
|
||||||
get() = _mode
|
get() = _mode
|
||||||
set(value) {
|
set(value) {
|
||||||
_mode = value
|
_mode = value
|
||||||
browsingModeListeners.forEach { it.onBrowsingModeChange(value) }
|
modeDidChange(value)
|
||||||
Settings.instance?.lastKnownMode = value
|
Settings.instance?.lastKnownMode = value
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,6 @@ 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
|
||||||
|
@ -72,8 +71,6 @@ 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) }
|
||||||
|
|
|
@ -23,9 +23,11 @@ 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.Config
|
import org.mozilla.fenix.Config
|
||||||
|
import org.mozilla.fenix.HomeActivity
|
||||||
import org.mozilla.fenix.R
|
import org.mozilla.fenix.R
|
||||||
import org.mozilla.fenix.ReleaseChannel
|
import org.mozilla.fenix.ReleaseChannel
|
||||||
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 +132,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 =
|
val shouldShowSaveToCollection = (context.asActivity() as? HomeActivity)
|
||||||
context.components.browsingModeManager.mode == BrowsingMode.Normal
|
?.browsingModeManager?.mode == BrowsingMode.Normal
|
||||||
val shouldDeleteDataOnQuit = Settings.getInstance(context)
|
val shouldDeleteDataOnQuit = Settings.getInstance(context)
|
||||||
.shouldDeleteBrowsingDataOnQuit
|
.shouldDeleteBrowsingDataOnQuit
|
||||||
val shouldShowWebcompatReporter = Config.channel !in setOf(
|
val shouldShowWebcompatReporter = Config.channel !in setOf(
|
||||||
|
|
|
@ -27,6 +27,7 @@ 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
|
||||||
|
@ -68,7 +69,7 @@ class ExternalAppBrowserFragment : BaseBrowserFragment(), UserInteractionHandler
|
||||||
activity = activity,
|
activity = activity,
|
||||||
engineLayout = view.swipeRefresh,
|
engineLayout = view.swipeRefresh,
|
||||||
onItemTapped = { browserInteractor.onBrowserToolbarMenuItemTapped(it) },
|
onItemTapped = { browserInteractor.onBrowserToolbarMenuItemTapped(it) },
|
||||||
isPrivate = requireComponents.browsingModeManager.mode.isPrivate,
|
isPrivate = (activity as HomeActivity).browsingModeManager.mode.isPrivate,
|
||||||
shouldReverseItems = !activity.settings().shouldUseBottomToolbar
|
shouldReverseItems = !activity.settings().shouldUseBottomToolbar
|
||||||
),
|
),
|
||||||
owner = this,
|
owner = this,
|
||||||
|
|
|
@ -105,7 +105,7 @@ class HomeFragment : Fragment() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private val browsingModeManager get() = requireComponents.browsingModeManager
|
private val browsingModeManager get() = (activity as HomeActivity).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) {
|
||||||
|
|
|
@ -15,7 +15,6 @@ 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.
|
||||||
|
@ -57,7 +56,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.components.browsingModeManager.mode = BrowsingMode.Private
|
activity.browsingModeManager.mode = BrowsingMode.Private
|
||||||
}
|
}
|
||||||
"make_default_browser" -> {
|
"make_default_browser" -> {
|
||||||
if (SDK_INT >= Build.VERSION_CODES.N) {
|
if (SDK_INT >= Build.VERSION_CODES.N) {
|
||||||
|
|
|
@ -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() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
requireComponents.browsingModeManager.mode = BrowsingMode.fromBoolean(private)
|
(activity as HomeActivity).browsingModeManager.mode = BrowsingMode.fromBoolean(private)
|
||||||
hideToolbar()
|
hideToolbar()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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, context.components.browsingModeManager.mode)
|
openInNewTab(item.url!!, true, BrowserDirection.FromBookmarks, activity.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) {
|
||||||
components.browsingModeManager.mode = mode
|
browsingModeManager.mode = mode
|
||||||
openToBrowserAndLoad(searchTermOrURL, newTab, from)
|
openToBrowserAndLoad(searchTermOrURL, newTab, from)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -169,7 +169,7 @@ class HistoryFragment : LibraryPageFragment<HistoryItem>(), UserInteractionHandl
|
||||||
}
|
}
|
||||||
|
|
||||||
(activity as HomeActivity).apply {
|
(activity as HomeActivity).apply {
|
||||||
components.browsingModeManager.mode = BrowsingMode.Private
|
browsingModeManager.mode = BrowsingMode.Private
|
||||||
supportActionBar?.hide()
|
supportActionBar?.hide()
|
||||||
}
|
}
|
||||||
nav(
|
nav(
|
||||||
|
|
|
@ -87,7 +87,7 @@ class DefaultSearchController(
|
||||||
store.dispatch(
|
store.dispatch(
|
||||||
SearchFragmentAction.AllowSearchSuggestionsInPrivateModePrompt(
|
SearchFragmentAction.AllowSearchSuggestionsInPrivateModePrompt(
|
||||||
text.isNotEmpty() &&
|
text.isNotEmpty() &&
|
||||||
context.components.browsingModeManager.mode.isPrivate &&
|
(context as HomeActivity).browsingModeManager.mode.isPrivate &&
|
||||||
!context.settings().shouldShowSearchSuggestionsInPrivate &&
|
!context.settings().shouldShowSearchSuggestionsInPrivate &&
|
||||||
!context.settings().showSearchSuggestionsInPrivateOnboardingFinished
|
!context.settings().showSearchSuggestionsInPrivateOnboardingFinished
|
||||||
)
|
)
|
||||||
|
|
|
@ -85,7 +85,7 @@ class SearchFragment : Fragment(), UserInteractionHandler {
|
||||||
)
|
)
|
||||||
|
|
||||||
val showSearchSuggestions =
|
val showSearchSuggestions =
|
||||||
if (requireComponents.browsingModeManager.mode.isPrivate) {
|
if ((activity as HomeActivity).browsingModeManager.mode.isPrivate) {
|
||||||
requireContext().settings().shouldShowSearchSuggestions &&
|
requireContext().settings().shouldShowSearchSuggestions &&
|
||||||
requireContext().settings().shouldShowSearchSuggestionsInPrivate
|
requireContext().settings().shouldShowSearchSuggestionsInPrivate
|
||||||
} else {
|
} else {
|
||||||
|
@ -127,7 +127,7 @@ class SearchFragment : Fragment(), UserInteractionHandler {
|
||||||
view.toolbar_component_wrapper,
|
view.toolbar_component_wrapper,
|
||||||
searchInteractor,
|
searchInteractor,
|
||||||
historyStorageProvider(),
|
historyStorageProvider(),
|
||||||
requireComponents.browsingModeManager.mode.isPrivate
|
(activity as HomeActivity).browsingModeManager.mode.isPrivate
|
||||||
)
|
)
|
||||||
|
|
||||||
val urlView = toolbarView.view
|
val urlView = toolbarView.view
|
||||||
|
|
|
@ -28,7 +28,9 @@ 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
|
||||||
|
@ -303,7 +305,10 @@ class AwesomeBarView(
|
||||||
return providersToRemove
|
return providersToRemove
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun isBrowsingModePrivate(): Boolean = container.context.components.browsingModeManager.mode.isPrivate
|
private fun isBrowsingModePrivate(): Boolean {
|
||||||
|
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) {
|
||||||
|
|
|
@ -4,42 +4,40 @@
|
||||||
|
|
||||||
package org.mozilla.fenix.browser.browsingmode
|
package org.mozilla.fenix.browser.browsingmode
|
||||||
|
|
||||||
import mozilla.components.support.test.any
|
import io.mockk.MockKAnnotations
|
||||||
import mozilla.components.support.test.mock
|
import io.mockk.impl.annotations.MockK
|
||||||
|
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 {
|
||||||
|
|
||||||
lateinit var manager: DefaultBrowsingModeManager
|
@MockK(relaxed = true) lateinit var callback: (BrowsingMode) -> Unit
|
||||||
|
lateinit var manager: BrowsingModeManager
|
||||||
|
|
||||||
private val initMode = BrowsingMode.Normal
|
private val initMode = BrowsingMode.Normal
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun before() {
|
fun before() {
|
||||||
manager = DefaultBrowsingModeManager(initMode)
|
MockKAnnotations.init(this)
|
||||||
|
manager = DefaultBrowsingModeManager(initMode, callback)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `WHEN mode is updated THEN callback is invoked`() {
|
fun `WHEN mode is updated THEN callback is invoked`() {
|
||||||
val browsingModeListener: BrowsingModeListener = mock()
|
verify(exactly = 0) { callback.invoke(any()) }
|
||||||
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(browsingModeListener, times(3)).onBrowsingModeChange(any())
|
verify(exactly = 3) { callback.invoke(any()) }
|
||||||
|
|
||||||
manager.mode = BrowsingMode.Normal
|
manager.mode = BrowsingMode.Normal
|
||||||
manager.mode = BrowsingMode.Normal
|
manager.mode = BrowsingMode.Normal
|
||||||
|
|
||||||
verify(browsingModeListener, times(5)).onBrowsingModeChange(any())
|
verify(exactly = 5) { callback.invoke(any()) }
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
@ -8,7 +8,6 @@ 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) {
|
||||||
|
@ -39,7 +38,5 @@ 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) }
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,6 @@ 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
|
||||||
|
@ -21,8 +20,6 @@ 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
|
||||||
|
|
||||||
|
@ -117,12 +114,9 @@ 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 { browsingModeManager.mode = BrowsingMode.Private }
|
verify { activity.browsingModeManager.mode = BrowsingMode.Private }
|
||||||
verify { navController.navigate(NavGraphDirections.actionGlobalHomeFragment()) }
|
verify { navController.navigate(NavGraphDirections.actionGlobalHomeFragment()) }
|
||||||
verify { out wasNot Called }
|
verify { out wasNot Called }
|
||||||
}
|
}
|
||||||
|
|
|
@ -114,16 +114,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 { context.components.browsingModeManager.mode } returns BrowsingMode.Normal
|
every { homeActivity.browsingModeManager.mode } returns BrowsingMode.Normal
|
||||||
|
|
||||||
controller.handleBookmarkTapped(item)
|
controller.handleBookmarkTapped(item)
|
||||||
assertEquals(BrowsingMode.Normal, context.components.browsingModeManager.mode)
|
assertEquals(BrowsingMode.Normal, homeActivity.browsingModeManager.mode)
|
||||||
|
|
||||||
// if in private mode, should be in private mode
|
// if in private mode, should be in private mode
|
||||||
every { context.components.browsingModeManager.mode } returns BrowsingMode.Private
|
every { homeActivity.browsingModeManager.mode } returns BrowsingMode.Private
|
||||||
|
|
||||||
controller.handleBookmarkTapped(item)
|
controller.handleBookmarkTapped(item)
|
||||||
assertEquals(BrowsingMode.Private, context.components.browsingModeManager.mode)
|
assertEquals(BrowsingMode.Private, homeActivity.browsingModeManager.mode)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -209,7 +209,7 @@ class BookmarkControllerTest {
|
||||||
|
|
||||||
verifyOrder {
|
verifyOrder {
|
||||||
invokePendingDeletion.invoke()
|
invokePendingDeletion.invoke()
|
||||||
browsingModeManager.mode = BrowsingMode.Normal
|
homeActivity.browsingModeManager.mode = BrowsingMode.Normal
|
||||||
homeActivity.openToBrowserAndLoad(item.url!!, true, BrowserDirection.FromBookmarks)
|
homeActivity.openToBrowserAndLoad(item.url!!, true, BrowserDirection.FromBookmarks)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -220,7 +220,7 @@ class BookmarkControllerTest {
|
||||||
|
|
||||||
verifyOrder {
|
verifyOrder {
|
||||||
invokePendingDeletion.invoke()
|
invokePendingDeletion.invoke()
|
||||||
browsingModeManager.mode = BrowsingMode.Private
|
homeActivity.browsingModeManager.mode = BrowsingMode.Private
|
||||||
homeActivity.openToBrowserAndLoad(item.url!!, true, BrowserDirection.FromBookmarks)
|
homeActivity.openToBrowserAndLoad(item.url!!, true, BrowserDirection.FromBookmarks)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,10 +24,8 @@ 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
|
||||||
|
@ -109,9 +107,6 @@ 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
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue