Merge "Ensure the menu items are properly recreated after a density change" into oc-dev
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMenuRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMenuRow.java
index 570de18..c09da21 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMenuRow.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMenuRow.java
@@ -67,7 +67,6 @@
 
     private Context mContext;
     private FrameLayout mMenuContainer;
-    private MenuItem mSnoozeItem;
     private MenuItem mInfoItem;
     private ArrayList<MenuItem> mMenuItems;
     private OnMenuEventListener mMenuListener;
@@ -86,9 +85,9 @@
     private int[] mIconLocation = new int[2];
     private int[] mParentLocation = new int[2];
 
-    private float mHorizSpaceForIcon;
-    private int mVertSpaceForIcons;
-    private int mIconPadding;
+    private float mHorizSpaceForIcon = -1;
+    private int mVertSpaceForIcons = -1;
+    private int mIconPadding = -1;
 
     private float mAlpha = 0f;
     private float mPrevX;
@@ -104,17 +103,9 @@
 
     public NotificationMenuRow(Context context) {
         mContext = context;
-        final Resources res = context.getResources();
-        mShouldShowMenu = res.getBoolean(R.bool.config_showNotificationGear);
-        mHorizSpaceForIcon = res.getDimensionPixelSize(R.dimen.notification_menu_icon_size);
-        mVertSpaceForIcons = res.getDimensionPixelSize(R.dimen.notification_min_height);
-        mIconPadding = res.getDimensionPixelSize(R.dimen.notification_menu_icon_padding);
+        mShouldShowMenu = context.getResources().getBoolean(R.bool.config_showNotificationGear);
         mHandler = new Handler(Looper.getMainLooper());
         mMenuItems = new ArrayList<>();
-        mSnoozeItem = createSnoozeItem(context);
-        mInfoItem = createInfoItem(context);
-        mMenuItems.add(mSnoozeItem);
-        mMenuItems.add(mInfoItem);
     }
 
     @Override
@@ -180,19 +171,24 @@
     }
 
     private void createMenuViews(boolean resetState) {
-        // Filter the menu items based on the notification
+        final Resources res = mContext.getResources();
+        mHorizSpaceForIcon = res.getDimensionPixelSize(R.dimen.notification_menu_icon_size);
+        mVertSpaceForIcons = res.getDimensionPixelSize(R.dimen.notification_min_height);
+        mIconPadding = res.getDimensionPixelSize(R.dimen.notification_menu_icon_padding);
+        mMenuItems.clear();
+        // Construct the menu items based on the notification
         if (mParent != null && mParent.getStatusBarNotification() != null) {
             int flags = mParent.getStatusBarNotification().getNotification().flags;
             boolean isForeground = (flags & Notification.FLAG_FOREGROUND_SERVICE) != 0;
-            if (isForeground) {
-                // Don't show snooze for foreground services
-                mMenuItems.remove(mSnoozeItem);
-            } else if (!mMenuItems.contains(mSnoozeItem)) {
-                // Was a foreground service but is no longer, add snooze back
-                mMenuItems.add(mSnoozeItem);
+            if (!isForeground) {
+                // Only show snooze for non-foreground notifications
+                mMenuItems.add(createSnoozeItem(mContext));
             }
         }
-        // Recreate the menu
+        mInfoItem = createInfoItem(mContext);
+        mMenuItems.add(mInfoItem);
+
+        // Construct the menu views
         if (mMenuContainer != null) {
             mMenuContainer.removeAllViews();
         } else {