diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index e70dea4c5466b..4b294b972beda 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -258,6 +258,7 @@ import com.android.internal.util.Preconditions; import com.android.internal.util.XmlUtils; import com.android.server.AttributeCache; import com.android.server.BackgroundDexOptJobService; +import com.android.server.DeviceIdleController; import com.android.server.EventLogTags; import com.android.server.FgThread; import com.android.server.IntentResolver; @@ -850,6 +851,8 @@ public class PackageManagerService extends IPackageManager.Stub { private UserManagerInternal mUserManagerInternal; + private DeviceIdleController.LocalService mDeviceIdleController; + private File mCacheDir; private ArraySet mPrivappPermissionsViolations; @@ -3855,6 +3858,14 @@ public class PackageManagerService extends IPackageManager.Stub { return mUserManagerInternal; } + private DeviceIdleController.LocalService getDeviceIdleController() { + if (mDeviceIdleController == null) { + mDeviceIdleController = + LocalServices.getService(DeviceIdleController.LocalService.class); + } + return mDeviceIdleController; + } + /** * Update given flags when being used to request {@link PackageInfo}. */ @@ -14690,6 +14701,9 @@ public class PackageManagerService extends IPackageManager.Stub { final List sufficientVerifiers = matchVerifiers(pkgLite, receivers, verificationState); + DeviceIdleController.LocalService idleController = getDeviceIdleController(); + final long idleDuration = getVerificationTimeout(); + /* * If any sufficient verifiers were listed in the package * manifest, attempt to ask them. @@ -14702,6 +14716,9 @@ public class PackageManagerService extends IPackageManager.Stub { } else { for (int i = 0; i < N; i++) { final ComponentName verifierComponent = sufficientVerifiers.get(i); + idleController.addPowerSaveTempWhitelistApp(Process.myUid(), + verifierComponent.getPackageName(), idleDuration, + verifierUser.getIdentifier(), false, "package verifier"); final Intent sufficientIntent = new Intent(verification); sufficientIntent.setComponent(verifierComponent); @@ -14722,6 +14739,9 @@ public class PackageManagerService extends IPackageManager.Stub { * target BroadcastReceivers have run. */ verification.setComponent(requiredVerifierComponent); + idleController.addPowerSaveTempWhitelistApp(Process.myUid(), + requiredVerifierComponent.getPackageName(), idleDuration, + verifierUser.getIdentifier(), false, "package verifier"); mContext.sendOrderedBroadcastAsUser(verification, verifierUser, android.Manifest.permission.PACKAGE_VERIFICATION_AGENT, new BroadcastReceiver() {