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

Commit d2514f7c authored by Julia Reynolds's avatar Julia Reynolds
Browse files

Add full list api

To minimize binder calls

Test: NotificationAssistantsTest
Flag: android.app.nm_summarization
Bug: 377697346
Change-Id: I0f7140c5bc394308e7a316750cce30f610e5eb0c
parent 769d0736
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -270,6 +270,7 @@ interface INotificationManager


    int[] getAllowedAdjustmentKeyTypes();
    int[] getAllowedAdjustmentKeyTypes();
    void setAssistantAdjustmentKeyTypeState(int type, boolean enabled);
    void setAssistantAdjustmentKeyTypeState(int type, boolean enabled);
    String[] getAdjustmentDeniedPackages(String key);
    boolean isAdjustmentSupportedForPackage(String key, String pkg);
    boolean isAdjustmentSupportedForPackage(String key, String pkg);
    void setAdjustmentSupportedForPackage(String key, String pkg, boolean enabled);
    void setAdjustmentSupportedForPackage(String key, String pkg, boolean enabled);


+16 −0
Original line number Original line Diff line number Diff line
@@ -4558,6 +4558,12 @@ public class NotificationManagerService extends SystemService {
            handleSavePolicyFile();
            handleSavePolicyFile();
        }
        }
        @Override
        public String[] getAdjustmentDeniedPackages(String key) {
            checkCallerIsSystemOrSystemUiOrShell();
            return mAssistants.getAdjustmentDeniedPackages(key);
        }
        @Override
        @Override
        public boolean isAdjustmentSupportedForPackage(String key, String pkg) {
        public boolean isAdjustmentSupportedForPackage(String key, String pkg) {
            checkCallerIsSystemOrSystemUiOrShell();
            checkCallerIsSystemOrSystemUiOrShell();
@@ -12275,6 +12281,16 @@ public class NotificationManagerService extends SystemService {
            }
            }
        }
        }
        protected @NonNull String[] getAdjustmentDeniedPackages(@Adjustment.Keys String key) {
            synchronized (mLock) {
                if (notificationClassificationUi() || nmSummarization() | nmSummarizationUi()) {
                    return mAdjustmentKeyDeniedPackages.getOrDefault(
                            key, new ArraySet<>()).toArray(new String[0]);
                }
            }
            return new String[]{};
        }
        protected @NonNull boolean isAdjustmentAllowedForPackage(@Adjustment.Keys String key,
        protected @NonNull boolean isAdjustmentAllowedForPackage(@Adjustment.Keys String key,
                String pkg) {
                String pkg) {
            synchronized (mLock) {
            synchronized (mLock) {
+8 −0
Original line number Original line Diff line number Diff line
@@ -757,18 +757,22 @@ public class NotificationAssistantsTest extends UiServiceTestCase {
        String allowedPackage = "allowed.package";
        String allowedPackage = "allowed.package";


        assertThat(mAssistants.isAdjustmentAllowedForPackage(key, allowedPackage)).isTrue();
        assertThat(mAssistants.isAdjustmentAllowedForPackage(key, allowedPackage)).isTrue();
        assertThat(mAssistants.getAdjustmentDeniedPackages(key)).isEmpty();


        // Set type adjustment disallowed for this package
        // Set type adjustment disallowed for this package
        mAssistants.setAdjustmentSupportedForPackage(key, allowedPackage, false);
        mAssistants.setAdjustmentSupportedForPackage(key, allowedPackage, false);


        // Then the package is marked as denied
        // Then the package is marked as denied
        assertThat(mAssistants.isAdjustmentAllowedForPackage(key, allowedPackage)).isFalse();
        assertThat(mAssistants.isAdjustmentAllowedForPackage(key, allowedPackage)).isFalse();
        assertThat(mAssistants.getAdjustmentDeniedPackages(key)).asList()
                .containsExactly(allowedPackage);


        // Set type adjustment allowed again
        // Set type adjustment allowed again
        mAssistants.setAdjustmentSupportedForPackage(key, allowedPackage, true);
        mAssistants.setAdjustmentSupportedForPackage(key, allowedPackage, true);


        // Then the package is marked as allowed again
        // Then the package is marked as allowed again
        assertThat(mAssistants.isAdjustmentAllowedForPackage(key, allowedPackage)).isTrue();
        assertThat(mAssistants.isAdjustmentAllowedForPackage(key, allowedPackage)).isTrue();
        assertThat(mAssistants.getAdjustmentDeniedPackages(key)).isEmpty();
    }
    }


    @Test
    @Test
@@ -789,6 +793,8 @@ public class NotificationAssistantsTest extends UiServiceTestCase {
        assertThat(mAssistants.isAdjustmentAllowedForPackage(key, deniedPkg1)).isFalse();
        assertThat(mAssistants.isAdjustmentAllowedForPackage(key, deniedPkg1)).isFalse();
        assertThat(mAssistants.isAdjustmentAllowedForPackage(key, deniedPkg2)).isFalse();
        assertThat(mAssistants.isAdjustmentAllowedForPackage(key, deniedPkg2)).isFalse();
        assertThat(mAssistants.isAdjustmentAllowedForPackage(key, deniedPkg3)).isFalse();
        assertThat(mAssistants.isAdjustmentAllowedForPackage(key, deniedPkg3)).isFalse();
        assertThat(mAssistants.getAdjustmentDeniedPackages(key)).asList()
                .containsExactlyElementsIn(List.of(deniedPkg1, deniedPkg2, deniedPkg3));


        // And when we re-allow one of them,
        // And when we re-allow one of them,
        mAssistants.setAdjustmentSupportedForPackage(key, deniedPkg2, true);
        mAssistants.setAdjustmentSupportedForPackage(key, deniedPkg2, true);
@@ -797,6 +803,8 @@ public class NotificationAssistantsTest extends UiServiceTestCase {
        assertThat(mAssistants.isAdjustmentAllowedForPackage(key, deniedPkg1)).isFalse();
        assertThat(mAssistants.isAdjustmentAllowedForPackage(key, deniedPkg1)).isFalse();
        assertThat(mAssistants.isAdjustmentAllowedForPackage(key, deniedPkg2)).isTrue();
        assertThat(mAssistants.isAdjustmentAllowedForPackage(key, deniedPkg2)).isTrue();
        assertThat(mAssistants.isAdjustmentAllowedForPackage(key, deniedPkg3)).isFalse();
        assertThat(mAssistants.isAdjustmentAllowedForPackage(key, deniedPkg3)).isFalse();
        assertThat(mAssistants.getAdjustmentDeniedPackages(key)).asList()
                .containsExactlyElementsIn(List.of(deniedPkg1, deniedPkg3));
    }
    }


    @Test
    @Test