diff options
| author | 2024-12-06 18:52:50 +0000 | |
|---|---|---|
| committer | 2024-12-09 12:19:32 +0000 | |
| commit | b72ae2a45e7c9622255cd71216189bcbd9023ebe (patch) | |
| tree | 387a11a56d3ef043cd74cf31722e4509dd725fce | |
| parent | ba201d247dbcf4c30a9c05d29ea51fe8639732e4 (diff) | |
Mock calls to Binder in DexUseManagerLocalTest
Bug: 382080250
Change-Id: Ic9129d5ffe85c476ffa1fa45b07c870b77fae392
Test: ABTD (http://go/abtd/run/L04000030008181623)
| -rw-r--r-- | libartservice/service/java/com/android/server/art/DexUseManagerLocal.java | 15 | ||||
| -rw-r--r-- | libartservice/service/javatests/com/android/server/art/DexUseManagerTest.java | 15 |
2 files changed, 21 insertions, 9 deletions
diff --git a/libartservice/service/java/com/android/server/art/DexUseManagerLocal.java b/libartservice/service/java/com/android/server/art/DexUseManagerLocal.java index 7eb5a69165..51b63ca758 100644 --- a/libartservice/service/java/com/android/server/art/DexUseManagerLocal.java +++ b/libartservice/service/java/com/android/server/art/DexUseManagerLocal.java @@ -413,7 +413,7 @@ public class DexUseManagerLocal { // TODO(jiakaiz): Investigate whether it should also be considered as isolated process if // `Process.isSdkSandboxUid` returns true. - boolean isolatedProcess = Process.isIsolatedUid(Binder.getCallingUid()); + boolean isolatedProcess = Process.isIsolatedUid(mInjector.getCallingUid()); long lastUsedAtMs = mInjector.getCurrentTimeMillis(); for (var entry : classLoaderContextByDexContainerFile.entrySet()) { @@ -588,7 +588,7 @@ public class DexUseManagerLocal { @GuardedBy("mLock") private boolean isOwningPackageForSecondaryDexLocked( @NonNull PackageState pkgState, @NonNull String dexPath) { - UserHandle userHandle = Binder.getCallingUserHandle(); + UserHandle userHandle = mInjector.getCallingUserHandle(); List<String> locations = mSecondaryDexLocationManager.getLocations(pkgState, userHandle); for (int i = 0; i < locations.size(); i++) { if (Utils.pathStartsWith(dexPath, locations.get(i))) { @@ -663,7 +663,7 @@ public class DexUseManagerLocal { .computeIfAbsent(owningPackageName, k -> new PackageDexUse()) .mSecondaryDexUseByDexFile.computeIfAbsent( dexPath, k -> new SecondaryDexUse()); - secondaryDexUse.mUserHandle = Binder.getCallingUserHandle(); + secondaryDexUse.mUserHandle = mInjector.getCallingUserHandle(); SecondaryDexUseRecord record = secondaryDexUse.mRecordByLoader.computeIfAbsent( DexLoader.create(loadingPackageName, isolatedProcess), k -> new SecondaryDexUseRecord()); @@ -1391,5 +1391,14 @@ public class DexUseManagerLocal { public ArtManagerLocal getArtManagerLocal() { return Objects.requireNonNull(LocalManagerRegistry.getManager(ArtManagerLocal.class)); } + + @NonNull + public UserHandle getCallingUserHandle() { + return Binder.getCallingUserHandle(); + } + + public int getCallingUid() { + return Binder.getCallingUid(); + } } } diff --git a/libartservice/service/javatests/com/android/server/art/DexUseManagerTest.java b/libartservice/service/javatests/com/android/server/art/DexUseManagerTest.java index 95d111774d..3ea3509b82 100644 --- a/libartservice/service/javatests/com/android/server/art/DexUseManagerTest.java +++ b/libartservice/service/javatests/com/android/server/art/DexUseManagerTest.java @@ -90,7 +90,7 @@ public class DexUseManagerTest { public StaticMockitoRule mockitoRule = new StaticMockitoRule( SystemProperties.class, Constants.class, Process.class, ArtJni.class); - private final UserHandle mUserHandle = Binder.getCallingUserHandle(); + private final UserHandle mUserHandle = UserHandle.of(1); /** * The default value of `fileVisibility` returned by `getSecondaryDexInfo`. The value doesn't @@ -155,12 +155,12 @@ public class DexUseManagerTest { .thenReturn(mock(Intent.class)); mCeDir = Environment - .getDataCePackageDirectoryForUser(StorageManager.UUID_DEFAULT, - Binder.getCallingUserHandle(), OWNING_PKG_NAME) + .getDataCePackageDirectoryForUser( + StorageManager.UUID_DEFAULT, mUserHandle, OWNING_PKG_NAME) .toString(); mDeDir = Environment - .getDataDePackageDirectoryForUser(StorageManager.UUID_DEFAULT, - Binder.getCallingUserHandle(), OWNING_PKG_NAME) + .getDataDePackageDirectoryForUser( + StorageManager.UUID_DEFAULT, mUserHandle, OWNING_PKG_NAME) .toString(); mMockClock = new MockClock(); @@ -185,6 +185,8 @@ public class DexUseManagerTest { lenient().when(mInjector.isPreReboot()).thenReturn(false); lenient().when(mInjector.getArtManagerLocal()).thenReturn(mArtManagerLocal); lenient().when(mInjector.getPackageManagerLocal()).thenReturn(mPackageManagerLocal); + lenient().when(mInjector.getCallingUserHandle()).thenReturn(mUserHandle); + lenient().when(mInjector.getCallingUid()).thenReturn(110001); mDexUseManager = new DexUseManagerLocal(mInjector); mDexUseManager.systemReady(); @@ -793,7 +795,7 @@ public class DexUseManagerTest { assertThat(textproto).isEqualTo("package_dex_use {\n" + " owning_package_name: \"com.example.owningpackage\"\n" + " secondary_dex_use {\n" - + " dex_file: \"/data/user/0/com.example.owningpackage/bar.apk\"\n" + + " dex_file: \"/data/user/1/com.example.owningpackage/bar.apk\"\n" + " record {\n" + " abi_name: \"arm64-v8a\"\n" + " class_loader_context: \"CLC\"\n" @@ -801,6 +803,7 @@ public class DexUseManagerTest { + " loading_package_name: \"com.example.owningpackage\"\n" + " }\n" + " user_id {\n" + + " value: 1\n" + " }\n" + " }\n" + "}"); |