Commit 2c01022c authored by Simon Chae's avatar Simon Chae Committed by Jeff Boek
Browse files

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

parent 5e4ef202
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -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
                },
                },
+19 −10
Original line number Original line Diff line number Diff line
@@ -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)
    }
    }
+2 −2
Original line number Original line Diff line number Diff line
@@ -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,
+16 −3
Original line number Original line Diff line number Diff line
@@ -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
        }
        }
}
}
+3 −0
Original line number Original line Diff line number Diff line
@@ -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) }
Loading