OSDN Git Service

Cancel alarms & jobs when an app's data is cleared
authorChristopher Tate <ctate@google.com>
Fri, 8 Dec 2017 00:54:04 +0000 (16:54 -0800)
committerChristopher Tate <ctate@google.com>
Fri, 8 Dec 2017 21:53:42 +0000 (13:53 -0800)
commit1d99c391ecd30c27be2e8f61aa9ec64546d15d4b
tree76e3378f4da2b13f1c6295d18570c7ff43173eb9
parentab39cc5797ae7d2298b25f543cbb2e175356ebe7
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
13 files changed:
core/java/android/app/ActivityManager.java
core/java/android/app/IActivityManager.aidl
services/backup/java/com/android/server/backup/RefactoredBackupManagerService.java
services/backup/java/com/android/server/backup/restore/FullRestoreEngine.java
services/backup/java/com/android/server/backup/restore/PerformAdbRestoreTask.java
services/backup/java/com/android/server/backup/restore/PerformUnifiedRestoreTask.java
services/core/java/com/android/server/AlarmManagerInternal.java [new file with mode: 0644]
services/core/java/com/android/server/AlarmManagerService.java
services/core/java/com/android/server/am/ActivityManagerService.java
services/core/java/com/android/server/job/JobSchedulerInternal.java
services/core/java/com/android/server/job/JobSchedulerService.java
services/core/java/com/android/server/pm/PackageManagerShellCommand.java
services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java