Loading core/java/android/service/notification/Condition.java +8 −8 Original line number Diff line number Diff line Loading @@ -151,12 +151,12 @@ public final class Condition implements Parcelable { @Override public String toString() { return new StringBuilder(Condition.class.getSimpleName()).append('[') .append("id=").append(id) .append("state=").append(stateToString(state)) .append(",id=").append(id) .append(",summary=").append(summary) .append(",line1=").append(line1) .append(",line2=").append(line2) .append(",icon=").append(icon) .append(",state=").append(stateToString(state)) .append(",flags=").append(flags) .append(']').toString(); } Loading core/java/android/service/notification/ZenModeConfig.java +29 −11 Original line number Diff line number Diff line Loading @@ -240,11 +240,29 @@ public class ZenModeConfig implements Parcelable { .append(",allowMessagesFrom=").append(sourceToString(allowMessagesFrom)) .append(",suppressedVisualEffects=").append(suppressedVisualEffects) .append(",areChannelsBypassingDnd=").append(areChannelsBypassingDnd) .append(",automaticRules=").append(automaticRules) .append(",manualRule=").append(manualRule) .append(",\nautomaticRules=").append(rulesToString()) .append(",\nmanualRule=").append(manualRule) .append(']').toString(); } private String rulesToString() { if (automaticRules.isEmpty()) { return "{}"; } StringBuilder buffer = new StringBuilder(automaticRules.size() * 28); buffer.append('{'); for (int i = 0; i < automaticRules.size(); i++) { if (i > 0) { buffer.append(",\n"); } Object value = automaticRules.valueAt(i); buffer.append(value); } buffer.append('}'); return buffer.toString(); } private Diff diff(ZenModeConfig to) { final Diff d = new Diff(); if (to == null) { Loading Loading @@ -1027,10 +1045,10 @@ public class ZenModeConfig implements Parcelable { public static ScheduleInfo tryParseScheduleConditionId(Uri conditionId) { final boolean isSchedule = conditionId != null && conditionId.getScheme().equals(Condition.SCHEME) && conditionId.getAuthority().equals(ZenModeConfig.SYSTEM_AUTHORITY) && Condition.SCHEME.equals(conditionId.getScheme()) && ZenModeConfig.SYSTEM_AUTHORITY.equals(conditionId.getAuthority()) && conditionId.getPathSegments().size() == 1 && conditionId.getPathSegments().get(0).equals(ZenModeConfig.SCHEDULE_PATH); && ZenModeConfig.SCHEDULE_PATH.equals(conditionId.getPathSegments().get(0)); if (!isSchedule) return null; final int[] start = tryParseHourAndMinute(conditionId.getQueryParameter("start")); final int[] end = tryParseHourAndMinute(conditionId.getQueryParameter("end")); Loading Loading @@ -1128,10 +1146,10 @@ public class ZenModeConfig implements Parcelable { public static EventInfo tryParseEventConditionId(Uri conditionId) { final boolean isEvent = conditionId != null && conditionId.getScheme().equals(Condition.SCHEME) && conditionId.getAuthority().equals(ZenModeConfig.SYSTEM_AUTHORITY) && Condition.SCHEME.equals(conditionId.getScheme()) && ZenModeConfig.SYSTEM_AUTHORITY.equals(conditionId.getAuthority()) && conditionId.getPathSegments().size() == 1 && conditionId.getPathSegments().get(0).equals(EVENT_PATH); && EVENT_PATH.equals(conditionId.getPathSegments().get(0)); if (!isEvent) return null; final EventInfo rt = new EventInfo(); rt.userId = tryParseInt(conditionId.getQueryParameter("userId"), UserHandle.USER_NULL); Loading Loading @@ -1340,14 +1358,14 @@ public class ZenModeConfig implements Parcelable { @Override public String toString() { return new StringBuilder(ZenRule.class.getSimpleName()).append('[') .append("enabled=").append(enabled) .append("id=").append(id) .append(",enabled=").append(String.valueOf(enabled).toUpperCase()) .append(",snoozing=").append(snoozing) .append(",name=").append(name) .append(",zenMode=").append(Global.zenModeToString(zenMode)) .append(",conditionId=").append(conditionId) .append(",condition=").append(condition) .append(",component=").append(component) .append(",id=").append(id) .append(",creationTime=").append(creationTime) .append(",enabler=").append(enabler) .append(']').toString(); Loading Loading @@ -1479,7 +1497,7 @@ public class ZenModeConfig implements Parcelable { final int N = lines.size(); for (int i = 0; i < N; i++) { if (i > 0) { sb.append(','); sb.append(",\n"); } sb.append(lines.get(i)); } Loading services/core/java/com/android/server/notification/ConditionProviders.java +1 −0 Original line number Diff line number Diff line Loading @@ -150,6 +150,7 @@ public class ConditionProviders extends ManagedServices { try { provider.onConnected(); } catch (RemoteException e) { Slog.e(TAG, "can't connect to service " + info, e); // we tried } if (mCallback != null) { Loading services/core/java/com/android/server/notification/ZenLog.java +2 −1 Original line number Diff line number Diff line Loading @@ -36,7 +36,8 @@ import java.util.List; public class ZenLog { private static final String TAG = "ZenLog"; private static final boolean DEBUG = Build.IS_DEBUGGABLE; // the ZenLog is *very* verbose, so be careful about setting this to true private static final boolean DEBUG = false; private static final int SIZE = Build.IS_DEBUGGABLE ? 100 : 20; Loading services/core/java/com/android/server/notification/ZenModeConditions.java +14 −7 Original line number Diff line number Diff line Loading @@ -59,7 +59,8 @@ public class ZenModeConditions implements ConditionProviders.Callback { pw.print(prefix); pw.print("mSubscriptions="); pw.println(mSubscriptions); } public void evaluateConfig(ZenModeConfig config, boolean processSubscriptions) { public void evaluateConfig(ZenModeConfig config, ComponentName trigger, boolean processSubscriptions) { if (config == null) return; if (config.manualRule != null && config.manualRule.condition != null && !config.manualRule.isTrueOrUnknown()) { Loading @@ -67,9 +68,9 @@ public class ZenModeConditions implements ConditionProviders.Callback { config.manualRule = null; } final ArraySet<Uri> current = new ArraySet<>(); evaluateRule(config.manualRule, current, processSubscriptions); evaluateRule(config.manualRule, current, null, processSubscriptions); for (ZenRule automaticRule : config.automaticRules.values()) { evaluateRule(automaticRule, current, processSubscriptions); evaluateRule(automaticRule, current, trigger, processSubscriptions); updateSnoozing(automaticRule); } Loading Loading @@ -102,7 +103,7 @@ public class ZenModeConditions implements ConditionProviders.Callback { @Override public void onServiceAdded(ComponentName component) { if (DEBUG) Log.d(TAG, "onServiceAdded " + component); mHelper.setConfig(mHelper.getConfig(), "zmc.onServiceAdded"); mHelper.setConfig(mHelper.getConfig(), component, "zmc.onServiceAdded"); } @Override Loading @@ -110,17 +111,22 @@ public class ZenModeConditions implements ConditionProviders.Callback { if (DEBUG) Log.d(TAG, "onConditionChanged " + id + " " + condition); ZenModeConfig config = mHelper.getConfig(); if (config == null) return; ComponentName trigger = null; boolean updated = updateCondition(id, condition, config.manualRule); for (ZenRule automaticRule : config.automaticRules.values()) { updated |= updateCondition(id, condition, automaticRule); updated |= updateSnoozing(automaticRule); if (updated) { trigger = automaticRule.component; } } if (updated) { mHelper.setConfig(config, "conditionChanged"); mHelper.setConfig(config, trigger, "conditionChanged"); } } private void evaluateRule(ZenRule rule, ArraySet<Uri> current, boolean processSubscriptions) { private void evaluateRule(ZenRule rule, ArraySet<Uri> current, ComponentName trigger, boolean processSubscriptions) { if (rule == null || rule.conditionId == null) return; final Uri id = rule.conditionId; boolean isSystemCondition = false; Loading @@ -146,7 +152,8 @@ public class ZenModeConditions implements ConditionProviders.Callback { if (current != null) { current.add(id); } if (processSubscriptions) { if (processSubscriptions && trigger != null && trigger.equals(rule.component)) { if (DEBUG) Log.d(TAG, "Subscribing to " + rule.component); if (mConditionProviders.subscribeIfNecessary(rule.component, rule.conditionId)) { synchronized (mSubscriptions) { mSubscriptions.put(rule.conditionId, rule.component); Loading Loading
core/java/android/service/notification/Condition.java +8 −8 Original line number Diff line number Diff line Loading @@ -151,12 +151,12 @@ public final class Condition implements Parcelable { @Override public String toString() { return new StringBuilder(Condition.class.getSimpleName()).append('[') .append("id=").append(id) .append("state=").append(stateToString(state)) .append(",id=").append(id) .append(",summary=").append(summary) .append(",line1=").append(line1) .append(",line2=").append(line2) .append(",icon=").append(icon) .append(",state=").append(stateToString(state)) .append(",flags=").append(flags) .append(']').toString(); } Loading
core/java/android/service/notification/ZenModeConfig.java +29 −11 Original line number Diff line number Diff line Loading @@ -240,11 +240,29 @@ public class ZenModeConfig implements Parcelable { .append(",allowMessagesFrom=").append(sourceToString(allowMessagesFrom)) .append(",suppressedVisualEffects=").append(suppressedVisualEffects) .append(",areChannelsBypassingDnd=").append(areChannelsBypassingDnd) .append(",automaticRules=").append(automaticRules) .append(",manualRule=").append(manualRule) .append(",\nautomaticRules=").append(rulesToString()) .append(",\nmanualRule=").append(manualRule) .append(']').toString(); } private String rulesToString() { if (automaticRules.isEmpty()) { return "{}"; } StringBuilder buffer = new StringBuilder(automaticRules.size() * 28); buffer.append('{'); for (int i = 0; i < automaticRules.size(); i++) { if (i > 0) { buffer.append(",\n"); } Object value = automaticRules.valueAt(i); buffer.append(value); } buffer.append('}'); return buffer.toString(); } private Diff diff(ZenModeConfig to) { final Diff d = new Diff(); if (to == null) { Loading Loading @@ -1027,10 +1045,10 @@ public class ZenModeConfig implements Parcelable { public static ScheduleInfo tryParseScheduleConditionId(Uri conditionId) { final boolean isSchedule = conditionId != null && conditionId.getScheme().equals(Condition.SCHEME) && conditionId.getAuthority().equals(ZenModeConfig.SYSTEM_AUTHORITY) && Condition.SCHEME.equals(conditionId.getScheme()) && ZenModeConfig.SYSTEM_AUTHORITY.equals(conditionId.getAuthority()) && conditionId.getPathSegments().size() == 1 && conditionId.getPathSegments().get(0).equals(ZenModeConfig.SCHEDULE_PATH); && ZenModeConfig.SCHEDULE_PATH.equals(conditionId.getPathSegments().get(0)); if (!isSchedule) return null; final int[] start = tryParseHourAndMinute(conditionId.getQueryParameter("start")); final int[] end = tryParseHourAndMinute(conditionId.getQueryParameter("end")); Loading Loading @@ -1128,10 +1146,10 @@ public class ZenModeConfig implements Parcelable { public static EventInfo tryParseEventConditionId(Uri conditionId) { final boolean isEvent = conditionId != null && conditionId.getScheme().equals(Condition.SCHEME) && conditionId.getAuthority().equals(ZenModeConfig.SYSTEM_AUTHORITY) && Condition.SCHEME.equals(conditionId.getScheme()) && ZenModeConfig.SYSTEM_AUTHORITY.equals(conditionId.getAuthority()) && conditionId.getPathSegments().size() == 1 && conditionId.getPathSegments().get(0).equals(EVENT_PATH); && EVENT_PATH.equals(conditionId.getPathSegments().get(0)); if (!isEvent) return null; final EventInfo rt = new EventInfo(); rt.userId = tryParseInt(conditionId.getQueryParameter("userId"), UserHandle.USER_NULL); Loading Loading @@ -1340,14 +1358,14 @@ public class ZenModeConfig implements Parcelable { @Override public String toString() { return new StringBuilder(ZenRule.class.getSimpleName()).append('[') .append("enabled=").append(enabled) .append("id=").append(id) .append(",enabled=").append(String.valueOf(enabled).toUpperCase()) .append(",snoozing=").append(snoozing) .append(",name=").append(name) .append(",zenMode=").append(Global.zenModeToString(zenMode)) .append(",conditionId=").append(conditionId) .append(",condition=").append(condition) .append(",component=").append(component) .append(",id=").append(id) .append(",creationTime=").append(creationTime) .append(",enabler=").append(enabler) .append(']').toString(); Loading Loading @@ -1479,7 +1497,7 @@ public class ZenModeConfig implements Parcelable { final int N = lines.size(); for (int i = 0; i < N; i++) { if (i > 0) { sb.append(','); sb.append(",\n"); } sb.append(lines.get(i)); } Loading
services/core/java/com/android/server/notification/ConditionProviders.java +1 −0 Original line number Diff line number Diff line Loading @@ -150,6 +150,7 @@ public class ConditionProviders extends ManagedServices { try { provider.onConnected(); } catch (RemoteException e) { Slog.e(TAG, "can't connect to service " + info, e); // we tried } if (mCallback != null) { Loading
services/core/java/com/android/server/notification/ZenLog.java +2 −1 Original line number Diff line number Diff line Loading @@ -36,7 +36,8 @@ import java.util.List; public class ZenLog { private static final String TAG = "ZenLog"; private static final boolean DEBUG = Build.IS_DEBUGGABLE; // the ZenLog is *very* verbose, so be careful about setting this to true private static final boolean DEBUG = false; private static final int SIZE = Build.IS_DEBUGGABLE ? 100 : 20; Loading
services/core/java/com/android/server/notification/ZenModeConditions.java +14 −7 Original line number Diff line number Diff line Loading @@ -59,7 +59,8 @@ public class ZenModeConditions implements ConditionProviders.Callback { pw.print(prefix); pw.print("mSubscriptions="); pw.println(mSubscriptions); } public void evaluateConfig(ZenModeConfig config, boolean processSubscriptions) { public void evaluateConfig(ZenModeConfig config, ComponentName trigger, boolean processSubscriptions) { if (config == null) return; if (config.manualRule != null && config.manualRule.condition != null && !config.manualRule.isTrueOrUnknown()) { Loading @@ -67,9 +68,9 @@ public class ZenModeConditions implements ConditionProviders.Callback { config.manualRule = null; } final ArraySet<Uri> current = new ArraySet<>(); evaluateRule(config.manualRule, current, processSubscriptions); evaluateRule(config.manualRule, current, null, processSubscriptions); for (ZenRule automaticRule : config.automaticRules.values()) { evaluateRule(automaticRule, current, processSubscriptions); evaluateRule(automaticRule, current, trigger, processSubscriptions); updateSnoozing(automaticRule); } Loading Loading @@ -102,7 +103,7 @@ public class ZenModeConditions implements ConditionProviders.Callback { @Override public void onServiceAdded(ComponentName component) { if (DEBUG) Log.d(TAG, "onServiceAdded " + component); mHelper.setConfig(mHelper.getConfig(), "zmc.onServiceAdded"); mHelper.setConfig(mHelper.getConfig(), component, "zmc.onServiceAdded"); } @Override Loading @@ -110,17 +111,22 @@ public class ZenModeConditions implements ConditionProviders.Callback { if (DEBUG) Log.d(TAG, "onConditionChanged " + id + " " + condition); ZenModeConfig config = mHelper.getConfig(); if (config == null) return; ComponentName trigger = null; boolean updated = updateCondition(id, condition, config.manualRule); for (ZenRule automaticRule : config.automaticRules.values()) { updated |= updateCondition(id, condition, automaticRule); updated |= updateSnoozing(automaticRule); if (updated) { trigger = automaticRule.component; } } if (updated) { mHelper.setConfig(config, "conditionChanged"); mHelper.setConfig(config, trigger, "conditionChanged"); } } private void evaluateRule(ZenRule rule, ArraySet<Uri> current, boolean processSubscriptions) { private void evaluateRule(ZenRule rule, ArraySet<Uri> current, ComponentName trigger, boolean processSubscriptions) { if (rule == null || rule.conditionId == null) return; final Uri id = rule.conditionId; boolean isSystemCondition = false; Loading @@ -146,7 +152,8 @@ public class ZenModeConditions implements ConditionProviders.Callback { if (current != null) { current.add(id); } if (processSubscriptions) { if (processSubscriptions && trigger != null && trigger.equals(rule.component)) { if (DEBUG) Log.d(TAG, "Subscribing to " + rule.component); if (mConditionProviders.subscribeIfNecessary(rule.component, rule.conditionId)) { synchronized (mSubscriptions) { mSubscriptions.put(rule.conditionId, rule.component); Loading