Loading core/java/android/app/INotificationManager.aidl +1 −0 Original line number Original line Diff line number Diff line Loading @@ -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); Loading services/core/java/com/android/server/notification/NotificationManagerService.java +16 −0 Original line number Original line Diff line number Diff line Loading @@ -4564,6 +4564,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(); Loading Loading @@ -12283,6 +12289,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) { services/tests/uiservicestests/src/com/android/server/notification/NotificationAssistantsTest.java +8 −0 Original line number Original line Diff line number Diff line Loading @@ -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 Loading @@ -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); Loading @@ -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 Loading Loading
core/java/android/app/INotificationManager.aidl +1 −0 Original line number Original line Diff line number Diff line Loading @@ -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); Loading
services/core/java/com/android/server/notification/NotificationManagerService.java +16 −0 Original line number Original line Diff line number Diff line Loading @@ -4564,6 +4564,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(); Loading Loading @@ -12283,6 +12289,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) {
services/tests/uiservicestests/src/com/android/server/notification/NotificationAssistantsTest.java +8 −0 Original line number Original line Diff line number Diff line Loading @@ -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 Loading @@ -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); Loading @@ -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 Loading