summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Martin Stjernholm <mast@google.com> 2022-09-08 00:02:51 +0100
committer Martin Stjernholm <mast@google.com> 2022-09-13 12:55:27 +0000
commit69a358787c10d8e1a80c1e23f5ce2c08a495d74c (patch)
tree866ea8e66a3aff07ceb89e02a851d45dcb49a54f
parent3377268208f0fe262119faa2a93e0b0be454ade6 (diff)
Test <uses-native-library> logic.
Remove the use of SDK version 30 in the test apps and add the requisite <uses-native-library> instead. Also test some cases when they are missing. Test: atest libnativeloader_e2e_tests Bug: 137356719 Change-Id: I506351999de736fd0c40adf34b4745e3a263762a
-rw-r--r--libnativeloader/test/Android.bp6
-rw-r--r--libnativeloader/test/loadlibrarytest_product_app_manifest.xml8
-rw-r--r--libnativeloader/test/loadlibrarytest_system_app_manifest.xml6
-rw-r--r--libnativeloader/test/loadlibrarytest_system_ext_app_manifest.xml6
-rw-r--r--libnativeloader/test/loadlibrarytest_system_priv_app_manifest.xml6
-rw-r--r--libnativeloader/test/loadlibrarytest_vendor_app_manifest.xml8
-rw-r--r--libnativeloader/test/src/android/test/app/ProductAppTest.java3
7 files changed, 36 insertions, 7 deletions
diff --git a/libnativeloader/test/Android.bp b/libnativeloader/test/Android.bp
index b384dcc903..1eee883b21 100644
--- a/libnativeloader/test/Android.bp
+++ b/libnativeloader/test/Android.bp
@@ -52,12 +52,6 @@ java_library {
java_defaults {
name: "loadlibrarytest_app_defaults",
defaults: ["art_module_source_build_java_defaults"],
-
- // TODO(mast): Use old target SDK to avoid filtering on uses_library lists.
- // Figure out what we need to do to make <uses-native-library> work in the
- // test apps so we can use that instead.
- sdk_version: "30",
-
static_libs: [
"androidx.test.ext.junit",
"androidx.test.rules",
diff --git a/libnativeloader/test/loadlibrarytest_product_app_manifest.xml b/libnativeloader/test/loadlibrarytest_product_app_manifest.xml
index a791795803..2ff0552ae4 100644
--- a/libnativeloader/test/loadlibrarytest_product_app_manifest.xml
+++ b/libnativeloader/test/loadlibrarytest_product_app_manifest.xml
@@ -19,5 +19,13 @@
package="android.test.app.product">
<instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
android:targetPackage="android.test.app.product" />
+ <application>
+ <uses-native-library android:required="false" android:name="libfoo.oem1.so" />
+ <uses-native-library android:required="false" android:name="libbar.oem1.so" />
+ <uses-native-library android:required="false" android:name="libfoo.oem2.so" />
+ <!--libbar.oem2.so is left out -->
+ <uses-native-library android:required="false" android:name="libfoo.product1.so" />
+ <uses-native-library android:required="false" android:name="libbar.product1.so" />
+ </application>
</manifest>
diff --git a/libnativeloader/test/loadlibrarytest_system_app_manifest.xml b/libnativeloader/test/loadlibrarytest_system_app_manifest.xml
index 3cbd054f03..ee180309b7 100644
--- a/libnativeloader/test/loadlibrarytest_system_app_manifest.xml
+++ b/libnativeloader/test/loadlibrarytest_system_app_manifest.xml
@@ -19,5 +19,11 @@
package="android.test.app.system">
<instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
android:targetPackage="android.test.app.system" />
+ <application>
+ <!-- System apps get a shared classloader namespace, so they don't need
+ uses-native-library entries for anything in /system. -->
+ <uses-native-library android:required="false" android:name="libfoo.product1.so" />
+ <uses-native-library android:required="false" android:name="libbar.product1.so" />
+ </application>
</manifest>
diff --git a/libnativeloader/test/loadlibrarytest_system_ext_app_manifest.xml b/libnativeloader/test/loadlibrarytest_system_ext_app_manifest.xml
index 83ca779821..dc452591a0 100644
--- a/libnativeloader/test/loadlibrarytest_system_ext_app_manifest.xml
+++ b/libnativeloader/test/loadlibrarytest_system_ext_app_manifest.xml
@@ -19,5 +19,11 @@
package="android.test.app.system_ext">
<instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
android:targetPackage="android.test.app.system_ext" />
+ <application>
+ <!-- System apps get a shared classloader namespace, so they don't need
+ uses-native-library entries for anything in /system. -->
+ <uses-native-library android:required="false" android:name="libfoo.product1.so" />
+ <uses-native-library android:required="false" android:name="libbar.product1.so" />
+ </application>
</manifest>
diff --git a/libnativeloader/test/loadlibrarytest_system_priv_app_manifest.xml b/libnativeloader/test/loadlibrarytest_system_priv_app_manifest.xml
index 0ad1aa5e32..efba587d46 100644
--- a/libnativeloader/test/loadlibrarytest_system_priv_app_manifest.xml
+++ b/libnativeloader/test/loadlibrarytest_system_priv_app_manifest.xml
@@ -19,5 +19,11 @@
package="android.test.app.system_priv">
<instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
android:targetPackage="android.test.app.system_priv" />
+ <application>
+ <!-- System apps get a shared classloader namespace, so they don't need
+ uses-native-library entries for anything in /system. -->
+ <uses-native-library android:required="false" android:name="libfoo.product1.so" />
+ <uses-native-library android:required="false" android:name="libbar.product1.so" />
+ </application>
</manifest>
diff --git a/libnativeloader/test/loadlibrarytest_vendor_app_manifest.xml b/libnativeloader/test/loadlibrarytest_vendor_app_manifest.xml
index b7073c6302..8a98e3cfbd 100644
--- a/libnativeloader/test/loadlibrarytest_vendor_app_manifest.xml
+++ b/libnativeloader/test/loadlibrarytest_vendor_app_manifest.xml
@@ -19,5 +19,13 @@
package="android.test.app.vendor">
<instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
android:targetPackage="android.test.app.vendor" />
+ <application>
+ <uses-native-library android:required="false" android:name="libfoo.oem1.so" />
+ <uses-native-library android:required="false" android:name="libbar.oem1.so" />
+ <uses-native-library android:required="false" android:name="libfoo.oem2.so" />
+ <!--libbar.oem2.so is left out -->
+ <uses-native-library android:required="false" android:name="libfoo.product1.so" />
+ <uses-native-library android:required="false" android:name="libbar.product1.so" />
+ </application>
</manifest>
diff --git a/libnativeloader/test/src/android/test/app/ProductAppTest.java b/libnativeloader/test/src/android/test/app/ProductAppTest.java
index 5510d55908..592c3ed143 100644
--- a/libnativeloader/test/src/android/test/app/ProductAppTest.java
+++ b/libnativeloader/test/src/android/test/app/ProductAppTest.java
@@ -16,6 +16,7 @@
package android.test.app;
+import android.test.lib.TestUtils;
import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
@@ -29,7 +30,7 @@ public class ProductAppTest {
System.loadLibrary("foo.oem1");
System.loadLibrary("bar.oem1");
System.loadLibrary("foo.oem2");
- System.loadLibrary("bar.oem2");
+ TestUtils.assertLinkerNamespaceError("bar.oem2"); // Missing <uses-native-library>.
System.loadLibrary("foo.product1");
System.loadLibrary("bar.product1");
}