diff options
| author | 2017-08-14 21:51:42 +0000 | |
|---|---|---|
| committer | 2017-08-14 21:51:42 +0000 | |
| commit | 71b304f6ff304787b31b586c1d31d406d20d6dee (patch) | |
| tree | a86a9ba11cbf08afb263fb2b7f65b8e2ad4a8a05 | |
| parent | 941fab312c2aca5993a4b044be95b1c36d71c8f4 (diff) | |
| parent | c45b0859bfe363980c273eae22cdc1752698c647 (diff) | |
Merge "Always invoke callback" into oc-mr1-dev
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 44 |
1 files changed, 23 insertions, 21 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 0ba850e1b08d..07f60f10b971 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -20228,10 +20228,8 @@ public class PackageManagerService extends IPackageManager.Stub true /* requireFullPermission */, false /* checkShell */, "clear application data"); final PackageSetting ps = mSettings.getPackageLPr(packageName); - if (ps != null && filterAppAccessLPr(ps, callingUid, userId)) { - return; - } - if (mProtectedPackages.isPackageDataProtected(userId, packageName)) { + final boolean filterApp = (ps != null && filterAppAccessLPr(ps, callingUid, userId)); + if (!filterApp && mProtectedPackages.isPackageDataProtected(userId, packageName)) { throw new SecurityException("Cannot clear data for a protected package: " + packageName); } @@ -20240,26 +20238,30 @@ public class PackageManagerService extends IPackageManager.Stub public void run() { mHandler.removeCallbacks(this); final boolean succeeded; - try (PackageFreezer freezer = freezePackage(packageName, - "clearApplicationUserData")) { - synchronized (mInstallLock) { - succeeded = clearApplicationUserDataLIF(packageName, userId); - } - clearExternalStorageDataSync(packageName, userId, true); - synchronized (mPackages) { - mInstantAppRegistry.deleteInstantApplicationMetadataLPw( - packageName, userId); + if (!filterApp) { + try (PackageFreezer freezer = freezePackage(packageName, + "clearApplicationUserData")) { + synchronized (mInstallLock) { + succeeded = clearApplicationUserDataLIF(packageName, userId); + } + clearExternalStorageDataSync(packageName, userId, true); + synchronized (mPackages) { + mInstantAppRegistry.deleteInstantApplicationMetadataLPw( + packageName, userId); + } } - } - if (succeeded) { - // invoke DeviceStorageMonitor's update method to clear any notifications - DeviceStorageMonitorInternal dsm = LocalServices - .getService(DeviceStorageMonitorInternal.class); - if (dsm != null) { - dsm.checkMemory(); + if (succeeded) { + // invoke DeviceStorageMonitor's update method to clear any notifications + DeviceStorageMonitorInternal dsm = LocalServices + .getService(DeviceStorageMonitorInternal.class); + if (dsm != null) { + dsm.checkMemory(); + } } + } else { + succeeded = false; } - if(observer != null) { + if (observer != null) { try { observer.onRemoveCompleted(packageName, succeeded); } catch (RemoteException e) { |