Add Full Immersive Mode support for API 19+
Added immersive mode to the browser. Previous
implementation was from 2011 and would only
hide the status bar. Now we hide the entire
System UI where supported (api 19+).
Change-Id: I5b3c6079c38bd2035c3bf9ce60887ff85ccfa2a2
diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java
index 64e7416..3be4674 100644
--- a/src/com/android/browser/BaseUi.java
+++ b/src/com/android/browser/BaseUi.java
@@ -28,6 +28,7 @@
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.graphics.drawable.PaintDrawable;
+import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
@@ -108,6 +109,8 @@
// the video progress view
private View mVideoProgressView;
+ private final View mDecorView;
+
private boolean mActivityPaused;
protected TitleBar mTitleBar;
private NavigationBarBase mNavigationBar;
@@ -139,8 +142,22 @@
mTitleBar.setProgress(100);
mNavigationBar = mTitleBar.getNavigationBar();
mUrlBarAutoShowManager = new UrlBarAutoShowManager(this);
+
+ // install system ui visibility listeners
+ mDecorView = mActivity.getWindow().getDecorView();
+ mDecorView.setOnSystemUiVisibilityChangeListener(mSystemUiVisibilityChangeListener);
}
+ private View.OnSystemUiVisibilityChangeListener mSystemUiVisibilityChangeListener =
+ new View.OnSystemUiVisibilityChangeListener() {
+ @Override
+ public void onSystemUiVisibilityChange(int visFlags) {
+ final boolean lostFullscreen = (visFlags & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0;
+ if (lostFullscreen)
+ setFullscreen(BrowserSettings.getInstance().useFullscreen());
+ }
+ };
+
private void cancelStopToast() {
if (mStopToast != null) {
mStopToast.cancel();
@@ -186,6 +203,7 @@
mActivityPaused = false;
// check if we exited without setting active tab
// b: 5188145
+ setFullscreen(BrowserSettings.getInstance().useFullscreen());
final Tab ct = mTabControl.getCurrentTab();
if (ct != null) {
setActiveTab(ct);
@@ -807,9 +825,12 @@
if (mCustomView != null) {
mCustomView.setSystemUiVisibility(enabled ?
fullscreenImmersiveSetting : View.SYSTEM_UI_FLAG_VISIBLE);
+ } else if (Build.VERSION.SDK_INT >= 19) {
+ mContentView.setSystemUiVisibility(enabled ?
+ fullscreenImmersiveSetting : View.SYSTEM_UI_FLAG_VISIBLE);
} else {
mContentView.setSystemUiVisibility(enabled ?
- View.SYSTEM_UI_FLAG_LOW_PROFILE : View.SYSTEM_UI_FLAG_VISIBLE);
+ View.SYSTEM_UI_FLAG_LOW_PROFILE : View.SYSTEM_UI_FLAG_VISIBLE);
}
if (enabled)
winParams.flags |= bits;