For 4780: update HomeActivity to maintain private mode in memory
As an added bonus, this makes the temporal coupling between `setPrivateModeIfNecessary` and `setupThemeAndBrowsingMode` explicit. They previously would have broken if called in reverse order, now it will fail to compile.
This commit is contained in:
parent
10f334303d
commit
d1d20b544e
|
@ -85,10 +85,10 @@ open class HomeActivity : AppCompatActivity() {
|
|||
final override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
setPrivateModeIfNecessary()
|
||||
val mode = setPrivateModeIfNecessary()
|
||||
|
||||
components.publicSuffixList.prefetch()
|
||||
setupThemeAndBrowsingMode()
|
||||
setupThemeAndBrowsingMode(mode)
|
||||
|
||||
setContentView(R.layout.activity_home)
|
||||
|
||||
|
@ -191,18 +191,20 @@ open class HomeActivity : AppCompatActivity() {
|
|||
* External sources such as 3rd party links and shortcuts use this function to enter
|
||||
* private mode directly before the content view is created.
|
||||
*/
|
||||
private fun setPrivateModeIfNecessary() {
|
||||
private fun setPrivateModeIfNecessary(): BrowsingMode {
|
||||
intent?.toSafeIntent()?.let {
|
||||
if (it.hasExtra(PRIVATE_BROWSING_MODE)) {
|
||||
val startPrivateMode = it.getBooleanExtra(PRIVATE_BROWSING_MODE, false)
|
||||
settings().usePrivateMode = startPrivateMode
|
||||
intent.removeExtra(PRIVATE_BROWSING_MODE)
|
||||
|
||||
return BrowsingMode.fromBoolean(isPrivate = startPrivateMode)
|
||||
}
|
||||
}
|
||||
return BrowsingMode.Normal
|
||||
}
|
||||
|
||||
private fun setupThemeAndBrowsingMode() {
|
||||
browsingModeManager = createBrowsingModeManager()
|
||||
private fun setupThemeAndBrowsingMode(mode: BrowsingMode) {
|
||||
browsingModeManager = createBrowsingModeManager(mode)
|
||||
themeManager = createThemeManager()
|
||||
themeManager.setActivityTheme(this)
|
||||
themeManager.applyStatusBarTheme(this)
|
||||
|
@ -317,9 +319,9 @@ open class HomeActivity : AppCompatActivity() {
|
|||
}
|
||||
}
|
||||
|
||||
protected open fun createBrowsingModeManager(): BrowsingModeManager {
|
||||
return DefaultBrowsingModeManager(settings()) { mode ->
|
||||
themeManager.currentTheme = mode
|
||||
protected open fun createBrowsingModeManager(initialMode: BrowsingMode): BrowsingModeManager {
|
||||
return DefaultBrowsingModeManager(initialMode) { newMode ->
|
||||
themeManager.currentTheme = newMode
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -31,14 +31,18 @@ interface BrowsingModeManager {
|
|||
var mode: BrowsingMode
|
||||
}
|
||||
|
||||
/**
|
||||
* Wraps a [BrowsingMode] and executes a callback whenever [mode] is updated.
|
||||
*/
|
||||
class DefaultBrowsingModeManager(
|
||||
private val settings: Settings,
|
||||
private var _mode: BrowsingMode,
|
||||
private val modeDidChange: (BrowsingMode) -> Unit
|
||||
) : BrowsingModeManager {
|
||||
|
||||
override var mode: BrowsingMode
|
||||
get() = BrowsingMode.fromBoolean(settings.usePrivateMode)
|
||||
get() = _mode
|
||||
set(value) {
|
||||
settings.usePrivateMode = value.isPrivate
|
||||
_mode = value
|
||||
modeDidChange(value)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,6 +11,7 @@ import mozilla.components.support.utils.SafeIntent
|
|||
import org.mozilla.fenix.BrowserDirection
|
||||
import org.mozilla.fenix.HomeActivity
|
||||
import org.mozilla.fenix.NavGraphDirections
|
||||
import org.mozilla.fenix.browser.browsingmode.BrowsingMode
|
||||
import org.mozilla.fenix.browser.browsingmode.CustomTabBrowsingModeManager
|
||||
import org.mozilla.fenix.components.metrics.Event
|
||||
import org.mozilla.fenix.ext.components
|
||||
|
@ -42,7 +43,7 @@ open class ExternalAppBrowserActivity : HomeActivity() {
|
|||
)
|
||||
}
|
||||
|
||||
final override fun createBrowsingModeManager() =
|
||||
final override fun createBrowsingModeManager(initialMode: BrowsingMode) =
|
||||
CustomTabBrowsingModeManager()
|
||||
|
||||
final override fun createThemeManager() = CustomTabThemeManager()
|
||||
|
|
Loading…
Reference in New Issue
Block a user