Merge "Handle multi-user in notif log"
diff --git a/res/layout/notification_log_row.xml b/res/layout/notification_log_row.xml
index 4d44f9f..fea8a29 100644
--- a/res/layout/notification_log_row.xml
+++ b/res/layout/notification_log_row.xml
@@ -71,6 +71,18 @@
             android:src="@drawable/ic_notifications_alert"
         />
 
+        <ImageView
+            android:id="@+id/profile_badge"
+            android:layout_width="@*android:dimen/status_bar_icon_size"
+            android:layout_height="@*android:dimen/status_bar_icon_size"
+            android:layout_centerVertical="true"
+            android:layout_marginEnd="6dp"
+            android:paddingTop="1dp"
+            android:scaleType="fitCenter"
+            android:visibility="gone"
+            android:layout_toStartOf="@id/timestamp"
+        />
+
         <DateTimeView
             android:id="@+id/timestamp"
             android:layout_width="wrap_content"
diff --git a/src/com/android/settings/notification/NotificationStation.java b/src/com/android/settings/notification/NotificationStation.java
index e5db3ee..c2c8b60 100644
--- a/src/com/android/settings/notification/NotificationStation.java
+++ b/src/com/android/settings/notification/NotificationStation.java
@@ -83,6 +83,7 @@
         public Drawable pkgicon;
         public CharSequence pkgname;
         public Drawable icon;
+        public boolean badged;
         public CharSequence title;
         public CharSequence text;
         public int priority;
@@ -268,8 +269,8 @@
         if (needsAdd) {
             mNotificationInfos.addFirst(newInfo);
             getPreferenceScreen().addPreference(new HistoricalNotificationPreference(
-                    getPrefContext(),
-                    mNotificationInfos.peekFirst(), -1 * mNotificationInfos.size()));
+                    getPrefContext(), mNotificationInfos.peekFirst(),
+                    -1 * mNotificationInfos.size()));
         }
     }
 
@@ -338,9 +339,9 @@
         return text == null ? null : String.valueOf(text);
     }
 
-    private static Drawable loadIcon(Context context, StatusBarNotification sbn) {
+    private Drawable loadIcon(HistoricalNotificationInfo info, StatusBarNotification sbn) {
         Drawable draw = sbn.getNotification().getSmallIcon().loadDrawableAsUser(
-                sbn.getPackageContext(context), sbn.getUserId());
+                sbn.getPackageContext(mContext), info.user);
         if (draw == null) {
             return null;
         }
@@ -367,7 +368,6 @@
      * booted), stores the data we need to present them, and sorts them chronologically for display.
      */
     private void loadNotifications() {
-        final int currentUserId = ActivityManager.getCurrentUser();
         try {
             StatusBarNotification[] active = mNoMan.getActiveNotifications(
                     mContext.getPackageName());
@@ -380,9 +380,6 @@
             for (StatusBarNotification[] resultSet
                     : new StatusBarNotification[][] { active, dismissed }) {
                 for (StatusBarNotification sbn : resultSet) {
-                    if (sbn.getUserId() != UserHandle.USER_ALL & sbn.getUserId() != currentUserId) {
-                        continue;
-                    }
                     if (sbn.getNotification().isGroupSummary()) {
                         continue;
                     }
@@ -406,8 +403,10 @@
         final Notification n = sbn.getNotification();
         final HistoricalNotificationInfo info = new HistoricalNotificationInfo();
         info.pkg = sbn.getPackageName();
-        info.user = sbn.getUserId();
-        info.icon = loadIcon(mContext, sbn);
+        info.user = sbn.getUserId() == UserHandle.USER_ALL
+                ? UserHandle.USER_SYSTEM : sbn.getUserId();
+        info.badged = info.user != ActivityManager.getCurrentUser();
+        info.icon = loadIcon(info, sbn);
         if (info.icon == null) {
             info.icon = loadPackageIconDrawable(info.pkg, info.user);
         }
@@ -645,6 +644,7 @@
         private final HistoricalNotificationInfo mInfo;
         private static long sLastExpandedTimestamp; // quick hack to keep things from collapsing
         public ViewGroup mItemView; // hack to update prefs fast;
+        private Context mContext;
 
         public HistoricalNotificationPreference(Context context, HistoricalNotificationInfo info,
                 int order) {
@@ -653,6 +653,7 @@
             setOrder(order);
             setKey(info.key);
             mInfo = info;
+            mContext = context;
         }
 
         @Override
@@ -697,6 +698,12 @@
                 ((ImageView) mItemView.findViewById(R.id.icon)).setImageDrawable(info.icon);
             }
 
+            ImageView profileBadge = mItemView.findViewById(R.id.profile_badge);
+            Drawable profile = mContext.getPackageManager().getUserBadgeForDensity(
+                    UserHandle.of(info.user), -1);
+            profileBadge.setImageDrawable(profile);
+            profileBadge.setVisibility(info.badged ? View.VISIBLE : View.GONE);
+
             ((DateTimeView) mItemView.findViewById(R.id.timestamp)).setTime(mInfo.timestamp);
 
             ((TextView) mItemView.findViewById(R.id.notification_extra))