summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Victor Hsieh <victorhsieh@google.com> 2022-08-31 21:13:57 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2022-08-31 21:13:57 +0000
commit3f40a95da128d38c927345cee3977961dced5282 (patch)
treec877959488247fb2a108bc39a742379c8392479b
parent7761e7dc2f9b9543ac0b56704c95e4f9ec7ef8da (diff)
parent3277068bf27670ce521584f71509e024ced3904e (diff)
Merge "Deprecate pm.dexopt.priv-apps-oob{,-list}"
-rw-r--r--services/core/java/com/android/server/am/ProcessList.java9
-rw-r--r--services/core/java/com/android/server/pm/PackageDexOptimizer.java11
-rw-r--r--services/core/java/com/android/server/pm/dex/DexManager.java46
-rw-r--r--services/tests/mockingservicestests/src/com/android/server/pm/dex/DexManagerTests.java41
4 files changed, 2 insertions, 105 deletions
diff --git a/services/core/java/com/android/server/am/ProcessList.java b/services/core/java/com/android/server/am/ProcessList.java
index ccbca76d1868..48eb0de9011f 100644
--- a/services/core/java/com/android/server/am/ProcessList.java
+++ b/services/core/java/com/android/server/am/ProcessList.java
@@ -133,7 +133,6 @@ import com.android.server.SystemConfig;
import com.android.server.Watchdog;
import com.android.server.am.ActivityManagerService.ProcessChangeItem;
import com.android.server.compat.PlatformCompat;
-import com.android.server.pm.dex.DexManager;
import com.android.server.pm.parsing.pkg.AndroidPackage;
import com.android.server.pm.pkg.PackageStateInternal;
import com.android.server.wm.ActivityServiceConnectionsHolder;
@@ -1790,14 +1789,6 @@ public final class ProcessList {
if (app.info.isEmbeddedDexUsed()) {
runtimeFlags |= Zygote.ONLY_USE_SYSTEM_OAT_FILES;
- } else if (app.info.isPrivilegedApp()) {
- final PackageList pkgList = app.getPkgList();
- synchronized (pkgList) {
- if (DexManager.isPackageSelectedToRunOob(
- pkgList.getPackageListLocked().keySet())) {
- runtimeFlags |= Zygote.ONLY_USE_SYSTEM_OAT_FILES;
- }
- }
}
if (!disableHiddenApiChecks && !mService.mHiddenApiBlacklist.isDisabled()) {
diff --git a/services/core/java/com/android/server/pm/PackageDexOptimizer.java b/services/core/java/com/android/server/pm/PackageDexOptimizer.java
index 6cfe093df6d0..4b6543b54f2f 100644
--- a/services/core/java/com/android/server/pm/PackageDexOptimizer.java
+++ b/services/core/java/com/android/server/pm/PackageDexOptimizer.java
@@ -74,7 +74,6 @@ import com.android.server.pm.Installer.InstallerException;
import com.android.server.pm.dex.ArtManagerService;
import com.android.server.pm.dex.ArtStatsLogUtils;
import com.android.server.pm.dex.ArtStatsLogUtils.ArtStatsLogger;
-import com.android.server.pm.dex.DexManager;
import com.android.server.pm.dex.DexoptOptions;
import com.android.server.pm.dex.DexoptUtils;
import com.android.server.pm.dex.PackageDexUsage;
@@ -787,10 +786,7 @@ public class PackageDexOptimizer {
*/
private String getRealCompilerFilter(ApplicationInfo info, String targetCompilerFilter,
boolean isUsedByOtherApps) {
- // When an app or priv app is configured to run out of box, only verify it.
- if (info.isEmbeddedDexUsed()
- || (info.isPrivilegedApp()
- && DexManager.isPackageSelectedToRunOob(info.packageName))) {
+ if (info.isEmbeddedDexUsed()) {
return "verify";
}
@@ -827,10 +823,7 @@ public class PackageDexOptimizer {
* handling the case where the package code is used by other apps.
*/
private String getRealCompilerFilter(AndroidPackage pkg, String targetCompilerFilter) {
- // When an app or priv app is configured to run out of box, only verify it.
- if (pkg.isUseEmbeddedDex()
- || (pkg.isPrivileged()
- && DexManager.isPackageSelectedToRunOob(pkg.getPackageName()))) {
+ if (pkg.isUseEmbeddedDex()) {
return "verify";
}
diff --git a/services/core/java/com/android/server/pm/dex/DexManager.java b/services/core/java/com/android/server/pm/dex/DexManager.java
index 17109e97ddf1..8c2da45da994 100644
--- a/services/core/java/com/android/server/pm/dex/DexManager.java
+++ b/services/core/java/com/android/server/pm/dex/DexManager.java
@@ -36,7 +36,6 @@ import android.os.FileUtils;
import android.os.PowerManager;
import android.os.RemoteException;
import android.os.ServiceManager;
-import android.os.SystemProperties;
import android.os.UserHandle;
import android.os.storage.StorageManager;
import android.util.Log;
@@ -58,8 +57,6 @@ import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
@@ -81,10 +78,6 @@ public class DexManager {
private static final String TAG = "DexManager";
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
- private static final String PROPERTY_NAME_PM_DEXOPT_PRIV_APPS_OOB = "pm.dexopt.priv-apps-oob";
- private static final String PROPERTY_NAME_PM_DEXOPT_PRIV_APPS_OOB_LIST =
- "pm.dexopt.priv-apps-oob-list";
-
// System server cannot load executable code outside system partitions.
// However it can load verification data - thus we pick the "verify" compiler filter.
private static final String SYSTEM_SERVER_COMPILER_FILTER = "verify";
@@ -910,45 +903,6 @@ public class DexManager {
}
/**
- * Returns whether the given package is in the list of privilaged apps that should run out of
- * box. This only makes sense if the feature is enabled. Note that when the the OOB list is
- * empty, all priv apps will run in OOB mode.
- */
- public static boolean isPackageSelectedToRunOob(String packageName) {
- return isPackageSelectedToRunOob(Arrays.asList(packageName));
- }
-
- /**
- * Returns whether any of the given packages are in the list of privilaged apps that should run
- * out of box. This only makes sense if the feature is enabled. Note that when the the OOB list
- * is empty, all priv apps will run in OOB mode.
- */
- public static boolean isPackageSelectedToRunOob(Collection<String> packageNamesInSameProcess) {
- return isPackageSelectedToRunOobInternal(
- SystemProperties.getBoolean(PROPERTY_NAME_PM_DEXOPT_PRIV_APPS_OOB, false),
- SystemProperties.get(PROPERTY_NAME_PM_DEXOPT_PRIV_APPS_OOB_LIST, "ALL"),
- packageNamesInSameProcess);
- }
-
- @VisibleForTesting
- /* package */ static boolean isPackageSelectedToRunOobInternal(boolean isEnabled,
- String whitelist, Collection<String> packageNamesInSameProcess) {
- if (!isEnabled) {
- return false;
- }
-
- if ("ALL".equals(whitelist)) {
- return true;
- }
- for (String oobPkgName : whitelist.split(",")) {
- if (packageNamesInSameProcess.contains(oobPkgName)) {
- return true;
- }
- }
- return false;
- }
-
- /**
* Generates log if the archive located at {@code fileName} has uncompressed dex file that can
* be direclty mapped.
*/
diff --git a/services/tests/mockingservicestests/src/com/android/server/pm/dex/DexManagerTests.java b/services/tests/mockingservicestests/src/com/android/server/pm/dex/DexManagerTests.java
index 9d269719db64..fb9cbb00255c 100644
--- a/services/tests/mockingservicestests/src/com/android/server/pm/dex/DexManagerTests.java
+++ b/services/tests/mockingservicestests/src/com/android/server/pm/dex/DexManagerTests.java
@@ -61,7 +61,6 @@ import org.mockito.quality.Strictness;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
@@ -1029,44 +1028,4 @@ public class DexManagerTests {
return mPackageInfo.applicationInfo.splitSourceDirs[length - 1];
}
}
-
- private boolean shouldPackageRunOob(boolean isDefaultEnabled, String whitelist,
- Collection<String> packageNamesInSameProcess) {
- return DexManager.isPackageSelectedToRunOobInternal(
- isDefaultEnabled, whitelist, packageNamesInSameProcess);
- }
-
- @Test
- public void testOobPackageSelectionDefault() {
- // Feature is off by default, not overriden
- assertFalse(shouldPackageRunOob(false, "ALL", null));
- }
-
- @Test
- public void testOobPackageSelectionWhitelist() {
- // Various allowlist of apps to run in OOB mode.
- final String kWhitelistApp0 = "com.priv.app0";
- final String kWhitelistApp1 = "com.priv.app1";
- final String kWhitelistApp2 = "com.priv.app2";
- final String kWhitelistApp1AndApp2 = "com.priv.app1,com.priv.app2";
-
- // Packages that shares the targeting process.
- final Collection<String> runningPackages = Arrays.asList("com.priv.app1", "com.priv.app2");
-
- // Feature is off, allowlist does not matter
- assertFalse(shouldPackageRunOob(false, kWhitelistApp0, runningPackages));
- assertFalse(shouldPackageRunOob(false, kWhitelistApp1, runningPackages));
- assertFalse(shouldPackageRunOob(false, "", runningPackages));
- assertFalse(shouldPackageRunOob(false, "ALL", runningPackages));
-
- // Feature is on, app not in allowlist
- assertFalse(shouldPackageRunOob(true, kWhitelistApp0, runningPackages));
- assertFalse(shouldPackageRunOob(true, "", runningPackages));
-
- // Feature is on, app in allowlist
- assertTrue(shouldPackageRunOob(true, kWhitelistApp1, runningPackages));
- assertTrue(shouldPackageRunOob(true, kWhitelistApp2, runningPackages));
- assertTrue(shouldPackageRunOob(true, kWhitelistApp1AndApp2, runningPackages));
- assertTrue(shouldPackageRunOob(true, "ALL", runningPackages));
- }
}