From e497ad26c8ea3e74cee39248515958ad4abd7655 Mon Sep 17 00:00:00 2001 From: Hui Yu Date: Fri, 25 Jan 2019 15:54:57 -0800 Subject: [PATCH] Create a default package name for device level events. Device level event like DEVICE_SHUTDOWN does not have package name, but some user code always expect a non-null packageName for every event. Create a default packageName for these device level events. Change-Id: Iee49794bdc6f5cb7b30d50f7421ac0de2a33c858 Fix: b/123429960 Test: NA. --- core/java/android/app/usage/UsageEvents.java | 8 ++++++++ .../java/com/android/server/usage/UsageStatsService.java | 2 ++ .../com/android/server/usage/UserUsageStatsService.java | 1 + 3 files changed, 11 insertions(+) diff --git a/core/java/android/app/usage/UsageEvents.java b/core/java/android/app/usage/UsageEvents.java index 451f44b93c325..57696b71544c5 100644 --- a/core/java/android/app/usage/UsageEvents.java +++ b/core/java/android/app/usage/UsageEvents.java @@ -51,6 +51,14 @@ public final class UsageEvents implements Parcelable { */ public static final int NONE = 0; + /** + * A device level event like {@link #DEVICE_SHUTDOWN} does not have package name, but some + * user code always expect a non-null {@link #mPackage} for every event. Use + * {@link #DEVICE_EVENT_PACKAGE_NAME} as packageName for these device level events. + * @hide + */ + public static final String DEVICE_EVENT_PACKAGE_NAME = "android"; + /** * @deprecated by {@link #ACTIVITY_RESUMED} */ diff --git a/services/usage/java/com/android/server/usage/UsageStatsService.java b/services/usage/java/com/android/server/usage/UsageStatsService.java index 85939d498755e..a6d7ee6d85e20 100644 --- a/services/usage/java/com/android/server/usage/UsageStatsService.java +++ b/services/usage/java/com/android/server/usage/UsageStatsService.java @@ -432,6 +432,7 @@ public class UsageStatsService extends SystemService implements synchronized (mLock) { mHandler.removeMessages(MSG_REPORT_EVENT); Event event = new Event(DEVICE_SHUTDOWN, SystemClock.elapsedRealtime()); + event.mPackage = Event.DEVICE_EVENT_PACKAGE_NAME; // orderly shutdown, the last event is DEVICE_SHUTDOWN. reportEventToAllUserId(event); flushToDiskLocked(); @@ -449,6 +450,7 @@ public class UsageStatsService extends SystemService implements */ void prepareForPossibleShutdown() { Event event = new Event(DEVICE_SHUTDOWN, SystemClock.elapsedRealtime()); + event.mPackage = Event.DEVICE_EVENT_PACKAGE_NAME; mHandler.obtainMessage(MSG_REPORT_EVENT_TO_ALL_USERID, event).sendToTarget(); mHandler.sendEmptyMessage(MSG_FLUSH_TO_DISK); } diff --git a/services/usage/java/com/android/server/usage/UserUsageStatsService.java b/services/usage/java/com/android/server/usage/UserUsageStatsService.java index d52d32faa7d1e..3cb22162e36cc 100644 --- a/services/usage/java/com/android/server/usage/UserUsageStatsService.java +++ b/services/usage/java/com/android/server/usage/UserUsageStatsService.java @@ -143,6 +143,7 @@ class UserUsageStatsService { if (size == 0 || currentDailyStats.events.get(size - 1).mEventType != DEVICE_SHUTDOWN) { // The last event in event list is not DEVICE_SHUTDOWN, then we insert one. final Event event = new Event(DEVICE_SHUTDOWN, currentDailyStats.lastTimeSaved); + event.mPackage = Event.DEVICE_EVENT_PACKAGE_NAME; currentDailyStats.addEvent(event); } }