summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2021-02-21 19:52:34 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2021-02-21 19:52:34 +0000
commit3888076437330739e18ba80e256ca56cecf7b7cf (patch)
treec653592584561ac07bfc3f53e06b2e5f701d7d7b
parent863e3fee2b4a99fa3fd7579d5847e8acaa2288b0 (diff)
parentc1e6f21f8ffabcff737d55ad6b18f6ace9eb88cf (diff)
Merge "Safecty checker improvements on DevicePolicyManagerService." into sc-dev
-rw-r--r--services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java8
-rw-r--r--services/devicepolicy/java/com/android/server/devicepolicy/OneTimeSafetyChecker.java19
2 files changed, 22 insertions, 5 deletions
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index c59c6f68170b..30a1e2a10475 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -1139,6 +1139,11 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
@Override
public boolean isSafeOperation(@OperationSafetyReason int reason) {
+ if (VERBOSE_LOG) {
+ Slog.v(LOG_TAG, "checking isSafeOperation("
+ + DevicePolicyManager.operationSafetyReasonToString(reason)
+ + ") using mSafetyChecker " + mSafetyChecker);
+ }
return mSafetyChecker == null ? true : mSafetyChecker.isSafeOperation(reason);
}
@@ -9175,8 +9180,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
pw.printf("mIsWatch=%b\n", mIsWatch);
pw.printf("mIsAutomotive=%b\n", mIsAutomotive);
pw.printf("mHasTelephonyFeature=%b\n", mHasTelephonyFeature);
- String safetyChecker = mSafetyChecker == null ? "N/A" : mSafetyChecker.getClass().getName();
- pw.printf("mSafetyChecker=%b\n", safetyChecker);
+ pw.printf("mSafetyChecker=%s\n", mSafetyChecker);
pw.decreaseIndent();
}
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/OneTimeSafetyChecker.java b/services/devicepolicy/java/com/android/server/devicepolicy/OneTimeSafetyChecker.java
index 7de1bd50a9eb..6ec6f915ea0f 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/OneTimeSafetyChecker.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/OneTimeSafetyChecker.java
@@ -78,9 +78,9 @@ final class OneTimeSafetyChecker implements DevicePolicySafetyChecker {
Slog.i(TAG, "notifying " + reasonName + " is inactive");
dpmi.notifyUnsafeOperationStateChanged(this, reason, false);
- Slog.i(TAG, "returning " + reasonName
- + " and restoring DevicePolicySafetyChecker to " + mRealSafetyChecker);
- mService.setDevicePolicySafetyCheckerUnchecked(mRealSafetyChecker);
+ Slog.i(TAG, "returning " + reasonName);
+
+ disableSelf();
return reason;
}
@@ -89,6 +89,7 @@ final class OneTimeSafetyChecker implements DevicePolicySafetyChecker {
boolean safe = mReason != reason;
Slog.i(TAG, "isSafeOperation(" + operationSafetyReasonToString(reason) + "): " + safe);
+ disableSelf();
return safe;
}
@@ -96,4 +97,16 @@ final class OneTimeSafetyChecker implements DevicePolicySafetyChecker {
public void onFactoryReset(IResultReceiver callback) {
throw new UnsupportedOperationException();
}
+
+ private void disableSelf() {
+ Slog.i(TAG, "restoring DevicePolicySafetyChecker to " + mRealSafetyChecker);
+ mService.setDevicePolicySafetyCheckerUnchecked(mRealSafetyChecker);
+ }
+
+ @Override
+ public String toString() {
+ return "OneTimeSafetyChecker[id=" + System.identityHashCode(this)
+ + ", reason=" + operationSafetyReasonToString(mReason)
+ + ", operation=" + operationToString(mOperation) + ']';
+ }
}