diff options
author | 2021-02-18 15:02:32 -0800 | |
---|---|---|
committer | 2021-02-19 17:29:30 +0000 | |
commit | c1e6f21f8ffabcff737d55ad6b18f6ace9eb88cf (patch) | |
tree | b2b5d1bb0ae3ffe2a00f942815fc14a834fbe4c3 | |
parent | c3d7c80f3e5ee62dc768874034b537b7fc5fd981 (diff) |
Safecty checker improvements on DevicePolicyManagerService.
- Include mSafetyChecker on dump().
- Change OneTimeSafetyChecker so it's disabled after any operation.
- (Conditionally) log the mSafetyChecker used.
Bug: 172376923
Test: adb shell dumpsys device_policy | grep mSafetyChecker
Test: atest CtsDevicePolicyManagerTestCases:DeviceOwnerTest#testDevicePolicySafetyCheckerIntegration_allOperations,testDevicePolicySafetyCheckerIntegration_isSafeOperation,testDevicePolicySafetyCheckerIntegration_unsafeStateException \
CtsDevicePolicyManagerTestCases:ProfileOwnerTest#testDevicePolicySafetyCheckerIntegration_allOperations,testDevicePolicySafetyCheckerIntegration_isSafeOperation,testDevicePolicySafetyCheckerIntegration_unsafeStateException
Change-Id: Ife936cea89c6e21a56454766ecb4b29b652bd584
-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 dd599c9cfb60..eb7a4d4217a9 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -1138,6 +1138,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); } @@ -9172,8 +9177,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) + ']'; + } } |