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

Commit 44e1baba authored by Yuri Lin's avatar Yuri Lin
Browse files

Fix ZenPolicy -> NotificationManager.Policy for conversations setting.

Unlike the priority senders (for messages and calls), the conversations setting uses the same enum in both ZenPolicy and NotificationManager.Policy, so the extraneous call to getNotificationPolicySenders resulted in an incorrect value in conversion.

Bug: 197223270
Test: atest ZenModeConfigTest

Change-Id: Ifa135ba9869ae1a2d3bffe5ec40f411eee197d7e
parent 4433d796
Loading
Loading
Loading
Loading
+15 −4
Original line number Diff line number Diff line
@@ -1051,9 +1051,8 @@ public class ZenModeConfig implements Parcelable {
        if (zenPolicy.isCategoryAllowed(ZenPolicy.PRIORITY_CATEGORY_CONVERSATIONS,
                isPriorityCategoryEnabled(Policy.PRIORITY_CATEGORY_CONVERSATIONS, defaultPolicy))) {
            priorityCategories |= Policy.PRIORITY_CATEGORY_CONVERSATIONS;
            conversationSenders = getNotificationPolicySenders(
                    zenPolicy.getPriorityConversationSenders(),
                    conversationSenders);
            conversationSenders = getConversationSendersWithDefault(
                    zenPolicy.getPriorityConversationSenders(), conversationSenders);
        }

        if (zenPolicy.isCategoryAllowed(ZenPolicy.PRIORITY_CATEGORY_CALLS,
@@ -1166,6 +1165,17 @@ public class ZenModeConfig implements Parcelable {
        }
    }

    private int getConversationSendersWithDefault(@ZenPolicy.ConversationSenders int senders,
            int defaultPolicySender) {
        switch (senders) {
            case ZenPolicy.CONVERSATION_SENDERS_ANYONE:
            case ZenPolicy.CONVERSATION_SENDERS_IMPORTANT:
            case ZenPolicy.CONVERSATION_SENDERS_NONE:
                return senders;
            default:
                return defaultPolicySender;
        }
    }

    /**
     * Maps NotificationManager.Policy senders type to ZenPolicy.PeopleType
@@ -1216,7 +1226,8 @@ public class ZenModeConfig implements Parcelable {
        }
        priorityCallSenders = sourceToPrioritySenders(allowCallsFrom, priorityCallSenders);
        priorityMessageSenders = sourceToPrioritySenders(allowMessagesFrom, priorityMessageSenders);
        priorityConversationSenders = allowConversationsFrom;
        priorityConversationSenders = getConversationSendersWithDefault(
                allowConversationsFrom, priorityConversationSenders);

        return new Policy(priorityCategories, priorityCallSenders, priorityMessageSenders,
                suppressedVisualEffects, areChannelsBypassingDnd
+7 −5
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package com.android.server.notification;

import static android.service.notification.ZenPolicy.CONVERSATION_SENDERS_IMPORTANT;

import static junit.framework.TestCase.assertEquals;
import static junit.framework.TestCase.assertFalse;
import static junit.framework.TestCase.assertNull;
@@ -36,13 +38,10 @@ import android.util.Xml;

import androidx.test.runner.AndroidJUnit4;

import com.android.internal.util.FastXmlSerializer;
import com.android.server.UiServiceTestCase;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlSerializer;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
@@ -81,10 +80,12 @@ public class ZenModeConfigTest extends UiServiceTestCase {
        ZenModeConfig config = getMutedAllConfig();
        config.suppressedVisualEffects |= Policy.SUPPRESSED_EFFECT_BADGE;

        // Explicitly allow conversations from priority senders to make sure that goes through
        ZenPolicy zenPolicy = new ZenPolicy.Builder()
                .allowAlarms(true)
                .allowReminders(true)
                .allowEvents(true)
                .allowConversations(CONVERSATION_SENDERS_IMPORTANT)
                .showLights(false)
                .showInAmbientDisplay(false)
                .build();
@@ -93,11 +94,12 @@ public class ZenModeConfigTest extends UiServiceTestCase {
        int priorityCategories = originalPolicy.priorityCategories;
        int priorityCallSenders = originalPolicy.priorityCallSenders;
        int priorityMessageSenders = originalPolicy.priorityMessageSenders;
        int priorityConversationsSenders = originalPolicy.priorityConversationSenders;
        int priorityConversationsSenders = CONVERSATION_SENDERS_IMPORTANT;
        int suppressedVisualEffects = originalPolicy.suppressedVisualEffects;
        priorityCategories |= Policy.PRIORITY_CATEGORY_ALARMS;
        priorityCategories |= Policy.PRIORITY_CATEGORY_REMINDERS;
        priorityCategories |= Policy.PRIORITY_CATEGORY_EVENTS;
        priorityCategories |= Policy.PRIORITY_CATEGORY_CONVERSATIONS;
        suppressedVisualEffects |= Policy.SUPPRESSED_EFFECT_LIGHTS;
        suppressedVisualEffects |= Policy.SUPPRESSED_EFFECT_AMBIENT;

@@ -344,7 +346,7 @@ public class ZenModeConfigTest extends UiServiceTestCase {
        config.allowCallsFrom = ZenModeConfig.SOURCE_ANYONE;
        config.allowMessagesFrom = ZenModeConfig.SOURCE_ANYONE;
        config.allowConversations = true;
        config.allowConversationsFrom = ZenPolicy.CONVERSATION_SENDERS_IMPORTANT;
        config.allowConversationsFrom = CONVERSATION_SENDERS_IMPORTANT;

        config.suppressedVisualEffects = 0;
        return config;