diff options
| author | 2020-06-29 21:22:38 +0000 | |
|---|---|---|
| committer | 2020-06-29 21:22:38 +0000 | |
| commit | 062b1514152fda32ebf6ea710583d5e5da63381a (patch) | |
| tree | dd14784f1b8f2a0d18e9d5a69b73a5806fcfa375 | |
| parent | d43e376c3b06b9a580d0f5e9cb310542a289f856 (diff) | |
| parent | bccdd48eb41ff305182cb57b681d27dcfdb2f649 (diff) | |
Merge "Whitelist package verifiers for bg operation" into rvc-dev
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) { |