[API] Add vm_payload API to get APK contents path
Bug: 243515282
Test: atest MicrodroidTests
Change-Id: Ic78d0744ef6ae5cd39a86a9cfcc08a3c85519621
diff --git a/tests/testapk/src/java/com/android/microdroid/test/MicrodroidTests.java b/tests/testapk/src/java/com/android/microdroid/test/MicrodroidTests.java
index 5c9cf42..c4296df 100644
--- a/tests/testapk/src/java/com/android/microdroid/test/MicrodroidTests.java
+++ b/tests/testapk/src/java/com/android/microdroid/test/MicrodroidTests.java
@@ -111,6 +111,7 @@
assertThat(testResults.mAddInteger).isEqualTo(123 + 456);
assertThat(testResults.mAppRunProp).isEqualTo("true");
assertThat(testResults.mSublibRunProp).isEqualTo("true");
+ assertThat(testResults.mApkContentsPath).isEqualTo("/mnt/apk");
}
@Test
@@ -538,6 +539,7 @@
String mAppRunProp;
String mSublibRunProp;
String mExtraApkTestProp;
+ String mApkContentsPath;
}
private TestResults runVmTestService(VirtualMachine vm) throws Exception {
@@ -557,6 +559,7 @@
testService.readProperty("debug.microdroid.app.sublib.run");
testResults.mExtraApkTestProp =
testService.readProperty("debug.microdroid.test.extra_apk");
+ testResults.mApkContentsPath = testService.getApkContentsPath();
} catch (Exception e) {
testResults.mException = e;
}
diff --git a/tests/testapk/src/native/testbinary.cpp b/tests/testapk/src/native/testbinary.cpp
index d57d224..1a3e940 100644
--- a/tests/testapk/src/native/testbinary.cpp
+++ b/tests/testapk/src/native/testbinary.cpp
@@ -112,6 +112,17 @@
}
return ndk::ScopedAStatus::ok();
}
+
+ ndk::ScopedAStatus getApkContentsPath(std::string* out) override {
+ const char* path_c = AVmPayload_getApkContentsPath();
+ if (path_c == nullptr) {
+ return ndk::ScopedAStatus::
+ fromServiceSpecificErrorWithMessage(0, "Failed to get APK contents path");
+ }
+ std::string path(path_c);
+ *out = path;
+ return ndk::ScopedAStatus::ok();
+ }
};
auto testService = ndk::SharedRefBase::make<TestService>();