summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Chris Tate <ctate@android.com> 2020-06-29 21:22:38 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2020-06-29 21:22:38 +0000
commit062b1514152fda32ebf6ea710583d5e5da63381a (patch)
treedd14784f1b8f2a0d18e9d5a69b73a5806fcfa375
parentd43e376c3b06b9a580d0f5e9cb310542a289f856 (diff)
parentbccdd48eb41ff305182cb57b681d27dcfdb2f649 (diff)
Merge "Whitelist package verifiers for bg operation" into rvc-dev
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java14
-rw-r--r--services/core/java/com/android/server/am/BroadcastQueue.java4
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java13
3 files changed, 25 insertions, 6 deletions
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index c9dbacda368c..a38d42b92600 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -18284,11 +18284,15 @@ public class ActivityManagerService extends IActivityManager.Stub
}
}
- // Now safely dispatch changes to device idle controller.
- for (int i = 0; i < N; i++) {
- PendingTempWhitelist ptw = list[i];
- mLocalDeviceIdleController.addPowerSaveTempWhitelistAppDirect(ptw.targetUid,
- ptw.duration, true, ptw.tag);
+ // Now safely dispatch changes to device idle controller. Skip this if we're early
+ // in boot and the controller hasn't yet been brought online: we do not apply
+ // device idle policy anyway at this phase.
+ if (mLocalDeviceIdleController != null) {
+ for (int i = 0; i < N; i++) {
+ PendingTempWhitelist ptw = list[i];
+ mLocalDeviceIdleController.addPowerSaveTempWhitelistAppDirect(ptw.targetUid,
+ ptw.duration, true, ptw.tag);
+ }
}
// And now we can safely remove them from the map.
diff --git a/services/core/java/com/android/server/am/BroadcastQueue.java b/services/core/java/com/android/server/am/BroadcastQueue.java
index 1cc41b22838e..5124c4a4797e 100644
--- a/services/core/java/com/android/server/am/BroadcastQueue.java
+++ b/services/core/java/com/android/server/am/BroadcastQueue.java
@@ -904,6 +904,10 @@ public final class BroadcastQueue {
} else if (r.intent.getData() != null) {
b.append(r.intent.getData());
}
+ if (DEBUG_BROADCAST) {
+ Slog.v(TAG, "Broadcast temp whitelist uid=" + uid + " duration=" + duration
+ + " : " + b.toString());
+ }
mService.tempWhitelistUidLocked(uid, duration, b.toString());
}
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 088c5daf30a4..670b88e4a0c9 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -15173,8 +15173,13 @@ public class PackageManagerService extends IPackageManager.Stub
idleController.addPowerSaveTempWhitelistAppDirect(Process.myUid(),
idleDuration,
false, "integrity component");
+ final BroadcastOptions options = BroadcastOptions.makeBasic();
+ options.setTemporaryAppWhitelistDuration(idleDuration);
+
mContext.sendOrderedBroadcastAsUser(integrityVerification, UserHandle.SYSTEM,
/* receiverPermission= */ null,
+ /* appOp= */ AppOpsManager.OP_NONE,
+ /* options= */ options.toBundle(),
new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
@@ -15274,6 +15279,8 @@ public class PackageManagerService extends IPackageManager.Stub
DeviceIdleInternal idleController =
mInjector.getLocalDeviceIdleController();
final long idleDuration = getVerificationTimeout();
+ final BroadcastOptions options = BroadcastOptions.makeBasic();
+ options.setTemporaryAppWhitelistDuration(idleDuration);
/*
* If any sufficient verifiers were listed in the package
@@ -15293,7 +15300,9 @@ public class PackageManagerService extends IPackageManager.Stub
final Intent sufficientIntent = new Intent(verification);
sufficientIntent.setComponent(verifierComponent);
- mContext.sendBroadcastAsUser(sufficientIntent, verifierUser);
+ mContext.sendBroadcastAsUser(sufficientIntent, verifierUser,
+ /* receiverPermission= */ null,
+ options.toBundle());
}
}
}
@@ -15312,6 +15321,8 @@ public class PackageManagerService extends IPackageManager.Stub
verifierUser.getIdentifier(), false, "package verifier");
mContext.sendOrderedBroadcastAsUser(verification, verifierUser,
android.Manifest.permission.PACKAGE_VERIFICATION_AGENT,
+ /* appOp= */ AppOpsManager.OP_NONE,
+ /* options= */ options.toBundle(),
new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {