Remove second url bar

       Remove the overlay "fake" titlebar by telling the
       WebView where to render the embedded titlebar
       Simplify focus handling
       requires Ic979b641c8cc80acb83eeab49c4f700fc5c50e72
       in frameworks/base

Change-Id: I7896cd731949fdcc47cd18abfee5ef947b0e8cee
diff --git a/src/com/android/browser/XLargeUi.java b/src/com/android/browser/XLargeUi.java
index 562705b..3e200ea 100644
--- a/src/com/android/browser/XLargeUi.java
+++ b/src/com/android/browser/XLargeUi.java
@@ -28,8 +28,6 @@
 import android.view.View;
 import android.webkit.WebChromeClient.CustomViewCallback;
 import android.webkit.WebView;
-import android.widget.FrameLayout;
-import android.widget.FrameLayout.LayoutParams;
 
 import java.util.List;
 
@@ -44,7 +42,6 @@
     private TabBar mTabBar;
 
     private TitleBarXLarge mTitleBar;
-    private TitleBarXLarge mFakeTitleBar;
 
     private boolean mUseQuickControls;
     private PieControl mPieControl;
@@ -57,9 +54,6 @@
         super(browser, controller);
         mTitleBar = new TitleBarXLarge(mActivity, mUiController, this);
         mTitleBar.setProgress(100);
-        mTitleBar.setEditable(false);
-        mFakeTitleBar = new TitleBarXLarge(mActivity, mUiController, this);
-        mFakeTitleBar.setEditable(true);
         mTabBar = new TabBar(mActivity, mUiController, this);
         mActionBar = mActivity.getActionBar();
         setupActionBar();
@@ -90,31 +84,28 @@
 
     private void setUseQuickControls(boolean useQuickControls) {
         mUseQuickControls = useQuickControls;
+        mTitleBar.setUseQuickControls(mUseQuickControls);
         if (useQuickControls) {
             checkTabCount();
             mPieControl = new PieControl(mActivity, mUiController, this);
             mPieControl.attachToContainer(mContentView);
-            setFakeTitleBarGravity(Gravity.BOTTOM);
-
-            // remove embedded title bar if present
-            WebView web = mTabControl.getCurrentWebView();
-            if ((web != null) && (web.getVisibleTitleHeight() > 0)) {
-                web.setEmbeddedTitleBar(null);
+            Tab tab = getActiveTab();
+            if ((tab != null) && (tab.getWebView() != null)) {
+                tab.getWebView().setEmbeddedTitleBar(null);
             }
+            setTitleGravity(Gravity.BOTTOM);
         } else {
             mActivity.getActionBar().show();
             if (mPieControl != null) {
                 mPieControl.removeFromContainer(mContentView);
             }
-            setFakeTitleBarGravity(Gravity.TOP);
-            // remove embedded title bar if present
+            setTitleGravity(Gravity.TOP);
             WebView web = mTabControl.getCurrentWebView();
-            if ((web != null) && (web.getVisibleTitleHeight() == 0)) {
+            if (web != null) {
                 web.setEmbeddedTitleBar(mTitleBar);
             }
         }
         mTabBar.setUseQuickControls(mUseQuickControls);
-        mFakeTitleBar.setUseQuickControls(mUseQuickControls);
     }
 
     private void checkTabCount() {
@@ -130,7 +121,7 @@
 
     @Override
     public void onDestroy() {
-        hideFakeTitleBar();
+        hideTitleBar();
     }
 
     // webview factory
@@ -174,7 +165,6 @@
         if (tab.inForeground()) {
             boolean isBookmark = tab.isBookmarkedSite();
             mTitleBar.setCurrentUrlIsBookmark(isBookmark);
-            mFakeTitleBar.setCurrentUrlIsBookmark(isBookmark);
         }
     }
 
@@ -183,23 +173,23 @@
         int progress = tab.getLoadProgress();
         mTabBar.onProgress(tab, progress);
         if (tab.inForeground()) {
-            mFakeTitleBar.setProgress(progress);
+            mTitleBar.setProgress(progress);
             if (progress == 100) {
-                if (!mFakeTitleBar.isEditingUrl()) {
-                    hideFakeTitleBar();
+                if (!mTitleBar.isEditingUrl()) {
+                    hideTitleBar();
                     if (mUseQuickControls) {
-                        mFakeTitleBar.setShowProgressOnly(false);
-                        setFakeTitleBarGravity(Gravity.BOTTOM);
+                        mTitleBar.setShowProgressOnly(false);
+                        setTitleGravity(Gravity.BOTTOM);
                     }
                 }
             } else {
-                if (mUseQuickControls && !mFakeTitleBar.isEditingUrl()) {
-                    mFakeTitleBar.setShowProgressOnly(true);
-                    if (!isFakeTitleBarShowing()) {
-                        setFakeTitleBarGravity(Gravity.TOP);
+                if (!isTitleBarShowing()) {
+                    if (mUseQuickControls && !mTitleBar.isEditingUrl()) {
+                        mTitleBar.setShowProgressOnly(true);
+                        setTitleGravity(Gravity.TOP);
                     }
+                    showTitleBar();
                 }
-                showFakeTitleBar();
             }
         }
     }
@@ -274,55 +264,48 @@
         if (mUiController.isInCustomActionMode()) {
             mUiController.endActionMode();
         }
-        showFakeTitleBar();
-        mFakeTitleBar.onEditUrl(clearInput);
+        showTitleBar();
+        mTitleBar.onEditUrl(clearInput);
     }
 
-    void setFakeTitleBarGravity(int gravity) {
-        FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams)
-                mFakeTitleBar.getLayoutParams();
-        if (lp == null) {
-            lp = new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT,
-                    LayoutParams.WRAP_CONTENT);
+    void showTitleBarAndEdit() {
+        mTitleBar.setShowProgressOnly(false);
+        showTitleBar();
+        mTitleBar.onEditUrl(false);
+    }
+
+    void stopEditingUrl() {
+        mTitleBar.stopEditingUrl();
+    }
+
+    @Override
+    protected void showTitleBar() {
+        if (canShowTitleBar()) {
+            if (mUseQuickControls) {
+                setTitleGravity(Gravity.BOTTOM);
+                mContentView.addView(mTitleBar);
+            } else {
+                setTitleGravity(Gravity.TOP);
+            }
+            super.showTitleBar();
+            mTabBar.onShowTitleBar();
         }
-        lp.gravity = gravity;
-        mFakeTitleBar.setLayoutParams(lp);
-    }
-
-    void showFakeTitleBarAndEdit() {
-        mFakeTitleBar.setShowProgressOnly(false);
-        setFakeTitleBarGravity(Gravity.BOTTOM);
-        showFakeTitleBar();
-        mFakeTitleBar.onEditUrl(false);
     }
 
     @Override
-    protected void attachFakeTitleBar(WebView mainView) {
-        mContentView.addView(mFakeTitleBar);
-        mTabBar.onShowTitleBar();
-    }
-
-    @Override
-    protected void hideFakeTitleBar() {
-        if (isFakeTitleBarShowing()) {
-            mFakeTitleBar.setEditMode(false);
+    protected void hideTitleBar() {
+        if (isTitleBarShowing()) {
             mTabBar.onHideTitleBar();
-            mContentView.removeView(mFakeTitleBar);
+            setTitleGravity(Gravity.NO_GRAVITY);
+            if (mUseQuickControls) {
+                mContentView.removeView(mTitleBar);
+            }
+            super.hideTitleBar();
         }
     }
 
     @Override
-    protected boolean isFakeTitleBarShowing() {
-        return (mFakeTitleBar.getParent() != null);
-    }
-
-    @Override
-    protected TitleBarBase getFakeTitleBar() {
-        return mFakeTitleBar;
-    }
-
-    @Override
-    protected TitleBarBase getEmbeddedTitleBar() {
+    protected TitleBarBase getTitleBar() {
         return mTitleBar;
     }
 
@@ -330,9 +313,9 @@
 
     @Override
     public void onActionModeStarted(ActionMode mode) {
-        if (!mFakeTitleBar.isEditingUrl()) {
+        if (!mTitleBar.isEditingUrl()) {
             // hide the fake title bar when CAB is shown
-            hideFakeTitleBar();
+            hideTitleBar();
         }
     }
 
@@ -342,18 +325,17 @@
         if (inLoad) {
             // the titlebar was removed when the CAB was shown
             // if the page is loading, show it again
-            mFakeTitleBar.setShowProgressOnly(true);
-            if (!isFakeTitleBarShowing()) {
-                setFakeTitleBarGravity(Gravity.TOP);
+            mTitleBar.setShowProgressOnly(true);
+            if (!isTitleBarShowing()) {
+                setTitleGravity(Gravity.TOP);
             }
-            showFakeTitleBar();
+            showTitleBar();
         }
     }
 
     @Override
     protected void updateNavigationState(Tab tab) {
         mTitleBar.updateNavigationState(tab);
-        mFakeTitleBar.updateNavigationState(tab);
     }
 
     @Override
@@ -377,8 +359,6 @@
         }
         mTitleBar.setInVoiceMode(true, null);
         mTitleBar.setDisplayTitle(title);
-        mFakeTitleBar.setInVoiceMode(true, vsresults);
-        mFakeTitleBar.setDisplayTitle(title);
     }
 
     @Override
@@ -386,8 +366,6 @@
         mTitleBar.setInVoiceMode(false, null);
         String url = tab.getUrl();
         mTitleBar.setDisplayTitle(url);
-        mFakeTitleBar.setInVoiceMode(false, null);
-        mFakeTitleBar.setDisplayTitle(url);
     }
 
     @Override
@@ -419,7 +397,7 @@
                 }
         }
         boolean ctrl = event.hasModifiers(KeyEvent.META_CTRL_ON);
-        if (!ctrl && event.isPrintingKey() && !mFakeTitleBar.isEditingUrl()) {
+        if (!ctrl && event.isPrintingKey() && !mTitleBar.isEditingUrl()) {
             editUrl(true);
             return mContentView.dispatchKeyEvent(event);
         }