Merge "Add data collection and metrics for Media Output Switcher - 2/n" into rvc-dev
diff --git a/src/com/android/settings/homepage/contextualcards/slices/BluetoothDevicesSlice.java b/src/com/android/settings/homepage/contextualcards/slices/BluetoothDevicesSlice.java
index 79be26d..8b74313 100644
--- a/src/com/android/settings/homepage/contextualcards/slices/BluetoothDevicesSlice.java
+++ b/src/com/android/settings/homepage/contextualcards/slices/BluetoothDevicesSlice.java
@@ -294,10 +294,15 @@
         final List<ListBuilder.RowBuilder> bluetoothRows = new ArrayList<>();
         // Create row builders based on paired devices.
         for (CachedBluetoothDevice device : getPairedBluetoothDevices()) {
+            String summary = device.getConnectionSummary();
+            if (summary == null) {
+                summary = mContext.getString(
+                        R.string.connected_device_previously_connected_screen_title);
+            }
             final ListBuilder.RowBuilder rowBuilder = new ListBuilder.RowBuilder()
                     .setTitleItem(getBluetoothDeviceIcon(device), ListBuilder.ICON_IMAGE)
                     .setTitle(device.getName())
-                    .setSubtitle(device.getConnectionSummary());
+                    .setSubtitle(summary);
 
             if (mAvailableMediaBtDeviceUpdater.isFilterMatched(device)
                     || mSavedBtDeviceUpdater.isFilterMatched(device)) {
diff --git a/src/com/android/settings/notification/history/NotificationHistoryActivity.java b/src/com/android/settings/notification/history/NotificationHistoryActivity.java
index 8b4bc9d..ab0a8d7 100644
--- a/src/com/android/settings/notification/history/NotificationHistoryActivity.java
+++ b/src/com/android/settings/notification/history/NotificationHistoryActivity.java
@@ -265,7 +265,7 @@
             LinearLayoutManager lm = new LinearLayoutManager(NotificationHistoryActivity.this);
             mSnoozedRv.setLayoutManager(lm);
             mSnoozedRv.setAdapter(
-                    new NotificationSbnAdapter(NotificationHistoryActivity.this, mPm));
+                    new NotificationSbnAdapter(NotificationHistoryActivity.this, mPm, mUm));
             mSnoozedRv.setNestedScrollingEnabled(false);
 
             if (snoozed == null || snoozed.length == 0) {
@@ -280,7 +280,7 @@
                 new LinearLayoutManager(NotificationHistoryActivity.this);
             mDismissedRv.setLayoutManager(dismissLm);
             mDismissedRv.setAdapter(
-                new NotificationSbnAdapter(NotificationHistoryActivity.this, mPm));
+                new NotificationSbnAdapter(NotificationHistoryActivity.this, mPm, mUm));
             mDismissedRv.setNestedScrollingEnabled(false);
 
             if (dismissed == null || dismissed.length == 0) {
diff --git a/src/com/android/settings/notification/history/NotificationSbnAdapter.java b/src/com/android/settings/notification/history/NotificationSbnAdapter.java
index 5d4e716..27ecabd 100644
--- a/src/com/android/settings/notification/history/NotificationSbnAdapter.java
+++ b/src/com/android/settings/notification/history/NotificationSbnAdapter.java
@@ -32,6 +32,7 @@
 import android.graphics.PorterDuff;
 import android.graphics.drawable.Drawable;
 import android.os.UserHandle;
+import android.os.UserManager;
 import android.service.notification.StatusBarNotification;
 import android.text.TextUtils;
 import android.util.Log;
@@ -47,6 +48,7 @@
 import com.android.settings.R;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -62,8 +64,9 @@
     private @ColorInt int mBackgroundColor;
     private boolean mInNightMode;
     private @UserIdInt int mCurrentUser;
+    private List<Integer> mEnabledProfiles = new ArrayList<>();
 
-    public NotificationSbnAdapter(Context context, PackageManager pm) {
+    public NotificationSbnAdapter(Context context, PackageManager pm, UserManager um) {
         mContext = context;
         mPm = pm;
         mUserBadgeCache = new HashMap<>();
@@ -74,6 +77,12 @@
         mInNightMode = (currentConfig.uiMode & Configuration.UI_MODE_NIGHT_MASK)
                 == Configuration.UI_MODE_NIGHT_YES;
         mCurrentUser = ActivityManager.getCurrentUser();
+        int[] enabledUsers = um.getEnabledProfileIds(mCurrentUser);
+        for (int id : enabledUsers) {
+            if (!um.isQuietModeEnabled(UserHandle.of(id))) {
+                mEnabledProfiles.add(id);
+            }
+        }
         setHasStableIds(true);
     }
 
@@ -115,10 +124,9 @@
     }
 
     public void onRebuildComplete(List<StatusBarNotification> notifications) {
-        // summaries are low content; don't bother showing them
         for (int i = notifications.size() - 1; i >= 0; i--) {
             StatusBarNotification sbn = notifications.get(i);
-            if (sbn.isGroup() && sbn.getNotification().isGroupSummary()) {
+            if (!shouldShowSbn(sbn)) {
                 notifications.remove(i);
             }
         }
@@ -127,13 +135,25 @@
     }
 
     public void addSbn(StatusBarNotification sbn) {
-        if (sbn.isGroup() && sbn.getNotification().isGroupSummary()) {
+        if (!shouldShowSbn(sbn)) {
             return;
         }
         mValues.add(0, sbn);
         notifyDataSetChanged();
     }
 
+    private boolean shouldShowSbn(StatusBarNotification sbn) {
+        // summaries are low content; don't bother showing them
+        if (sbn.isGroup() && sbn.getNotification().isGroupSummary()) {
+            return false;
+        }
+        // also don't show profile notifications if the profile is currently disabled
+        if (!mEnabledProfiles.contains(normalizeUserId(sbn))) {
+            return false;
+        }
+        return true;
+    }
+
     private @NonNull CharSequence loadPackageLabel(String pkg) {
         try {
             ApplicationInfo info = mPm.getApplicationInfo(pkg,