show menu on phone with menu key

     Bug: 5017628
     show the menu anchored to the tab switcher button

Change-Id: I99baa1978d4c0a99b0fe17fee198ddd5b7db1b76
diff --git a/src/com/android/browser/NavigationBarPhone.java b/src/com/android/browser/NavigationBarPhone.java
index 684f986..2da0424 100644
--- a/src/com/android/browser/NavigationBarPhone.java
+++ b/src/com/android/browser/NavigationBarPhone.java
@@ -45,7 +45,7 @@
     private View mTitleContainer;
     private View mMore;
     private Drawable mTextfieldBgDrawable;
-    private boolean mMenuShowing;
+    private PopupMenu mPopupMenu;
     private boolean mNeedsMenu;
 
     public NavigationBarPhone(Context context) {
@@ -163,18 +163,28 @@
     }
 
     public boolean isMenuShowing() {
-        return mMenuShowing;
+        return (mPopupMenu != null);
+    }
+
+    void showMenu() {
+        // called from menu key, use tab switcher as anchor
+        showMenu(mTabSwitcher);
     }
 
     void showMenu(View anchor) {
-        mMenuShowing = true;
-        PopupMenu popup = new PopupMenu(mContext, anchor);
-        Menu menu = popup.getMenu();
-        popup.getMenuInflater().inflate(R.menu.browser, menu);
+        mPopupMenu = new PopupMenu(mContext, anchor);
+        Menu menu = mPopupMenu.getMenu();
+        mPopupMenu.getMenuInflater().inflate(R.menu.browser, menu);
         mUiController.updateMenuState(mBaseUi.getActiveTab(), menu);
-        popup.setOnMenuItemClickListener(this);
-        popup.setOnDismissListener(this);
-        popup.show();
+        mPopupMenu.setOnMenuItemClickListener(this);
+        mPopupMenu.setOnDismissListener(this);
+        mPopupMenu.show();
+    }
+
+    void dismissMenu() {
+       if (mPopupMenu != null) {
+           mPopupMenu.dismiss();
+       }
     }
 
     @Override
@@ -193,7 +203,7 @@
     }
 
     private void onMenuHidden() {
-        mMenuShowing = false;
+        mPopupMenu = null;
         mBaseUi.showTitleBarForDuration();
     }
 
diff --git a/src/com/android/browser/PhoneUi.java b/src/com/android/browser/PhoneUi.java
index 6c484db..99320b7 100644
--- a/src/com/android/browser/PhoneUi.java
+++ b/src/com/android/browser/PhoneUi.java
@@ -79,10 +79,10 @@
 
     @Override
     public boolean onMenuKey() {
-        if (mNavScreen == null) {
-            showNavScreen();
+        if (mNavigationBar.isMenuShowing()) {
+            mNavigationBar.dismissMenu();
         } else {
-            mNavScreen.close();
+            mNavigationBar.showMenu();
         }
         return true;
     }