Loading core/java/android/content/res/AssetManager.java +6 −13 Original line number Diff line number Diff line Loading @@ -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"; Loading Loading @@ -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*/)); Loading @@ -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()]); Loading services/core/java/com/android/server/om/IdmapManager.java +14 −36 Original line number Diff line number Diff line Loading @@ -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"); Loading @@ -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(); } Loading @@ -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)) { Loading @@ -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()); Loading @@ -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; Loading @@ -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) { Loading @@ -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(); } } /** Loading services/core/java/com/android/server/om/OverlayManagerService.java +2 −4 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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"); Loading @@ -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()); Loading services/java/com/android/server/SystemServer.java +1 −1 Original line number Diff line number Diff line Loading @@ -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"); Loading services/tests/servicestests/src/com/android/server/om/OverlayManagerServiceImplTests.java +1 −1 Original line number Diff line number Diff line Loading @@ -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; } Loading Loading
core/java/android/content/res/AssetManager.java +6 −13 Original line number Diff line number Diff line Loading @@ -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"; Loading Loading @@ -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*/)); Loading @@ -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()]); Loading
services/core/java/com/android/server/om/IdmapManager.java +14 −36 Original line number Diff line number Diff line Loading @@ -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"); Loading @@ -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(); } Loading @@ -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)) { Loading @@ -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()); Loading @@ -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; Loading @@ -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) { Loading @@ -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(); } } /** Loading
services/core/java/com/android/server/om/OverlayManagerService.java +2 −4 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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"); Loading @@ -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()); Loading
services/java/com/android/server/SystemServer.java +1 −1 Original line number Diff line number Diff line Loading @@ -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"); Loading
services/tests/servicestests/src/com/android/server/om/OverlayManagerServiceImplTests.java +1 −1 Original line number Diff line number Diff line Loading @@ -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; } Loading