summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jiakai Zhang <jiakaiz@google.com> 2024-12-06 18:52:50 +0000
committer Jiakai Zhang <jiakaiz@google.com> 2024-12-09 12:19:32 +0000
commitb72ae2a45e7c9622255cd71216189bcbd9023ebe (patch)
tree387a11a56d3ef043cd74cf31722e4509dd725fce
parentba201d247dbcf4c30a9c05d29ea51fe8639732e4 (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.java15
-rw-r--r--libartservice/service/javatests/com/android/server/art/DexUseManagerTest.java15
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"
+ "}");