diff options
| -rw-r--r-- | services/core/java/com/android/server/UserspaceRebootLogger.java | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/UserspaceRebootLogger.java b/services/core/java/com/android/server/UserspaceRebootLogger.java index 9a9374ce1822..2403b637581f 100644 --- a/services/core/java/com/android/server/UserspaceRebootLogger.java +++ b/services/core/java/com/android/server/UserspaceRebootLogger.java @@ -24,6 +24,7 @@ import static com.android.internal.util.FrameworkStatsLog.USERSPACE_REBOOT_REPOR import static com.android.internal.util.FrameworkStatsLog.USERSPACE_REBOOT_REPORTED__USER_ENCRYPTION_STATE__LOCKED; import static com.android.internal.util.FrameworkStatsLog.USERSPACE_REBOOT_REPORTED__USER_ENCRYPTION_STATE__UNLOCKED; +import android.os.PowerManager; import android.os.SystemClock; import android.os.SystemProperties; import android.text.TextUtils; @@ -53,8 +54,15 @@ public final class UserspaceRebootLogger { /** * Modifies internal state to note that {@code UserspaceRebootReported} atom needs to be * logged on the next successful boot. + * + * <p>This call should only be made on devices supporting userspace reboot. */ public static void noteUserspaceRebootWasRequested() { + if (!PowerManager.isRebootingUserspaceSupportedImpl()) { + Slog.wtf(TAG, "Userspace reboot is not supported."); + return; + } + SystemProperties.set(USERSPACE_REBOOT_SHOULD_LOG_PROPERTY, "1"); SystemProperties.set(USERSPACE_REBOOT_LAST_STARTED_PROPERTY, String.valueOf(SystemClock.elapsedRealtime())); @@ -64,16 +72,30 @@ public final class UserspaceRebootLogger { * Updates internal state on boot after successful userspace reboot. * * <p>Should be called right before framework sets {@code sys.boot_completed} property. + * + * <p>This call should only be made on devices supporting userspace reboot. */ public static void noteUserspaceRebootSuccess() { + if (!PowerManager.isRebootingUserspaceSupportedImpl()) { + Slog.wtf(TAG, "Userspace reboot is not supported."); + return; + } + SystemProperties.set(USERSPACE_REBOOT_LAST_FINISHED_PROPERTY, String.valueOf(SystemClock.elapsedRealtime())); } /** * Returns {@code true} if {@code UserspaceRebootReported} atom should be logged. + * + * <p>This call should only be made on devices supporting userspace reboot. */ public static boolean shouldLogUserspaceRebootEvent() { + if (!PowerManager.isRebootingUserspaceSupportedImpl()) { + Slog.wtf(TAG, "Userspace reboot is not supported."); + return false; + } + return SystemProperties.getBoolean(USERSPACE_REBOOT_SHOULD_LOG_PROPERTY, false); } @@ -83,8 +105,15 @@ public final class UserspaceRebootLogger { * <p>Should be called in the end of {@link * com.android.server.am.ActivityManagerService#finishBooting()} method, after framework have * tried to proactivelly unlock storage of the primary user. + * + * <p>This call should only be made on devices supporting userspace reboot. */ public static void logEventAsync(boolean userUnlocked, Executor executor) { + if (!PowerManager.isRebootingUserspaceSupportedImpl()) { + Slog.wtf(TAG, "Userspace reboot is not supported."); + return; + } + final int outcome = computeOutcome(); final long durationMillis; if (outcome == USERSPACE_REBOOT_REPORTED__OUTCOME__SUCCESS) { |