Loading services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +32 −27 Original line number Diff line number Diff line Loading @@ -3321,7 +3321,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { } } private void wipeDataLocked(boolean wipeExtRequested, String reason) { private void wipeDataNoLock(boolean wipeExtRequested, String reason) { if (wipeExtRequested) { StorageManager sm = (StorageManager) mContext.getSystemService( Context.STORAGE_SERVICE); Loading @@ -3340,13 +3340,13 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { return; } enforceCrossUserPermission(userHandle); final String source; synchronized (this) { // This API can only be called by an active device admin, // so try to retrieve it to check that the caller is one. final ActiveAdmin admin = getActiveAdminForCallerLocked(null, DeviceAdminInfo.USES_POLICY_WIPE_DATA); final String source; final ComponentName cname = admin.info.getComponent(); if (cname != null) { source = cname.flattenToShortString(); Loading @@ -3371,18 +3371,20 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { manager.wipe(); } } boolean wipeExtRequested = (flags & WIPE_EXTERNAL_STORAGE) != 0; wipeDeviceOrUserLocked(wipeExtRequested, userHandle, "DevicePolicyManager.wipeData() from " + source); } finally { Binder.restoreCallingIdentity(ident); } } boolean wipeExtRequested = (flags & WIPE_EXTERNAL_STORAGE) != 0; wipeDeviceNoLock(wipeExtRequested, userHandle, "DevicePolicyManager.wipeData() from " + source); } private void wipeDeviceOrUserLocked(boolean wipeExtRequested, final int userHandle, String reason) { private void wipeDeviceNoLock(boolean wipeExtRequested, final int userHandle, String reason) { long ident = Binder.clearCallingIdentity(); try { if (userHandle == UserHandle.USER_OWNER) { wipeDataLocked(wipeExtRequested, reason); wipeDataNoLock(wipeExtRequested, reason); } else { mHandler.post(new Runnable() { @Override Loading @@ -3405,6 +3407,9 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { } }); } } finally { Binder.restoreCallingIdentity(ident); } } private void sendWipeProfileNotification() { Loading Loading @@ -3561,7 +3566,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { } if (wipeData) { // Call without holding lock. wipeDeviceOrUserLocked(false, identifier, wipeDeviceNoLock(false, identifier, "reportFailedPasswordAttempt()"); } } finally { Loading Loading
services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +32 −27 Original line number Diff line number Diff line Loading @@ -3321,7 +3321,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { } } private void wipeDataLocked(boolean wipeExtRequested, String reason) { private void wipeDataNoLock(boolean wipeExtRequested, String reason) { if (wipeExtRequested) { StorageManager sm = (StorageManager) mContext.getSystemService( Context.STORAGE_SERVICE); Loading @@ -3340,13 +3340,13 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { return; } enforceCrossUserPermission(userHandle); final String source; synchronized (this) { // This API can only be called by an active device admin, // so try to retrieve it to check that the caller is one. final ActiveAdmin admin = getActiveAdminForCallerLocked(null, DeviceAdminInfo.USES_POLICY_WIPE_DATA); final String source; final ComponentName cname = admin.info.getComponent(); if (cname != null) { source = cname.flattenToShortString(); Loading @@ -3371,18 +3371,20 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { manager.wipe(); } } boolean wipeExtRequested = (flags & WIPE_EXTERNAL_STORAGE) != 0; wipeDeviceOrUserLocked(wipeExtRequested, userHandle, "DevicePolicyManager.wipeData() from " + source); } finally { Binder.restoreCallingIdentity(ident); } } boolean wipeExtRequested = (flags & WIPE_EXTERNAL_STORAGE) != 0; wipeDeviceNoLock(wipeExtRequested, userHandle, "DevicePolicyManager.wipeData() from " + source); } private void wipeDeviceOrUserLocked(boolean wipeExtRequested, final int userHandle, String reason) { private void wipeDeviceNoLock(boolean wipeExtRequested, final int userHandle, String reason) { long ident = Binder.clearCallingIdentity(); try { if (userHandle == UserHandle.USER_OWNER) { wipeDataLocked(wipeExtRequested, reason); wipeDataNoLock(wipeExtRequested, reason); } else { mHandler.post(new Runnable() { @Override Loading @@ -3405,6 +3407,9 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { } }); } } finally { Binder.restoreCallingIdentity(ident); } } private void sendWipeProfileNotification() { Loading Loading @@ -3561,7 +3566,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { } if (wipeData) { // Call without holding lock. wipeDeviceOrUserLocked(false, identifier, wipeDeviceNoLock(false, identifier, "reportFailedPasswordAttempt()"); } } finally { Loading