Merge "Fix bug 5396097 - menu theme consistency" into ics-mr0
diff --git a/core/java/com/android/internal/view/menu/ActionMenuPresenter.java b/core/java/com/android/internal/view/menu/ActionMenuPresenter.java
index aabea2c..f25d65f 100644
--- a/core/java/com/android/internal/view/menu/ActionMenuPresenter.java
+++ b/core/java/com/android/internal/view/menu/ActionMenuPresenter.java
@@ -31,9 +31,6 @@
 import android.view.View.MeasureSpec;
 import android.view.ViewConfiguration;
 import android.view.ViewGroup;
-import android.view.ViewParent;
-import android.view.accessibility.AccessibilityEvent;
-import android.view.accessibility.AccessibilityNodeInfo;
 import android.widget.ImageButton;
 
 import java.util.ArrayList;
@@ -71,8 +68,8 @@
     final PopupPresenterCallback mPopupPresenterCallback = new PopupPresenterCallback();
     int mOpenSubMenuId;
 
-    public ActionMenuPresenter() {
-        super(com.android.internal.R.layout.action_menu_layout,
+    public ActionMenuPresenter(Context context) {
+        super(context, com.android.internal.R.layout.action_menu_layout,
                 com.android.internal.R.layout.action_menu_item_layout);
     }
 
@@ -98,7 +95,7 @@
         int width = mWidthLimit;
         if (mReserveOverflow) {
             if (mOverflowButton == null) {
-                mOverflowButton = new OverflowMenuButton(mContext);
+                mOverflowButton = new OverflowMenuButton(mSystemContext);
                 final int spec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
                 mOverflowButton.measure(spec, spec);
             }
@@ -215,7 +212,7 @@
 
         if (hasOverflow) {
             if (mOverflowButton == null) {
-                mOverflowButton = new OverflowMenuButton(mContext);
+                mOverflowButton = new OverflowMenuButton(mSystemContext);
             }
             ViewGroup parent = (ViewGroup) mOverflowButton.getParent();
             if (parent != mMenuView) {
diff --git a/core/java/com/android/internal/view/menu/BaseMenuPresenter.java b/core/java/com/android/internal/view/menu/BaseMenuPresenter.java
index bec437a..1e06b5a 100644
--- a/core/java/com/android/internal/view/menu/BaseMenuPresenter.java
+++ b/core/java/com/android/internal/view/menu/BaseMenuPresenter.java
@@ -29,8 +29,10 @@
  * be reused if possible when items change.
  */
 public abstract class BaseMenuPresenter implements MenuPresenter {
+    protected Context mSystemContext;
     protected Context mContext;
     protected MenuBuilder mMenu;
+    protected LayoutInflater mSystemInflater;
     protected LayoutInflater mInflater;
     private Callback mCallback;
 
@@ -44,10 +46,13 @@
     /**
      * Construct a new BaseMenuPresenter.
      *
+     * @param context Context for generating system-supplied views
      * @param menuLayoutRes Layout resource ID for the menu container view
      * @param itemLayoutRes Layout resource ID for a single item view
      */
-    public BaseMenuPresenter(int menuLayoutRes, int itemLayoutRes) {
+    public BaseMenuPresenter(Context context, int menuLayoutRes, int itemLayoutRes) {
+        mSystemContext = context;
+        mSystemInflater = LayoutInflater.from(context);
         mMenuLayoutRes = menuLayoutRes;
         mItemLayoutRes = itemLayoutRes;
     }
@@ -62,7 +67,7 @@
     @Override
     public MenuView getMenuView(ViewGroup root) {
         if (mMenuView == null) {
-            mMenuView = (MenuView) mInflater.inflate(mMenuLayoutRes, root, false);
+            mMenuView = (MenuView) mSystemInflater.inflate(mMenuLayoutRes, root, false);
             mMenuView.initialize(mMenu);
             updateMenuView(true);
         }
@@ -138,7 +143,7 @@
      * @return The new item view
      */
     public MenuView.ItemView createItemView(ViewGroup parent) {
-        return (MenuView.ItemView) mInflater.inflate(mItemLayoutRes, parent, false);
+        return (MenuView.ItemView) mSystemInflater.inflate(mItemLayoutRes, parent, false);
     }
 
     /**
diff --git a/core/java/com/android/internal/view/menu/IconMenuPresenter.java b/core/java/com/android/internal/view/menu/IconMenuPresenter.java
index 24ddad6..3b1decd 100644
--- a/core/java/com/android/internal/view/menu/IconMenuPresenter.java
+++ b/core/java/com/android/internal/view/menu/IconMenuPresenter.java
@@ -43,8 +43,8 @@
     private static final String VIEWS_TAG = "android:menu:icon";
     private static final String OPEN_SUBMENU_KEY = "android:menu:icon:submenu";
 
-    public IconMenuPresenter() {
-        super(com.android.internal.R.layout.icon_menu_layout,
+    public IconMenuPresenter(Context context) {
+        super(context, com.android.internal.R.layout.icon_menu_layout,
                 com.android.internal.R.layout.icon_menu_item_layout);
     }
 
diff --git a/core/java/com/android/internal/widget/ActionBarContextView.java b/core/java/com/android/internal/widget/ActionBarContextView.java
index acffa5c..446dab1 100644
--- a/core/java/com/android/internal/widget/ActionBarContextView.java
+++ b/core/java/com/android/internal/widget/ActionBarContextView.java
@@ -207,7 +207,7 @@
         });
 
         final MenuBuilder menu = (MenuBuilder) mode.getMenu();
-        mActionMenuPresenter = new ActionMenuPresenter();
+        mActionMenuPresenter = new ActionMenuPresenter(mContext);
         mActionMenuPresenter.setReserveOverflow(true);
 
         final LayoutParams layoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT,
diff --git a/core/java/com/android/internal/widget/ActionBarView.java b/core/java/com/android/internal/widget/ActionBarView.java
index 6d2e823..61bce60 100644
--- a/core/java/com/android/internal/widget/ActionBarView.java
+++ b/core/java/com/android/internal/widget/ActionBarView.java
@@ -373,7 +373,7 @@
             }
         }
         if (mActionMenuPresenter == null) {
-            mActionMenuPresenter = new ActionMenuPresenter();
+            mActionMenuPresenter = new ActionMenuPresenter(mContext);
             mActionMenuPresenter.setCallback(cb);
             mActionMenuPresenter.setId(com.android.internal.R.id.action_menu_presenter);
             mExpandedMenuPresenter = new ExpandedActionViewMenuPresenter();
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindow.java b/policy/src/com/android/internal/policy/impl/PhoneWindow.java
index 2cd6eab..de8d41a2 100644
--- a/policy/src/com/android/internal/policy/impl/PhoneWindow.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneWindow.java
@@ -1084,8 +1084,8 @@
         }
 
         MenuView menuView = st.isInListMode()
-                ? st.getListMenuView(mPanelMenuPresenterCallback)
-                : st.getIconMenuView(mPanelMenuPresenterCallback);
+                ? st.getListMenuView(getContext(), mPanelMenuPresenterCallback)
+                : st.getIconMenuView(getContext(), mPanelMenuPresenterCallback);
 
         st.shownPanelView = (View) menuView;
 
@@ -3251,11 +3251,11 @@
             }
         }
 
-        MenuView getListMenuView(MenuPresenter.Callback cb) {
+        MenuView getListMenuView(Context context, MenuPresenter.Callback cb) {
             if (menu == null) return null;
 
             if (!isCompact) {
-                getIconMenuView(cb); // Need this initialized to know where our offset goes
+                getIconMenuView(context, cb); // Need this initialized to know where our offset goes
             }
 
             if (listMenuPresenter == null) {
@@ -3275,11 +3275,11 @@
             return result;
         }
 
-        MenuView getIconMenuView(MenuPresenter.Callback cb) {
+        MenuView getIconMenuView(Context context, MenuPresenter.Callback cb) {
             if (menu == null) return null;
 
             if (iconMenuPresenter == null) {
-                iconMenuPresenter = new IconMenuPresenter();
+                iconMenuPresenter = new IconMenuPresenter(context);
                 iconMenuPresenter.setCallback(cb);
                 iconMenuPresenter.setId(com.android.internal.R.id.icon_menu_presenter);
                 menu.addMenuPresenter(iconMenuPresenter);