Merge changes from topic "presubmit-am-5d70d7e9c9634af1b0b082cbc89e0dad-sc-qpr1-dev-sc-dev" into sc-mainline-prod
* changes:
[automerge] Fix system zen rules by using owner package name if caller is system 2p: 78245566a2
Fix system zen rules by using owner package name if caller is system
This commit is contained in:
@@ -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");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user