Merge "Safecty checker improvements on DevicePolicyManagerService." into sc-dev
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index c59c6f6..30a1e2a 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 @@
@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 @@
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 7de1bd5..6ec6f91 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 @@
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 @@
boolean safe = mReason != reason;
Slog.i(TAG, "isSafeOperation(" + operationSafetyReasonToString(reason) + "): " + safe);
+ disableSelf();
return safe;
}
@@ -96,4 +97,16 @@
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) + ']';
+ }
}