summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Gavin Corkery <gavincorkery@google.com> 2020-04-17 18:25:45 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2020-04-17 18:25:45 +0000
commit56a5a72e735508c8ed2e4293ed77bd2d3233da2c (patch)
tree457cf3dcc4256490f5cb3b9840435e0c0a4ee0c7
parent59f73711b5aa872d2bfcab26538761132218080f (diff)
parent6bacdcd42edd525183aa147d12de74090b70ce94 (diff)
Merge "Ensure userspace reboot is supported before logging" into rvc-dev
-rw-r--r--services/core/java/com/android/server/UserspaceRebootLogger.java29
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) {