Fix fullscreen mode

    Bug: 5494143

    Set fullscreen flags on window
    hide system UI

Change-Id: I38714fd3973d2ee0baca51eb89f0ca640cbab225
diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java
index 26f90b6..ee308f9 100644
--- a/src/com/android/browser/BaseUi.java
+++ b/src/com/android/browser/BaseUi.java
@@ -42,6 +42,7 @@
 import android.view.View.OnClickListener;
 import android.view.ViewGroup;
 import android.view.ViewGroup.LayoutParams;
+import android.view.Window;
 import android.view.WindowManager;
 import android.view.inputmethod.InputMethodManager;
 import android.webkit.WebChromeClient;
@@ -523,6 +524,7 @@
         mFullscreenContainer.addView(view, COVER_SCREEN_PARAMS);
         decor.addView(mFullscreenContainer, COVER_SCREEN_PARAMS);
         mCustomView = view;
+        setFullscreen(true);
         mCustomViewCallback = callback;
         mActivity.setRequestedOrientation(requestedOrientation);
     }
@@ -531,6 +533,7 @@
     public void onHideCustomView() {
         if (mCustomView == null)
             return;
+        setFullscreen(false);
         FrameLayout decor = (FrameLayout) mActivity.getWindow().getDecorView();
         decor.removeView(mFullscreenContainer);
         mFullscreenContainer = null;
@@ -749,14 +752,25 @@
     }
 
     public void setFullscreen(boolean enabled) {
+        Window win = mActivity.getWindow();
+        WindowManager.LayoutParams winParams = win.getAttributes();
+        final int bits = WindowManager.LayoutParams.FLAG_FULLSCREEN;
         if (enabled) {
-            mActivity.getWindow().setFlags(
-                    WindowManager.LayoutParams.FLAG_FULLSCREEN,
-                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
+            winParams.flags |=  bits;
+            if (mCustomView != null) {
+                mCustomView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
+            } else {
+                mContentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
+            }
         } else {
-            mActivity.getWindow().clearFlags(
-                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
+            winParams.flags &= ~bits;
+            if (mCustomView != null) {
+                mCustomView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
+            } else {
+                mContentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
+            }
         }
+        win.setAttributes(winParams);
     }
 
     public Drawable getFaviconDrawable(Bitmap icon) {