diff options
4 files changed, 20 insertions, 11 deletions
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index aa9a9499ed97..3049d3af700d 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -2491,8 +2491,10 @@ assistant activities (ACTIVITY_TYPE_ASSISTANT) --> <bool name="config_dismissDreamOnActivityStart">false</bool> - <!-- The prefix of dream component names that are loggable. If empty, logs "other" for all. --> - <string name="config_loggable_dream_prefix" translatable="false"></string> + <!-- The prefixes of dream component names that are loggable. + Matched against ComponentName#flattenToString() for dream components. + If empty, logs "other" for all. --> + <string-array name="config_loggable_dream_prefixes"></string-array> <!-- ComponentName of a dream to show whenever the system would otherwise have gone to sleep. When the PowerManager is asked to go to sleep, it will instead diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 7a7b43a3632a..2e46a6f549f3 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -2245,7 +2245,7 @@ <java-symbol type="integer" name="config_dreamOverlayReconnectTimeoutMs" /> <java-symbol type="integer" name="config_dreamOverlayMaxReconnectAttempts" /> <java-symbol type="integer" name="config_minDreamOverlayDurationMs" /> - <java-symbol type="string" name="config_loggable_dream_prefix" /> + <java-symbol type="array" name="config_loggable_dream_prefixes" /> <java-symbol type="string" name="config_dozeComponent" /> <java-symbol type="string" name="enable_explore_by_touch_warning_title" /> <java-symbol type="string" name="enable_explore_by_touch_warning_message" /> diff --git a/services/core/java/com/android/server/dreams/DreamManagerService.java b/services/core/java/com/android/server/dreams/DreamManagerService.java index 5589673973c3..e4aa5e574955 100644 --- a/services/core/java/com/android/server/dreams/DreamManagerService.java +++ b/services/core/java/com/android/server/dreams/DreamManagerService.java @@ -157,7 +157,7 @@ public final class DreamManagerService extends SystemService { mDozeConfig = new AmbientDisplayConfiguration(mContext); mUiEventLogger = new UiEventLoggerImpl(); mDreamUiEventLogger = new DreamUiEventLoggerImpl( - mContext.getResources().getString(R.string.config_loggable_dream_prefix)); + mContext.getResources().getStringArray(R.array.config_loggable_dream_prefixes)); AmbientDisplayConfiguration adc = new AmbientDisplayConfiguration(mContext); mAmbientDisplayComponent = ComponentName.unflattenFromString(adc.ambientDisplayComponent()); mDreamsOnlyEnabledForSystemUser = diff --git a/services/core/java/com/android/server/dreams/DreamUiEventLoggerImpl.java b/services/core/java/com/android/server/dreams/DreamUiEventLoggerImpl.java index 26ca74a8d808..96ebcbb6a771 100644 --- a/services/core/java/com/android/server/dreams/DreamUiEventLoggerImpl.java +++ b/services/core/java/com/android/server/dreams/DreamUiEventLoggerImpl.java @@ -26,10 +26,10 @@ import com.android.internal.util.FrameworkStatsLog; * @hide */ public class DreamUiEventLoggerImpl implements DreamUiEventLogger { - final String mLoggableDreamPrefix; + private final String[] mLoggableDreamPrefixes; - DreamUiEventLoggerImpl(String loggableDreamPrefix) { - mLoggableDreamPrefix = loggableDreamPrefix; + DreamUiEventLoggerImpl(String[] loggableDreamPrefixes) { + mLoggableDreamPrefixes = loggableDreamPrefixes; } @Override @@ -38,13 +38,20 @@ public class DreamUiEventLoggerImpl implements DreamUiEventLogger { if (eventID <= 0) { return; } - final boolean isFirstPartyDream = - mLoggableDreamPrefix.isEmpty() ? false : dreamComponentName.startsWith( - mLoggableDreamPrefix); FrameworkStatsLog.write(FrameworkStatsLog.DREAM_UI_EVENT_REPORTED, /* uid = 1 */ 0, /* event_id = 2 */ eventID, /* instance_id = 3 */ 0, - /* dream_component_name = 4 */ isFirstPartyDream ? dreamComponentName : "other"); + /* dream_component_name = 4 */ + isFirstPartyDream(dreamComponentName) ? dreamComponentName : "other"); + } + + private boolean isFirstPartyDream(String dreamComponentName) { + for (int i = 0; i < mLoggableDreamPrefixes.length; ++i) { + if (dreamComponentName.startsWith(mLoggableDreamPrefixes[i])) { + return true; + } + } + return false; } } |