Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3189599a authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Filter conversation list by current users" into rvc-qpr-dev am: 9bf2c7aa

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/13161833

Change-Id: I28573ebea4ce03e8f6b7863b428c8bb6ebf73279
parents e64fc22b 9bf2c7aa
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -3534,8 +3534,9 @@ public class NotificationManagerService extends SystemService {
        public ParceledListSlice<ConversationChannelWrapper> getConversations(
                boolean onlyImportant) {
            enforceSystemOrSystemUI("getConversations");
            IntArray userIds = mUserProfiles.getCurrentProfileIds();
            ArrayList<ConversationChannelWrapper> conversations =
                    mPreferencesHelper.getConversations(onlyImportant);
                    mPreferencesHelper.getConversations(userIds, onlyImportant);
            for (ConversationChannelWrapper conversation : conversations) {
                if (mShortcutHelper == null) {
                    conversation.setShortcutInfo(null);
+29 −25
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@ import android.service.notification.RankingHelperProto;
import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.IntArray;
import android.util.Pair;
import android.util.Slog;
import android.util.SparseBooleanArray;
@@ -1348,18 +1349,20 @@ public class PreferencesHelper implements RankingConfig {
        return groups;
    }

    public ArrayList<ConversationChannelWrapper> getConversations(boolean onlyImportant) {
    public ArrayList<ConversationChannelWrapper> getConversations(IntArray userIds,
            boolean onlyImportant) {
        synchronized (mPackagePreferences) {
            ArrayList<ConversationChannelWrapper> conversations = new ArrayList<>();

            for (PackagePreferences p : mPackagePreferences.values()) {
                if (userIds.binarySearch(UserHandle.getUserId(p.uid)) >= 0) {
                    int N = p.channels.size();
                    for (int i = 0; i < N; i++) {
                        final NotificationChannel nc = p.channels.valueAt(i);
                        if (!TextUtils.isEmpty(nc.getConversationId()) && !nc.isDeleted()
                                && !nc.isDemoted()
                                && (nc.isImportantConversation() || !onlyImportant)) {
                        ConversationChannelWrapper conversation = new ConversationChannelWrapper();
                            ConversationChannelWrapper conversation =
                                    new ConversationChannelWrapper();
                            conversation.setPkg(p.pkg);
                            conversation.setUid(p.uid);
                            conversation.setNotificationChannel(nc);
@@ -1382,6 +1385,7 @@ public class PreferencesHelper implements RankingConfig {
                        }
                    }
                }
            }

            return conversations;
        }
+45 −3
Original line number Diff line number Diff line
@@ -96,6 +96,7 @@ import android.test.suitebuilder.annotation.SmallTest;
import android.testing.TestableContentResolver;
import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.IntArray;
import android.util.Pair;
import android.util.StatsEvent;
import android.util.Xml;
@@ -3284,7 +3285,8 @@ public class PreferencesHelperTest extends UiServiceTestCase {
        channel2.setImportantConversation(true);
        mHelper.createNotificationChannel(PKG_O, UID_O, channel2, true, false);

        List<ConversationChannelWrapper> convos = mHelper.getConversations(false);
        List<ConversationChannelWrapper> convos =
                mHelper.getConversations(IntArray.wrap(new int[] {0}), false);

        assertEquals(3, convos.size());
        assertTrue(conversationWrapperContainsChannel(convos, channel));
@@ -3292,6 +3294,44 @@ public class PreferencesHelperTest extends UiServiceTestCase {
        assertTrue(conversationWrapperContainsChannel(convos, channel2));
    }

    @Test
    public void testGetConversations_multiUser() {
        String convoId = "convo";
        NotificationChannel messages =
                new NotificationChannel("messages", "Messages", IMPORTANCE_DEFAULT);
        mHelper.createNotificationChannel(PKG_O, UID_O, messages, true, false);

        NotificationChannel messagesUser10 =
                new NotificationChannel("messages", "Messages", IMPORTANCE_DEFAULT);
        mHelper.createNotificationChannel(
                PKG_O, UID_O + UserHandle.PER_USER_RANGE, messagesUser10, true, false);

        NotificationChannel messagesFromB =
                new NotificationChannel("B person msgs", "messages from B", IMPORTANCE_DEFAULT);
        messagesFromB.setConversationId(messages.getId(), "different convo");
        mHelper.createNotificationChannel(PKG_O, UID_O, messagesFromB, true, false);

        NotificationChannel messagesFromBUser10 =
                new NotificationChannel("B person msgs", "messages from B", IMPORTANCE_DEFAULT);
        messagesFromBUser10.setConversationId(messagesUser10.getId(), "different convo");
        mHelper.createNotificationChannel(
                PKG_O, UID_O + UserHandle.PER_USER_RANGE, messagesFromBUser10, true, false);


        List<ConversationChannelWrapper> convos =
                mHelper.getConversations(IntArray.wrap(new int[] {0}), false);

        assertEquals(1, convos.size());
        assertTrue(conversationWrapperContainsChannel(convos, messagesFromB));

        convos =
                mHelper.getConversations(IntArray.wrap(new int[] {0, UserHandle.getUserId(UID_O + UserHandle.PER_USER_RANGE)}), false);

        assertEquals(2, convos.size());
        assertTrue(conversationWrapperContainsChannel(convos, messagesFromB));
        assertTrue(conversationWrapperContainsChannel(convos, messagesFromBUser10));
    }

    @Test
    public void testGetConversations_notDemoted() {
        String convoId = "convo";
@@ -3322,7 +3362,8 @@ public class PreferencesHelperTest extends UiServiceTestCase {
        channel2.setImportantConversation(true);
        mHelper.createNotificationChannel(PKG_O, UID_O, channel2, true, false);

        List<ConversationChannelWrapper> convos = mHelper.getConversations(false);
        List<ConversationChannelWrapper> convos =
                mHelper.getConversations(IntArray.wrap(new int[] {0}), false);

        assertEquals(2, convos.size());
        assertTrue(conversationWrapperContainsChannel(convos, channel));
@@ -3360,7 +3401,8 @@ public class PreferencesHelperTest extends UiServiceTestCase {
        channel2.setConversationId(calls.getId(), convoId);
        mHelper.createNotificationChannel(PKG_O, UID_O, channel2, true, false);

        List<ConversationChannelWrapper> convos = mHelper.getConversations(true);
        List<ConversationChannelWrapper> convos =
                mHelper.getConversations(IntArray.wrap(new int[] {0}), true);

        assertEquals(2, convos.size());
        assertTrue(conversationWrapperContainsChannel(convos, channel));