summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/SystemServiceManager.java12
-rw-r--r--services/core/java/com/android/server/am/UserController.java24
-rw-r--r--services/java/com/android/server/SystemServer.java1
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);