summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorChristopher Tate <ctate@google.com>2017-12-07 16:54:04 -0800
committerChristopher Tate <ctate@google.com>2017-12-08 13:53:42 -0800
commit1d99c391ecd30c27be2e8f61aa9ec64546d15d4b (patch)
tree76e3378f4da2b13f1c6295d18570c7ff43173eb9 /core/java/android
parentab39cc5797ae7d2298b25f543cbb2e175356ebe7 (diff)
Cancel alarms & jobs when an app's data is cleared
In the same bit of code, fix a system restore issue: in the course of setup + restore, we reestablish permission grants and notification state up front for the to-be-restored app, and then bring in its data. However, a data wipe is part of the prologue for that data delivery -- so we were inadvertently unwinding the permission grants and notification state restore that we'd just performed. Now, we distinguish the restore flow from other clear-data operations so we don't unwind that operation. Finally take the opportunity to elide a lot of copypasta code into a single predicate-driven implementation. Bug: 67508896 Bug: 69538432 Test: atest android.app.cts.AlarmManagerTest Change-Id: I15c912c3c99645599ae9bd6fb7337fa86b4e5757
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/app/ActivityManager.java2
-rw-r--r--core/java/android/app/IActivityManager.aidl2
2 files changed, 2 insertions, 2 deletions
diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java
index 924137838ad4..7ab047df5137 100644
--- a/core/java/android/app/ActivityManager.java
+++ b/core/java/android/app/ActivityManager.java
@@ -2613,7 +2613,7 @@ public class ActivityManager {
Manifest.permission.ACCESS_INSTANT_APPS})
public boolean clearApplicationUserData(String packageName, IPackageDataObserver observer) {
try {
- return getService().clearApplicationUserData(packageName,
+ return getService().clearApplicationUserData(packageName, false,
observer, UserHandle.myUserId());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
diff --git a/core/java/android/app/IActivityManager.aidl b/core/java/android/app/IActivityManager.aidl
index 84c07ec7f45a..85bf6aa75f56 100644
--- a/core/java/android/app/IActivityManager.aidl
+++ b/core/java/android/app/IActivityManager.aidl
@@ -207,7 +207,7 @@ interface IActivityManager {
boolean moveActivityTaskToBack(in IBinder token, boolean nonRoot);
void getMemoryInfo(out ActivityManager.MemoryInfo outInfo);
List<ActivityManager.ProcessErrorStateInfo> getProcessesInErrorState();
- boolean clearApplicationUserData(in String packageName,
+ boolean clearApplicationUserData(in String packageName, boolean keepState,
in IPackageDataObserver observer, int userId);
void forceStopPackage(in String packageName, int userId);
boolean killPids(in int[] pids, in String reason, boolean secure);