Loading services/core/java/com/android/server/notification/NotificationManagerService.java +10 −1 Original line number Original line Diff line number Diff line Loading @@ -4891,7 +4891,16 @@ public class NotificationManagerService extends SystemService { } } enforcePolicyAccess(Binder.getCallingUid(), "addAutomaticZenRule"); enforcePolicyAccess(Binder.getCallingUid(), "addAutomaticZenRule"); return mZenModeHelper.addAutomaticZenRule(pkg, automaticZenRule, // If the caller is system, take the package name from the rule's owner rather than // from the caller's package. String rulePkg = pkg; if (isCallingUidSystem()) { if (automaticZenRule.getOwner() != null) { rulePkg = automaticZenRule.getOwner().getPackageName(); } } return mZenModeHelper.addAutomaticZenRule(rulePkg, automaticZenRule, "addAutomaticZenRule"); "addAutomaticZenRule"); } } Loading services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java +37 −0 Original line number Original line Diff line number Diff line Loading @@ -6656,6 +6656,43 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { mBinderService.addAutomaticZenRule(rule, mContext.getPackageName()); mBinderService.addAutomaticZenRule(rule, mContext.getPackageName()); } } @Test public void testAddAutomaticZenRule_systemCallTakesPackageFromOwner() throws Exception { mService.isSystemUid = true; ZenModeHelper mockZenModeHelper = mock(ZenModeHelper.class); when(mConditionProviders.isPackageOrComponentAllowed(anyString(), anyInt())) .thenReturn(true); mService.setZenHelper(mockZenModeHelper); ComponentName owner = new ComponentName("android", "ProviderName"); ZenPolicy zenPolicy = new ZenPolicy.Builder().allowAlarms(true).build(); boolean isEnabled = true; AutomaticZenRule rule = new AutomaticZenRule("test", owner, owner, mock(Uri.class), zenPolicy, NotificationManager.INTERRUPTION_FILTER_PRIORITY, isEnabled); mBinderService.addAutomaticZenRule(rule, "com.android.settings"); // verify that zen mode helper gets passed in a package name of "android" verify(mockZenModeHelper).addAutomaticZenRule(eq("android"), eq(rule), anyString()); } @Test public void testAddAutomaticZenRule_nonSystemCallTakesPackageFromArg() throws Exception { mService.isSystemUid = false; ZenModeHelper mockZenModeHelper = mock(ZenModeHelper.class); when(mConditionProviders.isPackageOrComponentAllowed(anyString(), anyInt())) .thenReturn(true); mService.setZenHelper(mockZenModeHelper); ComponentName owner = new ComponentName("android", "ProviderName"); ZenPolicy zenPolicy = new ZenPolicy.Builder().allowAlarms(true).build(); boolean isEnabled = true; AutomaticZenRule rule = new AutomaticZenRule("test", owner, owner, mock(Uri.class), zenPolicy, NotificationManager.INTERRUPTION_FILTER_PRIORITY, isEnabled); mBinderService.addAutomaticZenRule(rule, "another.package"); // verify that zen mode helper gets passed in the package name from the arg, not the owner verify(mockZenModeHelper).addAutomaticZenRule( eq("another.package"), eq(rule), anyString()); } @Test @Test public void testAreNotificationsEnabledForPackage_crossUser() throws Exception { public void testAreNotificationsEnabledForPackage_crossUser() throws Exception { try { try { Loading Loading
services/core/java/com/android/server/notification/NotificationManagerService.java +10 −1 Original line number Original line Diff line number Diff line Loading @@ -4891,7 +4891,16 @@ public class NotificationManagerService extends SystemService { } } enforcePolicyAccess(Binder.getCallingUid(), "addAutomaticZenRule"); enforcePolicyAccess(Binder.getCallingUid(), "addAutomaticZenRule"); return mZenModeHelper.addAutomaticZenRule(pkg, automaticZenRule, // If the caller is system, take the package name from the rule's owner rather than // from the caller's package. String rulePkg = pkg; if (isCallingUidSystem()) { if (automaticZenRule.getOwner() != null) { rulePkg = automaticZenRule.getOwner().getPackageName(); } } return mZenModeHelper.addAutomaticZenRule(rulePkg, automaticZenRule, "addAutomaticZenRule"); "addAutomaticZenRule"); } } Loading
services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java +37 −0 Original line number Original line Diff line number Diff line Loading @@ -6656,6 +6656,43 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { mBinderService.addAutomaticZenRule(rule, mContext.getPackageName()); mBinderService.addAutomaticZenRule(rule, mContext.getPackageName()); } } @Test public void testAddAutomaticZenRule_systemCallTakesPackageFromOwner() throws Exception { mService.isSystemUid = true; ZenModeHelper mockZenModeHelper = mock(ZenModeHelper.class); when(mConditionProviders.isPackageOrComponentAllowed(anyString(), anyInt())) .thenReturn(true); mService.setZenHelper(mockZenModeHelper); ComponentName owner = new ComponentName("android", "ProviderName"); ZenPolicy zenPolicy = new ZenPolicy.Builder().allowAlarms(true).build(); boolean isEnabled = true; AutomaticZenRule rule = new AutomaticZenRule("test", owner, owner, mock(Uri.class), zenPolicy, NotificationManager.INTERRUPTION_FILTER_PRIORITY, isEnabled); mBinderService.addAutomaticZenRule(rule, "com.android.settings"); // verify that zen mode helper gets passed in a package name of "android" verify(mockZenModeHelper).addAutomaticZenRule(eq("android"), eq(rule), anyString()); } @Test public void testAddAutomaticZenRule_nonSystemCallTakesPackageFromArg() throws Exception { mService.isSystemUid = false; ZenModeHelper mockZenModeHelper = mock(ZenModeHelper.class); when(mConditionProviders.isPackageOrComponentAllowed(anyString(), anyInt())) .thenReturn(true); mService.setZenHelper(mockZenModeHelper); ComponentName owner = new ComponentName("android", "ProviderName"); ZenPolicy zenPolicy = new ZenPolicy.Builder().allowAlarms(true).build(); boolean isEnabled = true; AutomaticZenRule rule = new AutomaticZenRule("test", owner, owner, mock(Uri.class), zenPolicy, NotificationManager.INTERRUPTION_FILTER_PRIORITY, isEnabled); mBinderService.addAutomaticZenRule(rule, "another.package"); // verify that zen mode helper gets passed in the package name from the arg, not the owner verify(mockZenModeHelper).addAutomaticZenRule( eq("another.package"), eq(rule), anyString()); } @Test @Test public void testAreNotificationsEnabledForPackage_crossUser() throws Exception { public void testAreNotificationsEnabledForPackage_crossUser() throws Exception { try { try { Loading