diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java
index 1ea1460..0508e67 100644
--- a/src/com/android/browser/BaseUi.java
+++ b/src/com/android/browser/BaseUi.java
@@ -209,8 +209,7 @@
             mUiController.hideCustomView();
             return true;
         } else if ((mTabControl.getCurrentTab() != null) &&
-                (mTabControl.getCurrentTab().isTabFullScreen())) {
-            mTabControl.getCurrentTab().setTabFullscreen(false);
+                (mTabControl.getCurrentTab().exitFullscreen())) {
             return true;
         }
         return false;
@@ -811,6 +810,29 @@
         win.setAttributes(winParams);
     }
 
+    //make full screen bu showing/hiding topbar and system status bar
+    public void showFullscreen(boolean fullScreen) {
+        //Hide/show system ui bar as needed
+        if (!BrowserSettings.getInstance().useFullscreen())
+            setFullscreen(fullScreen);
+
+        //Hide/show topbar as needed
+        if (getWebView() != null) {
+            if (fullScreen) {
+                //hide topbar
+                getWebView().updateTopControls(true, false, false);
+            } else {
+                //show the topbar
+                getWebView().updateTopControls(false, true, true);
+                //enable for auto-hide
+                if (!mTitleBar.isFixed())
+                    getWebView().updateTopControls(true, true, false);
+            }
+        }
+    }
+
+
+
     public void translateTitleBar(float topControlsOffsetYPix) {
         if (mTitleBar != null && !mInActionMode) {
             mTitleBar.bringToFront();
diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index e8ecd93..2a3a171 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -374,6 +374,7 @@
         // origin policy for file access
         settings.setAllowUniversalAccessFromFileURLs(false);
         settings.setAllowFileAccessFromFileURLs(false);
+        settings.setFullscreenSupported(true);
 
         //if (!(settings instanceof WebSettingsClassic)) return;
         /*
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index ab59853..f948203 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -61,7 +61,6 @@
 import android.widget.FrameLayout;
 import android.widget.Button;
 
-import com.android.browser.R;
 import com.android.browser.TabControl.OnThumbnailUpdatedListener;
 import com.android.browser.homepages.HomeProvider;
 import com.android.browser.mynavigation.MyNavigationUtil;
@@ -732,20 +731,25 @@
 
     protected void setTabFullscreen(boolean fullScreen) {
         Controller controller = (Controller)mWebViewController;
-
-        if (!mSettings.useFullscreen())
-            controller.getUi().setFullscreen(fullScreen);
-
-        if (getWebView() != null) {
-            if (fullScreen)
-                getWebView().updateTopControls(true, false, true);
-            else
-                getWebView().updateTopControls(true, true, true);
-        }
-
+        controller.getUi().showFullscreen(fullScreen);
         mFullScreen = fullScreen;
     }
 
+    public boolean exitFullscreen() {
+        if (mFullScreen) {
+            Controller controller = (Controller)mWebViewController;
+            controller.getUi().showFullscreen(false);
+            if (getWebView() != null)
+                getWebView().exitFullscreen();
+            mFullScreen = false;
+            return true;
+        }
+        return false;
+    }
+
+
+
+
     // -------------------------------------------------------------------------
     // WebChromeClient implementation for the main WebView
     // -------------------------------------------------------------------------
diff --git a/src/com/android/browser/UI.java b/src/com/android/browser/UI.java
index a374203..5aefd0b 100644
--- a/src/com/android/browser/UI.java
+++ b/src/com/android/browser/UI.java
@@ -137,6 +137,7 @@
     boolean dispatchKey(int code, KeyEvent event);
 
     void setFullscreen(boolean enabled);
+    void showFullscreen(boolean show);
 
     void translateTitleBar(float topControlsOffsetYPix);
 
