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) {
