Disable immersive mode on keyboard popup

Keyboard was hiding the text box in case the browser
was in immersive mode. This change will prevent that
from happening.

Change-Id: I9f21fd1043da43071cf752657196c5bc432641f1
diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java
index c24cc48..2d7c0b3 100644
--- a/src/com/android/browser/BaseUi.java
+++ b/src/com/android/browser/BaseUi.java
@@ -108,6 +108,7 @@
     protected TitleBar mTitleBar;
     private NavigationBarBase mNavigationBar;
     private boolean mBlockFocusAnimations;
+    private boolean mFullscreenModeLocked;
 
     private EdgeSwipeController mEdgeSwipeController;
     private EdgeSwipeSettings mEdgeSwipeSettings;
@@ -138,6 +139,7 @@
         // install system ui visibility listeners
         mDecorView = mActivity.getWindow().getDecorView();
         mDecorView.setOnSystemUiVisibilityChangeListener(mSystemUiVisibilityChangeListener);
+        mFullscreenModeLocked = false;
     }
 
     private View.OnSystemUiVisibilityChangeListener mSystemUiVisibilityChangeListener =
@@ -844,7 +846,16 @@
         }
     }
 
+    public void forceDisableFullscreenMode(boolean disabled) {
+        mFullscreenModeLocked = false;
+        setFullscreen(!disabled);
+        mFullscreenModeLocked = disabled;
+    }
+
     public void setFullscreen(boolean enabled) {
+        if (mFullscreenModeLocked)
+            return;
+
         Window win = mActivity.getWindow();
         WindowManager.LayoutParams winParams = win.getAttributes();
         final int bits = WindowManager.LayoutParams.FLAG_FULLSCREEN;
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index 8f4db51..1bcf4a9 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -321,7 +321,12 @@
             mCurrentState = new PageState(mContext,
                     view.isPrivateBrowsingEnabled(), url, favicon);
             mLoadStartTime = SystemClock.uptimeMillis();
-
+            // Need re-enable FullScreenMode on Page navigation if needed
+            if (BrowserSettings.getInstance().useFullscreen()){
+                Controller controller = (Controller) mWebViewController;
+                BaseUi ui = (BaseUi) controller.getUi();
+                ui.forceDisableFullscreenMode(false);
+            }
             // If we start a touch icon load and then load a new page, we don't
             // want to cancel the current touch icon loader. But, we do want to
             // create a new one when the touch icon url is known.
@@ -668,6 +673,15 @@
                 }
             }
         }
+
+        @Override
+        public void onKeyboardStateChange(boolean popup) {
+            if (BrowserSettings.getInstance().useFullscreen()) {
+                Controller controller = (Controller) mWebViewController;
+                BaseUi ui = (BaseUi) controller.getUi();
+                ui.forceDisableFullscreenMode(popup);
+            }
+        }
     };
 
     private void syncCurrentState(WebView view, String url) {