diff options
| author | 2017-01-23 17:00:29 -0800 | |
|---|---|---|
| committer | 2017-01-23 17:00:29 -0800 | |
| commit | 1cd8508ba8d552d027c3d0f6e686ed22d116c5e4 (patch) | |
| tree | de6e906658b1b021dc19038b37158cf937b9ffa4 | |
| parent | 70f920fa0cf2baf5e997fc93cc326f37043d8801 (diff) | |
[DO NOT MERGE] Do not log boot times for secondary users and upgrades
Do not log framework_boot_completed/framework_locked_boot_completed
for secondary users, runtime restarts or first boot/upgrade.
First boot/upgrade also applies to boot_system_server_ready/
boot_package_manager_init_ready
Cherry-picked from commit 4ba91b9a879290d3d810330d172161ab1f923da8
Test: Manual update with fingerprint change
Test: runtime restart - not logged
Bug: 34516002
Bug: 32807863
Change-Id: I64b960c96a0e45b4fefaf05547ea5ac5c701c765
3 files changed, 19 insertions, 18 deletions
diff --git a/services/core/java/com/android/server/SystemServiceManager.java b/services/core/java/com/android/server/SystemServiceManager.java index 40b0e2e431b8..a0c80fe666e1 100644 --- a/services/core/java/com/android/server/SystemServiceManager.java +++ b/services/core/java/com/android/server/SystemServiceManager.java @@ -36,7 +36,6 @@ public class SystemServiceManager { private final Context mContext; private boolean mSafeMode; private boolean mRuntimeRestarted; - private boolean mFirstBoot; // Services that should receive lifecycle events. private final ArrayList<SystemService> mServices = new ArrayList<SystemService>(); @@ -259,17 +258,6 @@ public class SystemServiceManager { } /** - * @return true if it's first boot after OTA - */ - public boolean isFirstBoot() { - return mFirstBoot; - } - - void setFirstBoot(boolean firstBoot) { - mFirstBoot = firstBoot; - } - - /** * Outputs the state of this manager to the System log. */ public void dump() { diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java index 19eeff0d440c..4fd26b38b185 100644 --- a/services/core/java/com/android/server/am/UserController.java +++ b/services/core/java/com/android/server/am/UserController.java @@ -46,6 +46,7 @@ import static com.android.server.am.UserState.STATE_RUNNING_UNLOCKING; import android.annotation.NonNull; import android.annotation.UserIdInt; import android.app.ActivityManager; +import android.app.AppGlobals; import android.app.AppOpsManager; import android.app.Dialog; import android.app.IStopUserCallback; @@ -54,6 +55,7 @@ import android.app.KeyguardManager; import android.content.Context; import android.content.IIntentReceiver; import android.content.Intent; +import android.content.pm.IPackageManager; import android.content.pm.PackageManager; import android.content.pm.UserInfo; import android.os.BatteryStats; @@ -239,8 +241,10 @@ final class UserController { // storage is already unlocked. if (uss.setState(STATE_BOOTING, STATE_RUNNING_LOCKED)) { getUserManagerInternal().setUserState(userId, uss.state); - if (!mService.mSystemServiceManager.isRuntimeRestarted() - && !mService.mSystemServiceManager.isFirstBoot()) { + // Do not report secondary users, runtime restarts or first boot/upgrade + if (userId == UserHandle.USER_SYSTEM + && !mService.mSystemServiceManager.isRuntimeRestarted() + && !isFirstBootOrUpgrade()) { int uptimeSeconds = (int)(SystemClock.elapsedRealtime() / 1000); MetricsLogger.histogram(mService.mContext, "framework_locked_boot_completed", uptimeSeconds); @@ -416,9 +420,10 @@ final class UserController { } Slog.d(TAG, "Sending BOOT_COMPLETE user #" + userId); - if (!mService.mSystemServiceManager.isRuntimeRestarted() - && !mService.mSystemServiceManager.isFirstBoot()) { - + // Do not report secondary users, runtime restarts or first boot/upgrade + if (userId == UserHandle.USER_SYSTEM + && !mService.mSystemServiceManager.isRuntimeRestarted() + && !isFirstBootOrUpgrade()) { int uptimeSeconds = (int) (SystemClock.elapsedRealtime() / 1000); MetricsLogger .histogram(mService.mContext, "framework_boot_completed", uptimeSeconds); @@ -433,6 +438,15 @@ final class UserController { } } + private static boolean isFirstBootOrUpgrade() { + IPackageManager pm = AppGlobals.getPackageManager(); + try { + return pm.isFirstBoot() || pm.isUpgrade(); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + int stopUser(final int userId, final boolean force, final IStopUserCallback callback) { if (mService.checkCallingPermission(INTERACT_ACROSS_USERS_FULL) != PackageManager.PERMISSION_GRANTED) { diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java index 865277e88ab5..653c5e9f3df5 100644 --- a/services/java/com/android/server/SystemServer.java +++ b/services/java/com/android/server/SystemServer.java @@ -327,7 +327,6 @@ public final class SystemServer { // Create the system service manager. mSystemServiceManager = new SystemServiceManager(mSystemContext); mSystemServiceManager.setRuntimeRestarted(mRuntimeRestart); - mSystemServiceManager.setFirstBoot(mFirstBoot); LocalServices.addService(SystemServiceManager.class, mSystemServiceManager); } finally { Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER); |