fix titlebar disappearing on tab switch

  Bug: 6343476

Consolidate some quickcontrols code and set titlebar for BrowserWebView
before attaching

Change-Id: I3bc8100e3905538aae73be7a07fb611702c5e54b
diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java
index 652f9d7..54b2f18 100644
--- a/src/com/android/browser/BaseUi.java
+++ b/src/com/android/browser/BaseUi.java
@@ -32,7 +32,6 @@
 import android.os.Handler;
 import android.os.Message;
 import android.text.TextUtils;
-import android.util.Log;
 import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.view.Menu;
@@ -112,6 +111,7 @@
     protected boolean mUseQuickControls;
     protected TitleBar mTitleBar;
     private NavigationBarBase mNavigationBar;
+    protected PieControl mPieControl;
 
     public BaseUi(Activity browser, UiController controller) {
         mActivity = browser;
@@ -196,6 +196,21 @@
         return false;
     }
 
+    @Override
+    public void setUseQuickControls(boolean useQuickControls) {
+        mUseQuickControls = useQuickControls;
+        mTitleBar.setUseQuickControls(mUseQuickControls);
+        if (useQuickControls) {
+            mPieControl = new PieControl(mActivity, mUiController, this);
+            mPieControl.attachToContainer(mContentView);
+        } else {
+            if (mPieControl != null) {
+                mPieControl.removeFromContainer(mContentView);
+            }
+        }
+        updateUrlBarAutoShowManagerTarget();
+    }
+
     // Tab callbacks
     @Override
     public void onTabDataChanged(Tab tab) {
@@ -247,9 +262,19 @@
             }
         }
         mActiveTab = tab;
-        WebView web = mActiveTab.getWebView();
+        BrowserWebView web = (BrowserWebView) mActiveTab.getWebView();
         updateUrlBarAutoShowManagerTarget();
         attachTabToContentView(tab);
+        if (web != null) {
+            // Request focus on the top window.
+            if (mUseQuickControls) {
+                mPieControl.forceToTop(mContentView);
+                web.setTitleBar(null);
+            } else {
+                web.setTitleBar(mTitleBar);
+                mTitleBar.onScrollChanged();
+            }
+        }
         mTitleBar.bringToFront();
         tab.getTopWindow().requestFocus();
         setShouldShowErrorConsole(tab, mUiController.shouldShowErrorConsole());
diff --git a/src/com/android/browser/PhoneUi.java b/src/com/android/browser/PhoneUi.java
index 153533b..7db5563 100644
--- a/src/com/android/browser/PhoneUi.java
+++ b/src/com/android/browser/PhoneUi.java
@@ -29,17 +29,13 @@
 import android.util.Log;
 import android.util.TypedValue;
 import android.view.ActionMode;
-import android.view.Gravity;
 import android.view.KeyEvent;
 import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
-import android.view.ViewGroup;
 import android.view.accessibility.AccessibilityEvent;
 import android.webkit.WebView;
-import android.webkit.WebViewClassic;
-import android.widget.FrameLayout;
 import android.widget.ImageView;
 
 import com.android.browser.UrlInputView.StateListener;
@@ -52,7 +48,6 @@
     private static final String LOGTAG = "PhoneUi";
     private static final int MSG_INIT_NAVSCREEN = 100;
 
-    private PieControl mPieControl;
     private NavScreen mNavScreen;
     private AnimScreen mAnimScreen;
     private NavigationBarPhone mNavigationBar;
@@ -264,21 +259,6 @@
     }
 
     @Override
-    public void setUseQuickControls(boolean useQuickControls) {
-        mUseQuickControls = useQuickControls;
-        mTitleBar.setUseQuickControls(mUseQuickControls);
-        if (useQuickControls) {
-            mPieControl = new PieControl(mActivity, mUiController, this);
-            mPieControl.attachToContainer(mContentView);
-        } else {
-            if (mPieControl != null) {
-                mPieControl.removeFromContainer(mContentView);
-            }
-        }
-        updateUrlBarAutoShowManagerTarget();
-    }
-
-    @Override
     public boolean isWebShowing() {
         return super.isWebShowing() && !showingNavScreen();
     }
diff --git a/src/com/android/browser/XLargeUi.java b/src/com/android/browser/XLargeUi.java
index 391b83e..e0a6be2 100644
--- a/src/com/android/browser/XLargeUi.java
+++ b/src/com/android/browser/XLargeUi.java
@@ -50,7 +50,6 @@
 
     private NavigationBarTablet mNavBar;
 
-    private PieControl mPieControl;
     private Handler mHandler;
 
     /**
@@ -82,27 +81,19 @@
 
     @Override
     public void setUseQuickControls(boolean useQuickControls) {
-        mUseQuickControls = useQuickControls;
-        mTitleBar.setUseQuickControls(mUseQuickControls);
-        if (useQuickControls) {
-            checkTabCount();
-            mPieControl = new PieControl(mActivity, mUiController, this);
-            mPieControl.attachToContainer(mContentView);
-        } else {
-            mActivity.getActionBar().show();
-            if (mPieControl != null) {
-                mPieControl.removeFromContainer(mContentView);
-            }
+        super.setUseQuickControls(useQuickControls);
+        checkHideActionBar();
+        if (!useQuickControls) {
+            mActionBar.show();
         }
         mTabBar.setUseQuickControls(mUseQuickControls);
         // We need to update the tabs with this change
         for (Tab t : mTabControl.getTabs()) {
             t.updateShouldCaptureThumbnails();
         }
-        updateUrlBarAutoShowManagerTarget();
     }
 
-    private void checkTabCount() {
+    private void checkHideActionBar() {
         if (mUseQuickControls) {
             mHandler.post(new Runnable() {
                 public void run() {
@@ -116,7 +107,7 @@
     public void onResume() {
         super.onResume();
         mNavBar.clearCompletions();
-        checkTabCount();
+        checkHideActionBar();
     }
 
     @Override
@@ -164,7 +155,7 @@
     }
 
     protected void onAddTabCompleted(Tab tab) {
-        checkTabCount();
+        checkHideActionBar();
     }
 
     @Override
@@ -179,13 +170,6 @@
             Log.e(LOGTAG, "active tab with no webview detected");
             return;
         }
-        // Request focus on the top window.
-        if (mUseQuickControls) {
-            mPieControl.forceToTop(mContentView);
-            view.setTitleBar(null);
-        } else {
-            view.setTitleBar(mTitleBar);
-        }
         mTabBar.onSetActiveTab(tab);
         if (tab.isInVoiceSearchMode()) {
             showVoiceTitleBar(tab.getVoiceDisplayTitle(), tab.getVoiceSearchResults());
@@ -199,7 +183,7 @@
     @Override
     public void updateTabs(List<Tab> tabs) {
         mTabBar.updateTabs(tabs);
-        checkTabCount();
+        checkHideActionBar();
     }
 
     @Override
@@ -212,7 +196,7 @@
     }
 
     protected void onRemoveTabCompleted(Tab tab) {
-        checkTabCount();
+        checkHideActionBar();
     }
 
     int getContentWidth() {
@@ -256,7 +240,7 @@
 
     @Override
     public void onActionModeFinished(boolean inLoad) {
-        checkTabCount();
+        checkHideActionBar();
         if (inLoad) {
             // the titlebar was removed when the CAB was shown
             // if the page is loading, show it again
@@ -288,9 +272,7 @@
     @Override
     public void onHideCustomView() {
         super.onHideCustomView();
-        if (mUseQuickControls) {
-            checkTabCount();
-        }
+        checkHideActionBar();
     }
 
     @Override