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

Commit 920105c3 authored by Lee Chou's avatar Lee Chou
Browse files

Revert "Remove exception from OverlayConfig zygote method"

Commit ag/9740370 caused problem with robotests b/149806146
The fix ag/10373855 froze targets like run_host_tests
This revert will unfreeze run_host_tests but robotests will break

Bug: 150011638
Test: m RunSettingsRoboTests0
Change-Id: Ibe954e9d0dc1542477ba7156da5799479631cfb0
parent fdd209e9
Loading
Loading
Loading
Loading
+18 −5
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.annotation.Nullable;
import android.content.pm.PackagePartitions;
import android.content.pm.parsing.ParsingPackageRead;
import android.os.Build;
import android.os.Process;
import android.os.Trace;
import android.util.ArrayMap;
import android.util.Log;
@@ -185,6 +186,13 @@ public class OverlayConfig {
     */
    @NonNull
    public static OverlayConfig getZygoteInstance() {
        if (Process.myUid() != Process.ROOT_UID) {
            // Scan the overlays in the zygote process to generate configuration settings for
            // overlays on the system image. Do not cache this instance so OverlayConfig will not
            // be present in applications by default.
            throw new IllegalStateException("Can only be invoked in the root process");
        }

        Trace.traceBegin(Trace.TRACE_TAG_RRO, "OverlayConfig#getZygoteInstance");
        try {
            return new OverlayConfig(null /* rootDirectory */, OverlayScanner::new,
@@ -201,12 +209,13 @@ public class OverlayConfig {
     */
    @NonNull
    public static OverlayConfig initializeSystemInstance(PackageProvider packageProvider) {
        if (Process.myUid() != Process.SYSTEM_UID) {
            throw new IllegalStateException("Can only be invoked in the system process");
        }

        Trace.traceBegin(Trace.TRACE_TAG_RRO, "OverlayConfig#initializeSystemInstance");
        try {
        sInstance = new OverlayConfig(null, null, packageProvider);
        } finally {
        Trace.traceEnd(Trace.TRACE_TAG_RRO);
        }
        return sInstance;
    }

@@ -370,6 +379,10 @@ public class OverlayConfig {
     */
    @NonNull
    public String[] createImmutableFrameworkIdmapsInZygote() {
        if (Process.myUid() != Process.ROOT_UID) {
            throw new IllegalStateException("This method can only be called from the root process");
        }

        final String targetPath = "/system/framework/framework-res.apk";
        final ArrayList<String> idmapPaths = new ArrayList<>();
        final ArrayList<IdmapInvocation> idmapInvocations =