Loading app/src/main/java/org/mozilla/fenix/FenixApplication.kt +1 −1 Original line number Original line Diff line number Diff line Loading @@ -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 }, }, Loading app/src/main/java/org/mozilla/fenix/HomeActivity.kt +19 −10 Original line number Original line Diff line number Diff line Loading @@ -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 Loading Loading @@ -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 Loading @@ -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 Loading Loading @@ -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() Loading Loading @@ -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) Loading Loading @@ -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) } } Loading app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt +2 −2 Original line number Original line Diff line number Diff line Loading @@ -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, Loading app/src/main/java/org/mozilla/fenix/browser/browsingmode/BrowsingModeManager.kt +16 −3 Original line number Original line Diff line number Diff line Loading @@ -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 } } } } app/src/main/java/org/mozilla/fenix/components/Components.kt +3 −0 Original line number Original line Diff line number Diff line Loading @@ -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 Loading Loading @@ -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) } Loading Loading
app/src/main/java/org/mozilla/fenix/FenixApplication.kt +1 −1 Original line number Original line Diff line number Diff line Loading @@ -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 }, }, Loading
app/src/main/java/org/mozilla/fenix/HomeActivity.kt +19 −10 Original line number Original line Diff line number Diff line Loading @@ -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 Loading Loading @@ -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 Loading @@ -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 Loading Loading @@ -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() Loading Loading @@ -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) Loading Loading @@ -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) } } Loading
app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt +2 −2 Original line number Original line Diff line number Diff line Loading @@ -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, Loading
app/src/main/java/org/mozilla/fenix/browser/browsingmode/BrowsingModeManager.kt +16 −3 Original line number Original line Diff line number Diff line Loading @@ -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 } } } }
app/src/main/java/org/mozilla/fenix/components/Components.kt +3 −0 Original line number Original line Diff line number Diff line Loading @@ -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 Loading Loading @@ -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) } Loading