Loading services/core/java/com/android/server/om/OverlayReferenceMapper.java +10 −6 Original line number Diff line number Diff line Loading @@ -18,14 +18,15 @@ package com.android.server.om; import android.annotation.NonNull; import android.annotation.Nullable; import com.android.server.pm.parsing.pkg.AndroidPackage; import android.text.TextUtils; import android.util.Pair; import android.util.Slog; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.CollectionUtils; import com.android.server.SystemConfig; import com.android.server.pm.parsing.pkg.AndroidPackage; import java.util.Collections; import java.util.HashMap; Loading Loading @@ -72,6 +73,8 @@ import java.util.Set; */ public class OverlayReferenceMapper { private static final String TAG = "OverlayReferenceMapper"; private final Object mLock = new Object(); /** Loading Loading @@ -144,7 +147,7 @@ public class OverlayReferenceMapper { public boolean isValidActor(@NonNull String targetName, @NonNull String actorPackageName) { synchronized (mLock) { assertMapBuilt(); ensureMapBuilt(); Set<String> validSet = mActorPkgToPkgs.get(actorPackageName); return validSet != null && validSet.contains(targetName); } Loading Loading @@ -292,10 +295,11 @@ public class OverlayReferenceMapper { } } private void assertMapBuilt() { private void ensureMapBuilt() { if (mDeferRebuild) { throw new IllegalStateException("The actor map must be built by calling " + "rebuildIfDeferred before it is queried"); rebuildIfDeferred(); Slog.w(TAG, "The actor map was queried before the system was ready, which may" + "result in decreased performance."); } } Loading Loading @@ -360,7 +364,7 @@ public class OverlayReferenceMapper { * Given the actor string from an overlayable definition, return the actor's package name. */ @Nullable String getActorPkg(String actor); String getActorPkg(@NonNull String actor); /** * Mock response of multiple overlay tags. Loading services/tests/servicestests/src/com/android/server/om/OverlayReferenceMapperTests.kt +1 −5 Original line number Diff line number Diff line Loading @@ -25,7 +25,6 @@ import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.junit.runners.Parameterized import org.testng.Assert.assertThrows @RunWith(Parameterized::class) class OverlayReferenceMapperTests { Loading Loading @@ -160,9 +159,6 @@ class OverlayReferenceMapperTests { expected.forEach { (actorPkgName, expectedPkgNames) -> expectedPkgNames.forEach { expectedPkgName -> if (deferRebuild) { assertThrows(IllegalStateException::class.java) { mapper.isValidActor(expectedPkgName, actorPkgName) } mapper.rebuildIfDeferred() deferRebuild = false } Loading @@ -187,7 +183,7 @@ class OverlayReferenceMapperTests { ) ) ) = OverlayReferenceMapper(deferRebuild, object : OverlayReferenceMapper.Provider { override fun getActorPkg(actor: String?) = override fun getActorPkg(actor: String) = OverlayActorEnforcer.getPackageNameForActor(actor, namedActors).first override fun getTargetToOverlayables(pkg: AndroidPackage) = Loading Loading
services/core/java/com/android/server/om/OverlayReferenceMapper.java +10 −6 Original line number Diff line number Diff line Loading @@ -18,14 +18,15 @@ package com.android.server.om; import android.annotation.NonNull; import android.annotation.Nullable; import com.android.server.pm.parsing.pkg.AndroidPackage; import android.text.TextUtils; import android.util.Pair; import android.util.Slog; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.CollectionUtils; import com.android.server.SystemConfig; import com.android.server.pm.parsing.pkg.AndroidPackage; import java.util.Collections; import java.util.HashMap; Loading Loading @@ -72,6 +73,8 @@ import java.util.Set; */ public class OverlayReferenceMapper { private static final String TAG = "OverlayReferenceMapper"; private final Object mLock = new Object(); /** Loading Loading @@ -144,7 +147,7 @@ public class OverlayReferenceMapper { public boolean isValidActor(@NonNull String targetName, @NonNull String actorPackageName) { synchronized (mLock) { assertMapBuilt(); ensureMapBuilt(); Set<String> validSet = mActorPkgToPkgs.get(actorPackageName); return validSet != null && validSet.contains(targetName); } Loading Loading @@ -292,10 +295,11 @@ public class OverlayReferenceMapper { } } private void assertMapBuilt() { private void ensureMapBuilt() { if (mDeferRebuild) { throw new IllegalStateException("The actor map must be built by calling " + "rebuildIfDeferred before it is queried"); rebuildIfDeferred(); Slog.w(TAG, "The actor map was queried before the system was ready, which may" + "result in decreased performance."); } } Loading Loading @@ -360,7 +364,7 @@ public class OverlayReferenceMapper { * Given the actor string from an overlayable definition, return the actor's package name. */ @Nullable String getActorPkg(String actor); String getActorPkg(@NonNull String actor); /** * Mock response of multiple overlay tags. Loading
services/tests/servicestests/src/com/android/server/om/OverlayReferenceMapperTests.kt +1 −5 Original line number Diff line number Diff line Loading @@ -25,7 +25,6 @@ import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.junit.runners.Parameterized import org.testng.Assert.assertThrows @RunWith(Parameterized::class) class OverlayReferenceMapperTests { Loading Loading @@ -160,9 +159,6 @@ class OverlayReferenceMapperTests { expected.forEach { (actorPkgName, expectedPkgNames) -> expectedPkgNames.forEach { expectedPkgName -> if (deferRebuild) { assertThrows(IllegalStateException::class.java) { mapper.isValidActor(expectedPkgName, actorPkgName) } mapper.rebuildIfDeferred() deferRebuild = false } Loading @@ -187,7 +183,7 @@ class OverlayReferenceMapperTests { ) ) ) = OverlayReferenceMapper(deferRebuild, object : OverlayReferenceMapper.Provider { override fun getActorPkg(actor: String?) = override fun getActorPkg(actor: String) = OverlayActorEnforcer.getPackageNameForActor(actor, namedActors).first override fun getTargetToOverlayables(pkg: AndroidPackage) = Loading