Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit db748a6d authored by Alan Stokes's avatar Alan Stokes Committed by Automerger Merge Worker
Browse files

Merge "Remove custom targeting logic for app data isolation." into rvc-dev am: 8a45b969

Change-Id: I77a31bc8e1cec9bafacd267c9e3ecaaa05c1c891
parents f53eeeb8 8a45b969
Loading
Loading
Loading
Loading
+4 −27
Original line number Original line Diff line number Diff line
@@ -94,7 +94,6 @@ import android.os.Trace;
import android.os.UserHandle;
import android.os.UserHandle;
import android.os.storage.StorageManager;
import android.os.storage.StorageManager;
import android.os.storage.StorageManagerInternal;
import android.os.storage.StorageManagerInternal;
import android.provider.DeviceConfig;
import android.system.Os;
import android.system.Os;
import android.text.TextUtils;
import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.ArrayMap;
@@ -153,10 +152,6 @@ public final class ProcessList {
    static final String ANDROID_VOLD_APP_DATA_ISOLATION_ENABLED_PROPERTY =
    static final String ANDROID_VOLD_APP_DATA_ISOLATION_ENABLED_PROPERTY =
            "persist.sys.vold_app_data_isolation_enabled";
            "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
    // The minimum time we allow between crashes, for us to consider this
    // application to be bad and stop and its services and reject broadcasts.
    // application to be bad and stop and its services and reject broadcasts.
    static final int MIN_CRASH_INTERVAL = 60 * 1000;
    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<String, Pair<String, Long>> getPackageAppDataInfoMap(PackageManagerInternal pmInt,
    private Map<String, Pair<String, Long>> getPackageAppDataInfoMap(PackageManagerInternal pmInt,
            String[] packages, int uid) {
            String[] packages, int uid) {
        Map<String, Pair<String, Long>> result = new ArrayMap<>(packages.length);
        Map<String, Pair<String, Long>> result = new ArrayMap<>(packages.length);
@@ -2189,7 +2165,8 @@ public final class ProcessList {
            final Map<String, Pair<String, Long>> pkgDataInfoMap;
            final Map<String, Pair<String, Long>> pkgDataInfoMap;
            boolean bindMountAppStorageDirs = false;
            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
                // Get all packages belongs to the same shared uid. sharedPackages is empty array
                // if it doesn't have shared uid.
                // if it doesn't have shared uid.
                final PackageManagerInternal pmInt = mService.getPackageManagerInternalLocked();
                final PackageManagerInternal pmInt = mService.getPackageManagerInternalLocked();
@@ -2199,8 +2176,8 @@ public final class ProcessList {
                        ? new String[]{app.info.packageName} : sharedPackages, uid);
                        ? new String[]{app.info.packageName} : sharedPackages, uid);


                int userId = UserHandle.getUserId(uid);
                int userId = UserHandle.getUserId(uid);
                if (mVoldAppDataIsolationEnabled && UserHandle.isApp(app.uid) &&
                if (mVoldAppDataIsolationEnabled
                        !storageManagerInternal.isExternalStorageService(uid)) {
                        && !storageManagerInternal.isExternalStorageService(uid)) {
                    bindMountAppStorageDirs = true;
                    bindMountAppStorageDirs = true;
                    if (!storageManagerInternal.prepareStorageDirs(userId, pkgDataInfoMap.keySet(),
                    if (!storageManagerInternal.prepareStorageDirs(userId, pkgDataInfoMap.keySet(),
                            app.processName)) {
                            app.processName)) {