diff options
-rw-r--r-- | services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java | 8 | ||||
-rw-r--r-- | services/devicepolicy/java/com/android/server/devicepolicy/OneTimeSafetyChecker.java | 19 |
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) + ']'; + } } |