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

Commit 77b53b2c authored by Mårten Kongstad's avatar Mårten Kongstad Committed by Todd Kennedy
Browse files

Remove the FEATURE_FLAG_IDMAP2 flag

Test: atest OverlayDeviceTests OverlayHostTests FrameworksServicesTests:com.android.server.om CtsAppSecurityHostTestCases:OverlayHostTest

Change-Id: Ib68eaf7f721c5d440fe7185777e88e23cb9840a4
parent ca7d8451
Loading
Loading
Loading
Loading
+6 −13
Original line number Diff line number Diff line
@@ -60,7 +60,6 @@ import java.util.Map;
public final class AssetManager implements AutoCloseable {
    private static final String TAG = "AssetManager";
    private static final boolean DEBUG_REFS = false;
    private static final boolean FEATURE_FLAG_IDMAP2 = true;

    private static final String FRAMEWORK_APK_PATH = "/system/framework/framework-res.apk";

@@ -202,9 +201,7 @@ public final class AssetManager implements AutoCloseable {
        try {
            final ArrayList<ApkAssets> apkAssets = new ArrayList<>();
            apkAssets.add(ApkAssets.loadFromPath(FRAMEWORK_APK_PATH, true /*system*/));
            if (FEATURE_FLAG_IDMAP2) {
                final String[] systemIdmapPaths =
                    nativeCreateIdmapsForStaticOverlaysTargetingAndroid();
            final String[] systemIdmapPaths = nativeCreateIdmapsForStaticOverlaysTargetingAndroid();
            if (systemIdmapPaths != null) {
                for (String idmapPath : systemIdmapPaths) {
                    apkAssets.add(ApkAssets.loadOverlayFromPath(idmapPath, true /*system*/));
@@ -213,10 +210,6 @@ public final class AssetManager implements AutoCloseable {
                Log.w(TAG, "'idmap2 --scan' failed: no static=\"true\" overlays targeting "
                        + "\"android\" will be loaded");
            }
            } else {
                nativeVerifySystemIdmaps();
                loadStaticRuntimeOverlays(apkAssets);
            }

            sSystemApkAssetsSet = new ArraySet<>(apkAssets);
            sSystemApkAssets = apkAssets.toArray(new ApkAssets[apkAssets.size()]);
+14 −36
Original line number Diff line number Diff line
@@ -30,20 +30,17 @@ import android.os.UserHandle;
import android.util.Slog;

import com.android.server.om.OverlayManagerServiceImpl.PackageManagerHelper;
import com.android.server.pm.Installer;

import java.io.File;

/**
 * Handle the creation and deletion of idmap files.
 *
 * The actual work is performed by the idmap binary, launched through Installer
 * and installd (or idmap2).
 * The actual work is performed by the idmap binary, launched through idmap2d.
 *
 * Note: this class is subclassed in the OMS unit tests, and hence not marked as final.
 */
class IdmapManager {
    private static final boolean FEATURE_FLAG_IDMAP2 = true;
    private static final boolean VENDOR_IS_Q_OR_LATER;
    static {
        final String value = SystemProperties.get("ro.vndk.version", "29");
@@ -58,12 +55,10 @@ class IdmapManager {
        VENDOR_IS_Q_OR_LATER = isQOrLater;
    }

    private final Installer mInstaller;
    private final PackageManagerHelper mPackageManager;
    private final IdmapDaemon mIdmapDaemon;

    IdmapManager(final Installer installer, final PackageManagerHelper packageManager) {
        mInstaller = installer;
    IdmapManager(final PackageManagerHelper packageManager) {
        mPackageManager = packageManager;
        mIdmapDaemon = IdmapDaemon.getInstance();
    }
@@ -78,7 +73,6 @@ class IdmapManager {
        final String targetPath = targetPackage.applicationInfo.getBaseCodePath();
        final String overlayPath = overlayPackage.applicationInfo.getBaseCodePath();
        try {
            if (FEATURE_FLAG_IDMAP2) {
            int policies = calculateFulfilledPolicies(targetPackage, overlayPackage, userId);
            boolean enforce = enforceOverlayable(overlayPackage);
            if (mIdmapDaemon.verifyIdmap(overlayPath, policies, enforce, userId)) {
@@ -86,10 +80,6 @@ class IdmapManager {
            }
            return mIdmapDaemon.createIdmap(targetPath, overlayPath, policies,
                    enforce, userId) != null;
            } else {
                mInstaller.idmap(targetPath, overlayPath, sharedGid);
                return true;
            }
        } catch (Exception e) {
            Slog.w(TAG, "failed to generate idmap for " + targetPath + " and "
                    + overlayPath + ": " + e.getMessage());
@@ -102,12 +92,7 @@ class IdmapManager {
            Slog.d(TAG, "remove idmap for " + oi.baseCodePath);
        }
        try {
            if (FEATURE_FLAG_IDMAP2) {
            return mIdmapDaemon.removeIdmap(oi.baseCodePath, userId);
            } else {
                mInstaller.removeIdmap(oi.baseCodePath);
                return true;
            }
        } catch (Exception e) {
            Slog.w(TAG, "failed to remove idmap for " + oi.baseCodePath + ": " + e.getMessage());
            return false;
@@ -125,7 +110,6 @@ class IdmapManager {

    private @NonNull String getIdmapPath(@NonNull final String overlayPackagePath,
            final int userId) {
        if (FEATURE_FLAG_IDMAP2) {
        try {
            return mIdmapDaemon.getIdmapPath(overlayPackagePath, userId);
        } catch (Exception e) {
@@ -133,12 +117,6 @@ class IdmapManager {
                    + e.getMessage());
            return "";
        }
        } else {
            final StringBuilder sb = new StringBuilder("/data/resource-cache/");
            sb.append(overlayPackagePath.substring(1).replace('/', '@'));
            sb.append("@idmap");
            return sb.toString();
        }
    }

    /**
+2 −4
Original line number Diff line number Diff line
@@ -62,7 +62,6 @@ import com.android.server.FgThread;
import com.android.server.IoThread;
import com.android.server.LocalServices;
import com.android.server.SystemService;
import com.android.server.pm.Installer;
import com.android.server.pm.UserManagerService;

import libcore.util.EmptyArray;
@@ -230,8 +229,7 @@ public final class OverlayManagerService extends SystemService {

    private final AtomicBoolean mPersistSettingsScheduled = new AtomicBoolean(false);

    public OverlayManagerService(@NonNull final Context context,
            @NonNull final Installer installer) {
    public OverlayManagerService(@NonNull final Context context) {
        super(context);
        try {
            traceBegin(TRACE_TAG_RRO, "OMS#OverlayManagerService");
@@ -239,7 +237,7 @@ public final class OverlayManagerService extends SystemService {
                    new File(Environment.getDataSystemDirectory(), "overlays.xml"), "overlays");
            mPackageManager = new PackageManagerHelper();
            mUserManager = UserManagerService.getInstance();
            IdmapManager im = new IdmapManager(installer, mPackageManager);
            IdmapManager im = new IdmapManager(mPackageManager);
            mSettings = new OverlayManagerSettings();
            mImpl = new OverlayManagerServiceImpl(mPackageManager, im, mSettings,
                    getDefaultOverlayPackages(), new OverlayChangeListener());
+1 −1
Original line number Diff line number Diff line
@@ -804,7 +804,7 @@ public final class SystemServer {

        // Manages Overlay packages
        t.traceBegin("StartOverlayManagerService");
        mSystemServiceManager.startService(new OverlayManagerService(mSystemContext, installer));
        mSystemServiceManager.startService(new OverlayManagerService(mSystemContext));
        t.traceEnd();

        t.traceBegin("StartSensorPrivacyService");
+1 −1
Original line number Diff line number Diff line
@@ -444,7 +444,7 @@ public class OverlayManagerServiceImplTests {
        private Set<String> mIdmapFiles = new ArraySet<>();

        DummyIdmapManager(DummyDeviceState state, DummyPackageManagerHelper packageManagerHelper) {
            super(null, packageManagerHelper);
            super(packageManagerHelper);
            mState = state;
        }