diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java
index cf75809..fbaaad1 100644
--- a/src/com/android/browser/BaseUi.java
+++ b/src/com/android/browser/BaseUi.java
@@ -816,13 +816,13 @@
         if (getWebView() != null) {
             if (fullScreen) {
                 //hide topbar
-                getWebView().updateTopControls(true, false, false);
+                mTitleBar.hideTopControls(true);
             } else {
                 //show the topbar
-                getWebView().updateTopControls(false, true, false);
+                mTitleBar.showTopControls(true);
                 //enable for auto-hide
                 if (!mTitleBar.isFixed())
-                    getWebView().updateTopControls(true, true, false);
+                    mTitleBar.enableTopControls(true);
             }
         }
     }
diff --git a/src/com/android/browser/TitleBar.java b/src/com/android/browser/TitleBar.java
index 11a3128..357da3c 100644
--- a/src/com/android/browser/TitleBar.java
+++ b/src/com/android/browser/TitleBar.java
@@ -182,9 +182,9 @@
             this.setTranslationY(0);
             // reaffirm top-controls
             if (isFixed() || isInLoad())
-                showTopControls();
+                showTopControls(false);
             else
-                enableTopControls();
+                enableTopControls(true);
         } else if (!bOldStyleAutoHideDisabled) {
             int visibleHeight = getVisibleTitleHeight();
             float startPos = (-getEmbeddedHeight() + visibleHeight);
@@ -259,25 +259,25 @@
         return webview != null ? webview.getVisibleTitleHeight() : 0;
     }
 
-    private void hideTopControls() {
+    protected void hideTopControls(boolean animate) {
         Tab tab = mBaseUi.getActiveTab();
         WebView view = tab != null ? tab.getWebView() : null;
         if (view != null)
-            view.updateTopControls(true, false, true);
+            view.updateTopControls(true, false, animate);
     }
 
-    private void showTopControls() {
+    protected void showTopControls(boolean animate) {
         Tab tab = mBaseUi.getActiveTab();
         WebView view = tab != null ? tab.getWebView() : null;
         if (view != null)
-            view.updateTopControls(false, true, false);
+            view.updateTopControls(false, true, animate);
     }
 
-    private void enableTopControls() {
+    protected void enableTopControls(boolean animate) {
         Tab tab = mBaseUi.getActiveTab();
         WebView view = tab != null ? tab.getWebView() : null;
         if (view != null)
-            view.updateTopControls(true, true, true);
+            view.updateTopControls(true, true, animate);
     }
 
 
@@ -296,9 +296,9 @@
             }
 
             //onPageFinished
-            showTopControls();
+            showTopControls(false);
             if(!isFixed())
-                enableTopControls();
+                enableTopControls(true);
 
         } else {
             if (!mInLoad) {
@@ -313,7 +313,7 @@
             if (!mShowing) {
                 show();
             }
-            showTopControls();
+            showTopControls(false);
         }
     }
 
