summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2017-08-14 21:51:42 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2017-08-14 21:51:42 +0000
commit71b304f6ff304787b31b586c1d31d406d20d6dee (patch)
treea86a9ba11cbf08afb263fb2b7f65b8e2ad4a8a05
parent941fab312c2aca5993a4b044be95b1c36d71c8f4 (diff)
parentc45b0859bfe363980c273eae22cdc1752698c647 (diff)
Merge "Always invoke callback" into oc-mr1-dev
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java44
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) {