Implement ComboView for Bookmarks, History and SavedPages

 - Replaces ComboViewActivity for PhoneUi.
 - Lives as part of the BrowserActivity's ViewTree.
 - Avoids construction of ComboViewActivity everytime the bookmarks screen is opened.

Change-Id: Ic7042de731a4cc2107a297c9f7d4356bc2c30f2e
diff --git a/src/com/android/browser/XLargeUi.java b/src/com/android/browser/XLargeUi.java
index 603ce08..ec62a23 100644
--- a/src/com/android/browser/XLargeUi.java
+++ b/src/com/android/browser/XLargeUi.java
@@ -32,6 +32,7 @@
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
+import android.view.ViewStub;
 import android.webkit.WebChromeClient;
 
 import org.codeaurora.swe.WebView;
@@ -53,6 +54,7 @@
     private TabBar mTabBar;
 
     private NavigationBarTablet mNavBar;
+    private ComboView mComboView;
 
     private Handler mHandler;
 
@@ -70,13 +72,60 @@
     }
 
     private void setupActionBar() {
+        mActionBar.setHomeButtonEnabled(false);
         mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
         mActionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
         mActionBar.setCustomView(mTabBar);
     }
 
     public void showComboView(ComboViews startWith, Bundle extras) {
-        super.showComboView(startWith, extras);
+        if (mComboView == null) {
+            ViewStub stub = (ViewStub) mActivity.getWindow().getDecorView().findViewById(R.id.combo_view_stub);
+            mComboView = (ComboView) stub.inflate();
+            mComboView.setVisibility(View.GONE);
+            mComboView.setupViews(mActivity);
+        }
+        mNavBar.setVisibility(View.GONE);
+        if (mActionBar != null)
+            mActionBar.hide();
+        Bundle b = new Bundle();
+        b.putString(ComboViewActivity.EXTRA_INITIAL_VIEW, startWith.name());
+        b.putBundle(ComboViewActivity.EXTRA_COMBO_ARGS, extras);
+        Tab t = getActiveTab();
+        if (t != null) {
+            b.putString(ComboViewActivity.EXTRA_CURRENT_URL, t.getUrl());
+        }
+        mComboView.showViews(mActivity, b);
+    }
+
+    @Override
+    public void hideComboView() {
+        if (showingComboView()) {
+            mComboView.hideViews();
+            mActionBar = mActivity.getActionBar();
+            setupActionBar();
+            if (mActionBar != null)
+                mActionBar.show();
+            mNavBar.setVisibility(View.VISIBLE);
+        }
+    }
+
+    @Override
+    public boolean onBackKey() {
+        if (showingComboView()) {
+            hideComboView();
+            return true;
+        }
+        return super.onBackKey();
+    }
+
+    private boolean showingComboView() {
+        return mComboView != null && mComboView.getVisibility() == View.VISIBLE;
+    }
+
+    @Override
+    public boolean isComboViewShowing() {
+        return showingComboView();
     }
 
     private void checkHideActionBar() {