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

Commit 6921204b authored by Matías Hernández's avatar Matías Hernández Committed by Android (Google) Code Review
Browse files

Merge "Remove setAutomaticZenRuleState(boolean fromUser) overload" into main

parents 36016082 274e3664
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -222,7 +222,7 @@ interface INotificationManager
    boolean removeAutomaticZenRule(String id, boolean fromUser);
    boolean removeAutomaticZenRules(String packageName, boolean fromUser);
    int getRuleInstanceCount(in ComponentName owner);
    void setAutomaticZenRuleState(String id, in Condition condition, boolean fromUser);
    void setAutomaticZenRuleState(String id, in Condition condition);

    byte[] getBackupPayload(int user);
    void applyRestore(in byte[] payload, int user);
+1 −12
Original line number Diff line number Diff line
@@ -1391,20 +1391,9 @@ public class NotificationManager {
     * @param condition The new state of this rule
     */
    public void setAutomaticZenRuleState(@NonNull String id, @NonNull Condition condition) {
        if (Flags.modesApi()) {
            setAutomaticZenRuleState(id, condition,
                    /* fromUser= */ condition.source == Condition.SOURCE_USER_ACTION);
        } else {
            setAutomaticZenRuleState(id, condition, /* fromUser= */ false);
        }
    }

    /** @hide */
    public void setAutomaticZenRuleState(@NonNull String id, @NonNull Condition condition,
            boolean fromUser) {
        INotificationManager service = getService();
        try {
            service.setAutomaticZenRuleState(id, condition, fromUser);
            service.setAutomaticZenRuleState(id, condition);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
+3 −10
Original line number Diff line number Diff line
@@ -5472,20 +5472,13 @@ public class NotificationManagerService extends SystemService {
        }
        @Override
        public void setAutomaticZenRuleState(String id, Condition condition, boolean fromUser) {
        public void setAutomaticZenRuleState(String id, Condition condition) {
            Objects.requireNonNull(id, "id is null");
            Objects.requireNonNull(condition, "Condition is null");
            condition.validate();
            enforcePolicyAccess(Binder.getCallingUid(), "setAutomaticZenRuleState");
            if (android.app.Flags.modesApi()) {
                if (fromUser != (condition.source == Condition.SOURCE_USER_ACTION)) {
                    throw new IllegalArgumentException(String.format(
                            "Mismatch between fromUser (%s) and condition.source (%s)",
                            fromUser, Condition.sourceToString(condition.source)));
                }
            }
            boolean fromUser = (condition.source == Condition.SOURCE_USER_ACTION);
            mZenModeHelper.setAutomaticZenRuleState(id, condition, computeZenOrigin(fromUser),
                    Binder.getCallingUid());
@@ -5508,7 +5501,7 @@ public class NotificationManagerService extends SystemService {
            if (android.app.Flags.modesApi()
                    && fromUser
                    && !isCallerSystemOrSystemUiOrShell()) {
                throw new SecurityException(String.format(
                throw new SecurityException(TextUtils.formatSimple(
                        "Calling %s with fromUser == true is only allowed for system", method));
            }
        }
+22 −17
Original line number Diff line number Diff line
@@ -9258,41 +9258,46 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
    @Test
    @EnableFlags(android.app.Flags.FLAG_MODES_API)
    public void setAutomaticZenRuleState_fromUserMatchesConditionSource_okay() throws Exception {
    public void setAutomaticZenRuleState_conditionFromUser_mappedToOriginUser() throws Exception {
        ZenModeHelper zenModeHelper = setUpMockZenTest();
        mService.setCallerIsNormalPackage();
        Condition withSourceContext = new Condition(Uri.parse("uri"), "summary", STATE_TRUE,
                SOURCE_CONTEXT);
        mBinderService.setAutomaticZenRuleState("id", withSourceContext, /* fromUser= */ false);
        verify(zenModeHelper).setAutomaticZenRuleState(eq("id"), eq(withSourceContext),
                eq(ZenModeConfig.UPDATE_ORIGIN_APP), anyInt());
        Condition withSourceUser = new Condition(Uri.parse("uri"), "summary", STATE_TRUE,
                SOURCE_USER_ACTION);
        mBinderService.setAutomaticZenRuleState("id", withSourceUser, /* fromUser= */ true);
        mBinderService.setAutomaticZenRuleState("id", withSourceUser);
        verify(zenModeHelper).setAutomaticZenRuleState(eq("id"), eq(withSourceUser),
                eq(ZenModeConfig.UPDATE_ORIGIN_USER), anyInt());
    }
    @Test
    @EnableFlags(android.app.Flags.FLAG_MODES_API)
    public void setAutomaticZenRuleState_fromUserDoesNotMatchConditionSource_blocked()
    public void setAutomaticZenRuleState_fromAppWithConditionNotFromUser_mappedToOriginApp()
            throws Exception {
        ZenModeHelper zenModeHelper = setUpMockZenTest();
        mService.setCallerIsNormalPackage();
        Condition withSourceContext = new Condition(Uri.parse("uri"), "summary", STATE_TRUE,
                SOURCE_CONTEXT);
        assertThrows(IllegalArgumentException.class,
                () -> mBinderService.setAutomaticZenRuleState("id", withSourceContext,
                        /* fromUser= */ true));
        mBinderService.setAutomaticZenRuleState("id", withSourceContext);
        Condition withSourceUser = new Condition(Uri.parse("uri"), "summary", STATE_TRUE,
                SOURCE_USER_ACTION);
        assertThrows(IllegalArgumentException.class,
                () -> mBinderService.setAutomaticZenRuleState("id", withSourceUser,
                        /* fromUser= */ false));
        verify(zenModeHelper).setAutomaticZenRuleState(eq("id"), eq(withSourceContext),
                eq(ZenModeConfig.UPDATE_ORIGIN_APP), anyInt());
    }
    @Test
    @EnableFlags(android.app.Flags.FLAG_MODES_API)
    public void setAutomaticZenRuleState_fromSystemWithConditionNotFromUser_mappedToOriginSystem()
            throws Exception {
        ZenModeHelper zenModeHelper = setUpMockZenTest();
        mService.isSystemUid = true;
        Condition withSourceContext = new Condition(Uri.parse("uri"), "summary", STATE_TRUE,
                SOURCE_CONTEXT);
        mBinderService.setAutomaticZenRuleState("id", withSourceContext);
        verify(zenModeHelper).setAutomaticZenRuleState(eq("id"), eq(withSourceContext),
                eq(ZenModeConfig.UPDATE_ORIGIN_SYSTEM_OR_SYSTEMUI), anyInt());
    }
    private ZenModeHelper setUpMockZenTest() {