Merge "Add an OEM configurable limit for zen rules" into sc-qpr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
2233167c68
@@ -104,6 +104,7 @@ public class ZenModeHelper {
|
|||||||
|
|
||||||
// The amount of time rules instances can exist without their owning app being installed.
|
// The amount of time rules instances can exist without their owning app being installed.
|
||||||
private static final int RULE_INSTANCE_GRACE_PERIOD = 1000 * 60 * 60 * 72;
|
private static final int RULE_INSTANCE_GRACE_PERIOD = 1000 * 60 * 60 * 72;
|
||||||
|
static final int RULE_LIMIT_PER_PACKAGE = 100;
|
||||||
|
|
||||||
// pkg|userId => uid
|
// pkg|userId => uid
|
||||||
protected final ArrayMap<String, Integer> mRulesUidCache = new ArrayMap<>();
|
protected final ArrayMap<String, Integer> mRulesUidCache = new ArrayMap<>();
|
||||||
@@ -325,10 +326,10 @@ public class ZenModeHelper {
|
|||||||
int newRuleInstanceCount = getCurrentInstanceCount(automaticZenRule.getOwner())
|
int newRuleInstanceCount = getCurrentInstanceCount(automaticZenRule.getOwner())
|
||||||
+ getCurrentInstanceCount(automaticZenRule.getConfigurationActivity())
|
+ getCurrentInstanceCount(automaticZenRule.getConfigurationActivity())
|
||||||
+ 1;
|
+ 1;
|
||||||
if (ruleInstanceLimit > 0 && ruleInstanceLimit < newRuleInstanceCount) {
|
if (newRuleInstanceCount > RULE_LIMIT_PER_PACKAGE
|
||||||
|
|| (ruleInstanceLimit > 0 && ruleInstanceLimit < newRuleInstanceCount)) {
|
||||||
throw new IllegalArgumentException("Rule instance limit exceeded");
|
throw new IllegalArgumentException("Rule instance limit exceeded");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ZenModeConfig newConfig;
|
ZenModeConfig newConfig;
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ import static com.android.os.AtomsProto.DNDModeProto.ENABLED_FIELD_NUMBER;
|
|||||||
import static com.android.os.AtomsProto.DNDModeProto.ID_FIELD_NUMBER;
|
import static com.android.os.AtomsProto.DNDModeProto.ID_FIELD_NUMBER;
|
||||||
import static com.android.os.AtomsProto.DNDModeProto.UID_FIELD_NUMBER;
|
import static com.android.os.AtomsProto.DNDModeProto.UID_FIELD_NUMBER;
|
||||||
import static com.android.os.AtomsProto.DNDModeProto.ZEN_MODE_FIELD_NUMBER;
|
import static com.android.os.AtomsProto.DNDModeProto.ZEN_MODE_FIELD_NUMBER;
|
||||||
|
import static com.android.server.notification.ZenModeHelper.RULE_LIMIT_PER_PACKAGE;
|
||||||
|
|
||||||
import static junit.framework.Assert.assertEquals;
|
import static junit.framework.Assert.assertEquals;
|
||||||
import static junit.framework.Assert.assertFalse;
|
import static junit.framework.Assert.assertFalse;
|
||||||
@@ -1606,6 +1607,35 @@ public class ZenModeHelperTest extends UiServiceTestCase {
|
|||||||
assertFalse(Objects.equals(defaultRuleName, ruleAfterUpdating.name)); // update name
|
assertFalse(Objects.equals(defaultRuleName, ruleAfterUpdating.name)); // update name
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testAddAutomaticZenRule_beyondSystemLimit() {
|
||||||
|
for (int i = 0; i < RULE_LIMIT_PER_PACKAGE; i++) {
|
||||||
|
ScheduleInfo si = new ScheduleInfo();
|
||||||
|
si.startHour = i;
|
||||||
|
AutomaticZenRule zenRule = new AutomaticZenRule("name" + i,
|
||||||
|
null,
|
||||||
|
new ComponentName("android", "ScheduleConditionProvider"),
|
||||||
|
ZenModeConfig.toScheduleConditionId(si),
|
||||||
|
new ZenPolicy.Builder().build(),
|
||||||
|
NotificationManager.INTERRUPTION_FILTER_PRIORITY, true);
|
||||||
|
String id = mZenModeHelperSpy.addAutomaticZenRule("android", zenRule, "test");
|
||||||
|
assertNotNull(id);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
AutomaticZenRule zenRule = new AutomaticZenRule("name",
|
||||||
|
null,
|
||||||
|
new ComponentName("android", "ScheduleConditionProvider"),
|
||||||
|
ZenModeConfig.toScheduleConditionId(new ScheduleInfo()),
|
||||||
|
new ZenPolicy.Builder().build(),
|
||||||
|
NotificationManager.INTERRUPTION_FILTER_PRIORITY, true);
|
||||||
|
String id = mZenModeHelperSpy.addAutomaticZenRule("android", zenRule, "test");
|
||||||
|
fail("allowed too many rules to be created");
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
// yay
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testAddAutomaticZenRule_CA() {
|
public void testAddAutomaticZenRule_CA() {
|
||||||
AutomaticZenRule zenRule = new AutomaticZenRule("name",
|
AutomaticZenRule zenRule = new AutomaticZenRule("name",
|
||||||
|
|||||||
Reference in New Issue
Block a user