Loading services/core/java/com/android/server/pm/PackageManagerService.java +12 −11 Original line number Diff line number Diff line Loading @@ -12271,19 +12271,18 @@ public class PackageManagerService extends IPackageManager.Stub public ArraySet<String> getOptimizablePackages() { ArraySet<String> pkgs = new ArraySet<>(); final boolean hibernationEnabled = AppHibernationService.isAppHibernationEnabled(); AppHibernationManagerInternal appHibernationManager = mInjector.getLocalService(AppHibernationManagerInternal.class); synchronized (mLock) { for (AndroidPackage p : mPackages.values()) { // Checking hibernation state is an inexpensive call. boolean isHibernating = hibernationEnabled && appHibernationManager.isHibernatingGlobally(p.getPackageName()); if (PackageDexOptimizer.canOptimizePackage(p) && !isHibernating) { if (PackageDexOptimizer.canOptimizePackage(p)) { pkgs.add(p.getPackageName()); } } } if (AppHibernationService.isAppHibernationEnabled()) { AppHibernationManagerInternal appHibernationManager = mInjector.getLocalService(AppHibernationManagerInternal.class); pkgs.removeIf(pkgName -> appHibernationManager.isHibernatingGlobally(pkgName)); } return pkgs; } Loading Loading @@ -23464,10 +23463,12 @@ public class PackageManagerService extends IPackageManager.Stub } } if (shouldUnhibernate) { mHandler.post(() -> { AppHibernationManagerInternal ah = mInjector.getLocalService(AppHibernationManagerInternal.class); ah.setHibernatingForUser(packageName, userId, false); ah.setHibernatingGlobally(packageName, false); }); } } services/tests/mockingservicestests/src/com/android/server/pm/PackageManagerServiceHibernationTests.kt +11 −2 Original line number Diff line number Diff line Loading @@ -17,8 +17,12 @@ package com.android.server.pm import android.os.Build import android.os.Handler import android.provider.DeviceConfig import android.provider.DeviceConfig.NAMESPACE_APP_HIBERNATION import android.testing.AndroidTestingRunner import android.testing.TestableLooper import android.testing.TestableLooper.RunWithLooper import com.android.server.apphibernation.AppHibernationManagerInternal import com.android.server.extendedtestutils.wheneverStatic import com.android.server.testutils.whenever Loading @@ -28,12 +32,12 @@ import org.junit.Before import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.junit.runners.JUnit4 import org.mockito.Mock import org.mockito.Mockito.verify import org.mockito.MockitoAnnotations @RunWith(JUnit4::class) @RunWith(AndroidTestingRunner::class) @RunWithLooper class PackageManagerServiceHibernationTests { companion object { Loading @@ -60,6 +64,8 @@ class PackageManagerServiceHibernationTests { rule.system().stageNominalSystemState() whenever(rule.mocks().injector.getLocalService(AppHibernationManagerInternal::class.java)) .thenReturn(appHibernationManager) whenever(rule.mocks().injector.handler) .thenReturn(Handler(TestableLooper.get(this).looper)) } @Test Loading @@ -74,6 +80,9 @@ class PackageManagerServiceHibernationTests { ps!!.setStopped(true, TEST_USER_ID) pm.setPackageStoppedState(TEST_PACKAGE_NAME, false, TEST_USER_ID) TestableLooper.get(this).processAllMessages() verify(appHibernationManager).setHibernatingForUser(TEST_PACKAGE_NAME, TEST_USER_ID, false) verify(appHibernationManager).setHibernatingGlobally(TEST_PACKAGE_NAME, false) } Loading Loading
services/core/java/com/android/server/pm/PackageManagerService.java +12 −11 Original line number Diff line number Diff line Loading @@ -12271,19 +12271,18 @@ public class PackageManagerService extends IPackageManager.Stub public ArraySet<String> getOptimizablePackages() { ArraySet<String> pkgs = new ArraySet<>(); final boolean hibernationEnabled = AppHibernationService.isAppHibernationEnabled(); AppHibernationManagerInternal appHibernationManager = mInjector.getLocalService(AppHibernationManagerInternal.class); synchronized (mLock) { for (AndroidPackage p : mPackages.values()) { // Checking hibernation state is an inexpensive call. boolean isHibernating = hibernationEnabled && appHibernationManager.isHibernatingGlobally(p.getPackageName()); if (PackageDexOptimizer.canOptimizePackage(p) && !isHibernating) { if (PackageDexOptimizer.canOptimizePackage(p)) { pkgs.add(p.getPackageName()); } } } if (AppHibernationService.isAppHibernationEnabled()) { AppHibernationManagerInternal appHibernationManager = mInjector.getLocalService(AppHibernationManagerInternal.class); pkgs.removeIf(pkgName -> appHibernationManager.isHibernatingGlobally(pkgName)); } return pkgs; } Loading Loading @@ -23464,10 +23463,12 @@ public class PackageManagerService extends IPackageManager.Stub } } if (shouldUnhibernate) { mHandler.post(() -> { AppHibernationManagerInternal ah = mInjector.getLocalService(AppHibernationManagerInternal.class); ah.setHibernatingForUser(packageName, userId, false); ah.setHibernatingGlobally(packageName, false); }); } }
services/tests/mockingservicestests/src/com/android/server/pm/PackageManagerServiceHibernationTests.kt +11 −2 Original line number Diff line number Diff line Loading @@ -17,8 +17,12 @@ package com.android.server.pm import android.os.Build import android.os.Handler import android.provider.DeviceConfig import android.provider.DeviceConfig.NAMESPACE_APP_HIBERNATION import android.testing.AndroidTestingRunner import android.testing.TestableLooper import android.testing.TestableLooper.RunWithLooper import com.android.server.apphibernation.AppHibernationManagerInternal import com.android.server.extendedtestutils.wheneverStatic import com.android.server.testutils.whenever Loading @@ -28,12 +32,12 @@ import org.junit.Before import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.junit.runners.JUnit4 import org.mockito.Mock import org.mockito.Mockito.verify import org.mockito.MockitoAnnotations @RunWith(JUnit4::class) @RunWith(AndroidTestingRunner::class) @RunWithLooper class PackageManagerServiceHibernationTests { companion object { Loading @@ -60,6 +64,8 @@ class PackageManagerServiceHibernationTests { rule.system().stageNominalSystemState() whenever(rule.mocks().injector.getLocalService(AppHibernationManagerInternal::class.java)) .thenReturn(appHibernationManager) whenever(rule.mocks().injector.handler) .thenReturn(Handler(TestableLooper.get(this).looper)) } @Test Loading @@ -74,6 +80,9 @@ class PackageManagerServiceHibernationTests { ps!!.setStopped(true, TEST_USER_ID) pm.setPackageStoppedState(TEST_PACKAGE_NAME, false, TEST_USER_ID) TestableLooper.get(this).processAllMessages() verify(appHibernationManager).setHibernatingForUser(TEST_PACKAGE_NAME, TEST_USER_ID, false) verify(appHibernationManager).setHibernatingGlobally(TEST_PACKAGE_NAME, false) } Loading