1
0
Fork 0
fenix/app/src/main/java/org/mozilla/fenix/browser/browsingmode/BrowsingModeManager.kt

63 lines
1.6 KiB
Kotlin
Raw Normal View History

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
2019-08-21 17:33:59 +02:00
package org.mozilla.fenix.browser.browsingmode
import org.mozilla.fenix.utils.Settings
2019-08-07 22:02:08 +02:00
/**
* Enum that represents whether or not private browsing is active.
*/
enum class BrowsingMode {
Normal, Private;
/**
* Returns true if the [BrowsingMode] is [Private]
*/
val isPrivate get() = this == Private
companion object {
/**
* Convert a boolean into a [BrowsingMode].
* True corresponds to [Private] and false corresponds to [Normal].
*/
fun fromBoolean(isPrivate: Boolean) = if (isPrivate) Private else Normal
}
2019-05-31 00:49:58 +02:00
}
2019-08-07 22:02:08 +02:00
interface BrowsingModeManager {
var mode: BrowsingMode
}
2019-05-31 00:49:58 +02:00
interface BrowsingModeListener {
fun onBrowsingModeChange(newMode: BrowsingMode)
}
/**
* Wraps a [BrowsingMode] and executes a callback whenever [mode] is updated.
*/
class DefaultBrowsingModeManager(
private var _mode: BrowsingMode = BrowsingMode.Normal
) : BrowsingModeManager {
private var _browsingModeListener: BrowsingModeListener? = null
fun registerBrowsingModeListener(browsingModeListener: BrowsingModeListener) {
_browsingModeListener = browsingModeListener
}
fun unregisterBrowsingModeListener() {
_browsingModeListener = null
}
2019-08-07 22:02:08 +02:00
override var mode: BrowsingMode
get() = _mode
set(value) {
_mode = value
_browsingModeListener?.onBrowsingModeChange(value)
Settings.instance?.lastKnownMode = value
}
2019-05-31 00:49:58 +02:00
}