42 lines
1.5 KiB
Kotlin
42 lines
1.5 KiB
Kotlin
/* 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/. */
|
|
|
|
package org.mozilla.fenix.ext
|
|
|
|
import android.app.Activity
|
|
import android.view.View
|
|
import android.view.WindowManager
|
|
import org.mozilla.fenix.utils.Settings
|
|
|
|
/**
|
|
* Attempts to call immersive mode using the View to hide the status bar and navigation buttons.
|
|
*
|
|
* We don't use the equivalent function from Android Components because the stable flag messes
|
|
* with the toolbar. See #1998 and #3272.
|
|
*/
|
|
fun Activity.enterToImmersiveMode() {
|
|
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
|
|
window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
|
|
or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
|
|
or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
|
|
or View.SYSTEM_UI_FLAG_FULLSCREEN
|
|
or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY)
|
|
}
|
|
|
|
/**
|
|
* Prevents or allows screenshots from being taken in private mode based on the user preferences.
|
|
*
|
|
* The default setting is set to true (screenshots are allowed to be taken in private mode), as
|
|
* described in #2768
|
|
*/
|
|
fun Activity.checkAndUpdateScreenshotPermission(settings: Settings) {
|
|
if (!settings.allowScreenshotsInPrivateMode &&
|
|
settings.lastKnownMode.isPrivate
|
|
) {
|
|
window.addFlags(WindowManager.LayoutParams.FLAG_SECURE)
|
|
} else {
|
|
window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE)
|
|
}
|
|
}
|