From ca7f1f405f5c3a0fc826bd5188055ca3fb3e3a81 Mon Sep 17 00:00:00 2001 From: Adam Bookatz Date: Fri, 8 May 2020 11:05:47 -0700 Subject: [PATCH] EventLog for UserController broadcasts Bug: 149604218 Test: adb shell logcat -b events | grep uc_ Change-Id: I70d19e06723efd565c18b065be57b25f2c3b968c --- .../android/server/am/EventLogTags.logtags | 23 ++++++++++--------- .../com/android/server/am/UserController.java | 17 +++++++++++--- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/services/core/java/com/android/server/am/EventLogTags.logtags b/services/core/java/com/android/server/am/EventLogTags.logtags index 17f4187e4dcc4..823d2c80082cd 100644 --- a/services/core/java/com/android/server/am/EventLogTags.logtags +++ b/services/core/java/com/android/server/am/EventLogTags.logtags @@ -95,14 +95,15 @@ option java_package com.android.server.am 30069 am_unfreeze (Pid|1|5),(Process Name|3) # User switch events -30070 uc_finish_user_unlocking (UID|1|5) -30071 uc_finish_user_unlocked (UID|1|5) -30072 uc_finish_user_unlocked_completed (UID|1|5) -30073 uc_finish_user_stopping (UID|1|5) -30074 uc_finish_user_stopped (UID|1|5) -30075 uc_switch_user (UID|1|5) -30076 uc_start_user_internal (UID|1|5) -30077 uc_unlock_user (UID|1|5) -30078 uc_finish_user_boot (UID|1|5) -30079 uc_dispatch_user_switch (oldUID|1|5) (newUID|1|5) -30080 uc_continue_user_switch (oldUID|1|5) (newUID|1|5) +30070 uc_finish_user_unlocking (userId|1|5) +30071 uc_finish_user_unlocked (userId|1|5) +30072 uc_finish_user_unlocked_completed (userId|1|5) +30073 uc_finish_user_stopping (userId|1|5) +30074 uc_finish_user_stopped (userId|1|5) +30075 uc_switch_user (userId|1|5) +30076 uc_start_user_internal (userId|1|5) +30077 uc_unlock_user (userId|1|5) +30078 uc_finish_user_boot (userId|1|5) +30079 uc_dispatch_user_switch (oldUserId|1|5) (newUserId|1|5) +30080 uc_continue_user_switch (oldUserId|1|5) (newUserId|1|5) +30081 uc_send_user_broadcast (userId|1|5) (IntentAction|3|) \ No newline at end of file diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java index c7c25102343b1..5b12933f7a406 100644 --- a/services/core/java/com/android/server/am/UserController.java +++ b/services/core/java/com/android/server/am/UserController.java @@ -668,6 +668,8 @@ class UserController implements Handler.Callback { // Spin up app widgets prior to boot-complete, so they can be ready promptly mInjector.startUserWidgets(userId); + mHandler.obtainMessage(USER_UNLOCKED_MSG, userId, 0).sendToTarget(); + Slog.i(TAG, "Posting BOOT_COMPLETED user #" + userId); // Do not report secondary users, runtime restarts or first boot/upgrade if (userId == UserHandle.USER_SYSTEM @@ -677,9 +679,6 @@ class UserController implements Handler.Callback { FrameworkStatsLog.BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__FRAMEWORK_BOOT_COMPLETED, elapsedTimeMs); } - - mHandler.obtainMessage(USER_UNLOCKED_MSG, userId, 0).sendToTarget(); - final Intent bootIntent = new Intent(Intent.ACTION_BOOT_COMPLETED, null); bootIntent.putExtra(Intent.EXTRA_USER_HANDLE, userId); bootIntent.addFlags(Intent.FLAG_RECEIVER_NO_ABORT @@ -2423,8 +2422,10 @@ class UserController implements Handler.Callback { logUserJourneyInfo(null, getUserInfo(msg.arg1), USER_JOURNEY_USER_START); logUserLifecycleEvent(msg.arg1, USER_JOURNEY_USER_START, USER_LIFECYCLE_EVENT_START_USER, true); + mInjector.getSystemServiceManager().startUser(TimingsTraceAndSlog.newAsyncLog(), msg.arg1); + logUserLifecycleEvent(msg.arg1, USER_JOURNEY_USER_START, USER_LIFECYCLE_EVENT_START_USER, false); clearSessionId(msg.arg1, USER_JOURNEY_USER_START); @@ -2456,6 +2457,7 @@ class UserController implements Handler.Callback { break; case REPORT_USER_SWITCH_COMPLETE_MSG: dispatchUserSwitchComplete(msg.arg1); + final int currentJourney = mUserSwitchUiEnabled ? USER_JOURNEY_USER_SWITCH_UI : USER_JOURNEY_USER_SWITCH_FG; logUserLifecycleEvent(msg.arg1, currentJourney, @@ -2601,6 +2603,13 @@ class UserController implements Handler.Callback { Bundle resultExtras, String[] requiredPermissions, int appOp, Bundle bOptions, boolean ordered, boolean sticky, int callingPid, int callingUid, int realCallingUid, int realCallingPid, @UserIdInt int userId) { + + int logUserId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, UserHandle.USER_NULL); + if (logUserId == UserHandle.USER_NULL) { + logUserId = userId; + } + EventLog.writeEvent(EventLogTags.UC_SEND_USER_BROADCAST, logUserId, intent.getAction()); + // TODO b/64165549 Verify that mLock is not held before calling AMS methods synchronized (mService) { return mService.broadcastIntentLocked(null, null, null, intent, resolvedType, @@ -2666,6 +2675,8 @@ class UserController implements Handler.Callback { } void sendPreBootBroadcast(@UserIdInt int userId, boolean quiet, final Runnable onFinish) { + EventLog.writeEvent(EventLogTags.UC_SEND_USER_BROADCAST, + userId, Intent.ACTION_PRE_BOOT_COMPLETED); new PreBootBroadcaster(mService, userId, null, quiet) { @Override public void onFinished() {