diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java
index 54b2f18..8d2b6f0 100644
--- a/src/com/android/browser/BaseUi.java
+++ b/src/com/android/browser/BaseUi.java
@@ -282,11 +282,6 @@
         onProgressChanged(tab);
         mNavigationBar.setIncognitoMode(tab.isPrivateBrowsingEnabled());
         updateAutoLogin(tab, false);
-        if (web != null && web.getVisibleTitleHeight()
-                != mTitleBar.getEmbeddedHeight()
-                && !mUseQuickControls) {
-            showTitleBarForDuration();
-        }
     }
 
     protected void updateUrlBarAutoShowManagerTarget() {
diff --git a/src/com/android/browser/PhoneUi.java b/src/com/android/browser/PhoneUi.java
index 7db5563..7f64643 100644
--- a/src/com/android/browser/PhoneUi.java
+++ b/src/com/android/browser/PhoneUi.java
@@ -53,8 +53,6 @@
     private NavigationBarPhone mNavigationBar;
     private int mActionBarHeight;
 
-    boolean mExtendedMenuOpen;
-    boolean mOptionsMenuOpen;
     boolean mAnimating;
 
     /**
@@ -108,21 +106,6 @@
         if (tab.inForeground()) {
             int progress = tab.getLoadProgress();
             mTitleBar.setProgress(progress);
-            if (progress == 100) {
-                if (!mOptionsMenuOpen || !mExtendedMenuOpen) {
-                    suggestHideTitleBar();
-                    if (mUseQuickControls) {
-                        mTitleBar.setShowProgressOnly(false);
-                    }
-                }
-            } else {
-                if (!mOptionsMenuOpen || mExtendedMenuOpen) {
-                    if (mUseQuickControls && !mTitleBar.isEditingUrl()) {
-                        mTitleBar.setShowProgressOnly(true);
-                    }
-                    showTitleBar();
-                }
-            }
         }
         if (mNavScreen == null && getTitleBar().getHeight() > 0) {
             mHandler.sendEmptyMessage(MSG_INIT_NAVSCREEN);
diff --git a/src/com/android/browser/TitleBar.java b/src/com/android/browser/TitleBar.java
index bb0eec5..f7ca0d4 100644
--- a/src/com/android/browser/TitleBar.java
+++ b/src/com/android/browser/TitleBar.java
@@ -227,9 +227,10 @@
             mNavBar.onProgressStopped();
             // check if needs to be hidden
             if (!isEditingUrl() && !wantsToBeVisible()) {
-                hide();
                 if (mUseQuickControls) {
                     setShowProgressOnly(false);
+                } else {
+                    mBaseUi.showTitleBarForDuration();
                 }
             }
         } else {
