Loading services/core/java/com/android/server/notification/NotificationManagerService.java +3 −6 Original line number Diff line number Diff line Loading @@ -719,8 +719,7 @@ public class NotificationManagerService extends SystemService { return; } final long now = System.currentTimeMillis(); MetricsLogger.action(r.getLogMaker(now) .setCategory(MetricsEvent.NOTIFICATION_ITEM) MetricsLogger.action(r.getItemLogMaker() .setType(MetricsEvent.TYPE_ACTION) .addTaggedData(MetricsEvent.NOTIFICATION_SHADE_INDEX, nv.rank) .addTaggedData(MetricsEvent.NOTIFICATION_SHADE_COUNT, nv.count)); Loading Loading @@ -865,8 +864,7 @@ public class NotificationManagerService extends SystemService { r.stats.onExpansionChanged(userAction, expanded); final long now = System.currentTimeMillis(); if (userAction) { MetricsLogger.action(r.getLogMaker(now) .setCategory(MetricsEvent.NOTIFICATION_ITEM) MetricsLogger.action(r.getItemLogMaker() .setType(expanded ? MetricsEvent.TYPE_DETAIL : MetricsEvent.TYPE_COLLAPSE)); } Loading Loading @@ -5842,8 +5840,7 @@ public class NotificationManagerService extends SystemService { mArchive.record(r.sbn); final long now = System.currentTimeMillis(); final LogMaker logMaker = r.getLogMaker(now) .setCategory(MetricsEvent.NOTIFICATION_ITEM) final LogMaker logMaker = r.getItemLogMaker() .setType(MetricsEvent.TYPE_DISMISS) .setSubtype(reason); if (rank != -1 && count != -1) { Loading services/core/java/com/android/server/notification/NotificationRecord.java +31 −0 Original line number Diff line number Diff line Loading @@ -611,6 +611,7 @@ public final class NotificationRecord { } public void applyAdjustments() { long now = System.currentTimeMillis(); synchronized (mAdjustments) { for (Adjustment adjustment: mAdjustments) { Bundle signals = adjustment.getSignals(); Loading @@ -618,17 +619,25 @@ public final class NotificationRecord { final ArrayList<String> people = adjustment.getSignals().getStringArrayList(Adjustment.KEY_PEOPLE); setPeopleOverride(people); MetricsLogger.action(getAdjustmentLogMaker() .addTaggedData(MetricsEvent.ADJUSTMENT_KEY_PEOPLE, people.size())); } if (signals.containsKey(Adjustment.KEY_SNOOZE_CRITERIA)) { final ArrayList<SnoozeCriterion> snoozeCriterionList = adjustment.getSignals().getParcelableArrayList( Adjustment.KEY_SNOOZE_CRITERIA); setSnoozeCriteria(snoozeCriterionList); MetricsLogger.action(getAdjustmentLogMaker() .addTaggedData(MetricsEvent.ADJUSTMENT_KEY_SNOOZE_CRITERIA, snoozeCriterionList.size())); } if (signals.containsKey(Adjustment.KEY_GROUP_KEY)) { final String groupOverrideKey = adjustment.getSignals().getString(Adjustment.KEY_GROUP_KEY); setOverrideGroupKey(groupOverrideKey); MetricsLogger.action(getAdjustmentLogMaker() .addTaggedData(MetricsEvent.ADJUSTMENT_KEY_GROUP_KEY, groupOverrideKey)); } if (signals.containsKey(Adjustment.KEY_USER_SENTIMENT)) { // Only allow user sentiment update from assistant if user hasn't already Loading @@ -637,19 +646,31 @@ public final class NotificationRecord { && (getChannel().getUserLockedFields() & USER_LOCKED_IMPORTANCE) == 0) { setUserSentiment(adjustment.getSignals().getInt( Adjustment.KEY_USER_SENTIMENT, USER_SENTIMENT_NEUTRAL)); MetricsLogger.action(getAdjustmentLogMaker() .addTaggedData(MetricsEvent.ADJUSTMENT_KEY_USER_SENTIMENT, getUserSentiment())); } } if (signals.containsKey(Adjustment.KEY_SMART_ACTIONS)) { setSmartActions(signals.getParcelableArrayList(Adjustment.KEY_SMART_ACTIONS)); MetricsLogger.action(getAdjustmentLogMaker() .addTaggedData(MetricsEvent.ADJUSTMENT_KEY_SMART_ACTIONS, getSmartActions().size())); } if (signals.containsKey(Adjustment.KEY_SMART_REPLIES)) { setSmartReplies(signals.getCharSequenceArrayList(Adjustment.KEY_SMART_REPLIES)); MetricsLogger.action(getAdjustmentLogMaker() .addTaggedData(MetricsEvent.ADJUSTMENT_KEY_SMART_REPLIES, getSmartReplies().size())); } if (signals.containsKey(Adjustment.KEY_IMPORTANCE)) { int importance = signals.getInt(Adjustment.KEY_IMPORTANCE); importance = Math.max(IMPORTANCE_UNSPECIFIED, importance); importance = Math.min(IMPORTANCE_HIGH, importance); setAssistantImportance(importance); MetricsLogger.action(getAdjustmentLogMaker() .addTaggedData(MetricsEvent.ADJUSTMENT_KEY_IMPORTANCE, importance)); } } } Loading Loading @@ -1203,6 +1224,16 @@ public final class NotificationRecord { return getLogMaker(System.currentTimeMillis()); } public LogMaker getItemLogMaker() { return getLogMaker().setCategory(MetricsEvent.NOTIFICATION_ITEM); } public LogMaker getAdjustmentLogMaker() { return getLogMaker() .setCategory(MetricsEvent.NOTIFICATION_ITEM) .setType(MetricsEvent.NOTIFICATION_ASSISTANT_ADJUSTMENT); } @VisibleForTesting static final class Light { public final int color; Loading services/core/java/com/android/server/notification/ZenModeHelper.java +67 −5 Original line number Diff line number Diff line Loading @@ -1212,27 +1212,89 @@ public class ZenModeHelper { } private final class Metrics extends Callback { private static final String COUNTER_PREFIX = "dnd_mode_"; private static final String COUNTER_MODE_PREFIX = "dnd_mode_"; private static final String COUNTER_TYPE_PREFIX = "dnd_type_"; private static final int DND_OFF = 0; private static final int DND_ON_MANUAL = 1; private static final int DND_ON_AUTOMATIC = 2; private static final String COUNTER_RULE = "dnd_rule_count"; private static final long MINIMUM_LOG_PERIOD_MS = 60 * 1000; // Total silence, alarms only, priority only private int mPreviousZenMode = -1; private long mBeginningMs = 0L; private long mModeLogTimeMs = 0L; private int mNumZenRules = -1; private long mRuleCountLogTime = 0L; // automatic (1) vs manual (0) vs dnd off (2) private int mPreviousZenType = -1; private long mTypeLogTimeMs = 0L; @Override void onZenModeChanged() { emit(); } @Override void onConfigChanged() { emit(); } private void emit() { mHandler.postMetricsTimer(); emitZenMode(); emitRules(); emitDndType(); } private void emitZenMode() { final long now = SystemClock.elapsedRealtime(); final long since = (now - mBeginningMs); final long since = (now - mModeLogTimeMs); if (mPreviousZenMode != mZenMode || since > MINIMUM_LOG_PERIOD_MS) { if (mPreviousZenMode != -1) { MetricsLogger.count(mContext, COUNTER_PREFIX + mPreviousZenMode, (int) since); MetricsLogger.count( mContext, COUNTER_MODE_PREFIX + mPreviousZenMode, (int) since); } mPreviousZenMode = mZenMode; mBeginningMs = now; mModeLogTimeMs = now; } } private void emitRules() { final long now = SystemClock.elapsedRealtime(); final long since = (now - mRuleCountLogTime); synchronized (mConfig) { int numZenRules = mConfig.automaticRules.size(); if (mNumZenRules != numZenRules || since > MINIMUM_LOG_PERIOD_MS) { if (mNumZenRules != -1) { MetricsLogger.count(mContext, COUNTER_RULE, numZenRules - mNumZenRules); } mNumZenRules = numZenRules; mRuleCountLogTime = since; } } } private void emitDndType() { final long now = SystemClock.elapsedRealtime(); final long since = (now - mTypeLogTimeMs); synchronized (mConfig) { boolean dndOn = mZenMode != Global.ZEN_MODE_OFF; int zenType = !dndOn ? DND_OFF : (mConfig.manualRule != null) ? DND_ON_MANUAL : DND_ON_AUTOMATIC; if (zenType != mPreviousZenType || since > MINIMUM_LOG_PERIOD_MS) { if (mPreviousZenType != -1) { MetricsLogger.count( mContext, COUNTER_TYPE_PREFIX + mPreviousZenType, (int) since); } mTypeLogTimeMs = now; mPreviousZenType = zenType; } } } } Loading Loading
services/core/java/com/android/server/notification/NotificationManagerService.java +3 −6 Original line number Diff line number Diff line Loading @@ -719,8 +719,7 @@ public class NotificationManagerService extends SystemService { return; } final long now = System.currentTimeMillis(); MetricsLogger.action(r.getLogMaker(now) .setCategory(MetricsEvent.NOTIFICATION_ITEM) MetricsLogger.action(r.getItemLogMaker() .setType(MetricsEvent.TYPE_ACTION) .addTaggedData(MetricsEvent.NOTIFICATION_SHADE_INDEX, nv.rank) .addTaggedData(MetricsEvent.NOTIFICATION_SHADE_COUNT, nv.count)); Loading Loading @@ -865,8 +864,7 @@ public class NotificationManagerService extends SystemService { r.stats.onExpansionChanged(userAction, expanded); final long now = System.currentTimeMillis(); if (userAction) { MetricsLogger.action(r.getLogMaker(now) .setCategory(MetricsEvent.NOTIFICATION_ITEM) MetricsLogger.action(r.getItemLogMaker() .setType(expanded ? MetricsEvent.TYPE_DETAIL : MetricsEvent.TYPE_COLLAPSE)); } Loading Loading @@ -5842,8 +5840,7 @@ public class NotificationManagerService extends SystemService { mArchive.record(r.sbn); final long now = System.currentTimeMillis(); final LogMaker logMaker = r.getLogMaker(now) .setCategory(MetricsEvent.NOTIFICATION_ITEM) final LogMaker logMaker = r.getItemLogMaker() .setType(MetricsEvent.TYPE_DISMISS) .setSubtype(reason); if (rank != -1 && count != -1) { Loading
services/core/java/com/android/server/notification/NotificationRecord.java +31 −0 Original line number Diff line number Diff line Loading @@ -611,6 +611,7 @@ public final class NotificationRecord { } public void applyAdjustments() { long now = System.currentTimeMillis(); synchronized (mAdjustments) { for (Adjustment adjustment: mAdjustments) { Bundle signals = adjustment.getSignals(); Loading @@ -618,17 +619,25 @@ public final class NotificationRecord { final ArrayList<String> people = adjustment.getSignals().getStringArrayList(Adjustment.KEY_PEOPLE); setPeopleOverride(people); MetricsLogger.action(getAdjustmentLogMaker() .addTaggedData(MetricsEvent.ADJUSTMENT_KEY_PEOPLE, people.size())); } if (signals.containsKey(Adjustment.KEY_SNOOZE_CRITERIA)) { final ArrayList<SnoozeCriterion> snoozeCriterionList = adjustment.getSignals().getParcelableArrayList( Adjustment.KEY_SNOOZE_CRITERIA); setSnoozeCriteria(snoozeCriterionList); MetricsLogger.action(getAdjustmentLogMaker() .addTaggedData(MetricsEvent.ADJUSTMENT_KEY_SNOOZE_CRITERIA, snoozeCriterionList.size())); } if (signals.containsKey(Adjustment.KEY_GROUP_KEY)) { final String groupOverrideKey = adjustment.getSignals().getString(Adjustment.KEY_GROUP_KEY); setOverrideGroupKey(groupOverrideKey); MetricsLogger.action(getAdjustmentLogMaker() .addTaggedData(MetricsEvent.ADJUSTMENT_KEY_GROUP_KEY, groupOverrideKey)); } if (signals.containsKey(Adjustment.KEY_USER_SENTIMENT)) { // Only allow user sentiment update from assistant if user hasn't already Loading @@ -637,19 +646,31 @@ public final class NotificationRecord { && (getChannel().getUserLockedFields() & USER_LOCKED_IMPORTANCE) == 0) { setUserSentiment(adjustment.getSignals().getInt( Adjustment.KEY_USER_SENTIMENT, USER_SENTIMENT_NEUTRAL)); MetricsLogger.action(getAdjustmentLogMaker() .addTaggedData(MetricsEvent.ADJUSTMENT_KEY_USER_SENTIMENT, getUserSentiment())); } } if (signals.containsKey(Adjustment.KEY_SMART_ACTIONS)) { setSmartActions(signals.getParcelableArrayList(Adjustment.KEY_SMART_ACTIONS)); MetricsLogger.action(getAdjustmentLogMaker() .addTaggedData(MetricsEvent.ADJUSTMENT_KEY_SMART_ACTIONS, getSmartActions().size())); } if (signals.containsKey(Adjustment.KEY_SMART_REPLIES)) { setSmartReplies(signals.getCharSequenceArrayList(Adjustment.KEY_SMART_REPLIES)); MetricsLogger.action(getAdjustmentLogMaker() .addTaggedData(MetricsEvent.ADJUSTMENT_KEY_SMART_REPLIES, getSmartReplies().size())); } if (signals.containsKey(Adjustment.KEY_IMPORTANCE)) { int importance = signals.getInt(Adjustment.KEY_IMPORTANCE); importance = Math.max(IMPORTANCE_UNSPECIFIED, importance); importance = Math.min(IMPORTANCE_HIGH, importance); setAssistantImportance(importance); MetricsLogger.action(getAdjustmentLogMaker() .addTaggedData(MetricsEvent.ADJUSTMENT_KEY_IMPORTANCE, importance)); } } } Loading Loading @@ -1203,6 +1224,16 @@ public final class NotificationRecord { return getLogMaker(System.currentTimeMillis()); } public LogMaker getItemLogMaker() { return getLogMaker().setCategory(MetricsEvent.NOTIFICATION_ITEM); } public LogMaker getAdjustmentLogMaker() { return getLogMaker() .setCategory(MetricsEvent.NOTIFICATION_ITEM) .setType(MetricsEvent.NOTIFICATION_ASSISTANT_ADJUSTMENT); } @VisibleForTesting static final class Light { public final int color; Loading
services/core/java/com/android/server/notification/ZenModeHelper.java +67 −5 Original line number Diff line number Diff line Loading @@ -1212,27 +1212,89 @@ public class ZenModeHelper { } private final class Metrics extends Callback { private static final String COUNTER_PREFIX = "dnd_mode_"; private static final String COUNTER_MODE_PREFIX = "dnd_mode_"; private static final String COUNTER_TYPE_PREFIX = "dnd_type_"; private static final int DND_OFF = 0; private static final int DND_ON_MANUAL = 1; private static final int DND_ON_AUTOMATIC = 2; private static final String COUNTER_RULE = "dnd_rule_count"; private static final long MINIMUM_LOG_PERIOD_MS = 60 * 1000; // Total silence, alarms only, priority only private int mPreviousZenMode = -1; private long mBeginningMs = 0L; private long mModeLogTimeMs = 0L; private int mNumZenRules = -1; private long mRuleCountLogTime = 0L; // automatic (1) vs manual (0) vs dnd off (2) private int mPreviousZenType = -1; private long mTypeLogTimeMs = 0L; @Override void onZenModeChanged() { emit(); } @Override void onConfigChanged() { emit(); } private void emit() { mHandler.postMetricsTimer(); emitZenMode(); emitRules(); emitDndType(); } private void emitZenMode() { final long now = SystemClock.elapsedRealtime(); final long since = (now - mBeginningMs); final long since = (now - mModeLogTimeMs); if (mPreviousZenMode != mZenMode || since > MINIMUM_LOG_PERIOD_MS) { if (mPreviousZenMode != -1) { MetricsLogger.count(mContext, COUNTER_PREFIX + mPreviousZenMode, (int) since); MetricsLogger.count( mContext, COUNTER_MODE_PREFIX + mPreviousZenMode, (int) since); } mPreviousZenMode = mZenMode; mBeginningMs = now; mModeLogTimeMs = now; } } private void emitRules() { final long now = SystemClock.elapsedRealtime(); final long since = (now - mRuleCountLogTime); synchronized (mConfig) { int numZenRules = mConfig.automaticRules.size(); if (mNumZenRules != numZenRules || since > MINIMUM_LOG_PERIOD_MS) { if (mNumZenRules != -1) { MetricsLogger.count(mContext, COUNTER_RULE, numZenRules - mNumZenRules); } mNumZenRules = numZenRules; mRuleCountLogTime = since; } } } private void emitDndType() { final long now = SystemClock.elapsedRealtime(); final long since = (now - mTypeLogTimeMs); synchronized (mConfig) { boolean dndOn = mZenMode != Global.ZEN_MODE_OFF; int zenType = !dndOn ? DND_OFF : (mConfig.manualRule != null) ? DND_ON_MANUAL : DND_ON_AUTOMATIC; if (zenType != mPreviousZenType || since > MINIMUM_LOG_PERIOD_MS) { if (mPreviousZenType != -1) { MetricsLogger.count( mContext, COUNTER_TYPE_PREFIX + mPreviousZenType, (int) since); } mTypeLogTimeMs = now; mPreviousZenType = zenType; } } } } Loading