From 68fdb1e21533a8b509daeadd18c7a7817df436d5 Mon Sep 17 00:00:00 2001 From: Alan Stokes Date: Thu, 26 Mar 2020 15:53:55 +0000 Subject: [PATCH] Remove custom targeting logic for app data isolation. Remove the ability to set the target SDK level where this is enabled via DeviceConfig. Switch to using standard AppCompat targeting. This was used to enable it via experiment for more apps in droidfood. We have now ended this experiment so this functionality is no longer needed. Bug: 152391125 Test: atest AppDataIsolationTests AdoptableHostTest Test: Boot device, see "Compat change id reported: 143937733" in logs (enabled & disabled) Change-Id: I0ff429963c40e89d9e3445cc96620dfa5f05d129 --- .../com/android/server/am/ProcessList.java | 31 +++---------------- 1 file changed, 4 insertions(+), 27 deletions(-) diff --git a/services/core/java/com/android/server/am/ProcessList.java b/services/core/java/com/android/server/am/ProcessList.java index 4d08bd2e0ed78..595275d201540 100644 --- a/services/core/java/com/android/server/am/ProcessList.java +++ b/services/core/java/com/android/server/am/ProcessList.java @@ -94,7 +94,6 @@ import android.os.Trace; import android.os.UserHandle; import android.os.storage.StorageManager; import android.os.storage.StorageManagerInternal; -import android.provider.DeviceConfig; import android.system.Os; import android.text.TextUtils; import android.util.ArrayMap; @@ -153,10 +152,6 @@ public final class ProcessList { static final String ANDROID_VOLD_APP_DATA_ISOLATION_ENABLED_PROPERTY = "persist.sys.vold_app_data_isolation_enabled"; - // A device config to control the minimum target SDK to enable app data isolation - static final String ANDROID_APP_DATA_ISOLATION_MIN_SDK = - "android_app_data_isolation_min_sdk"; - // The minimum time we allow between crashes, for us to consider this // application to be bad and stop and its services and reject broadcasts. static final int MIN_CRASH_INTERVAL = 60 * 1000; @@ -2125,25 +2120,6 @@ public final class ProcessList { } } - private boolean shouldIsolateAppData(ProcessRecord app) { - if (!mAppDataIsolationEnabled) { - return false; - } - if (!UserHandle.isApp(app.uid)) { - return false; - } - final int minTargetSdk = DeviceConfig.getInt(DeviceConfig.NAMESPACE_ACTIVITY_MANAGER, - ANDROID_APP_DATA_ISOLATION_MIN_SDK, Build.VERSION_CODES.R); - if (app.info.targetSdkVersion < minTargetSdk) { - return false; - } - - // TODO(b/147266020): Remove non-standard gating above & switch to isChangeEnabled. - mPlatformCompat.reportChange(APP_DATA_DIRECTORY_ISOLATION, app.info); - - return true; - } - private Map> getPackageAppDataInfoMap(PackageManagerInternal pmInt, String[] packages, int uid) { Map> result = new ArrayMap<>(packages.length); @@ -2189,7 +2165,8 @@ public final class ProcessList { final Map> pkgDataInfoMap; boolean bindMountAppStorageDirs = false; - if (shouldIsolateAppData(app)) { + if (mAppDataIsolationEnabled && UserHandle.isApp(app.uid) + && mPlatformCompat.isChangeEnabled(APP_DATA_DIRECTORY_ISOLATION, app.info)) { // Get all packages belongs to the same shared uid. sharedPackages is empty array // if it doesn't have shared uid. final PackageManagerInternal pmInt = mService.getPackageManagerInternalLocked(); @@ -2199,8 +2176,8 @@ public final class ProcessList { ? new String[]{app.info.packageName} : sharedPackages, uid); int userId = UserHandle.getUserId(uid); - if (mVoldAppDataIsolationEnabled && UserHandle.isApp(app.uid) && - !storageManagerInternal.isExternalStorageService(uid)) { + if (mVoldAppDataIsolationEnabled + && !storageManagerInternal.isExternalStorageService(uid)) { bindMountAppStorageDirs = true; if (!storageManagerInternal.prepareStorageDirs(userId, pkgDataInfoMap.keySet(), app.processName)) {