Support extending parcelable in Java

Allow to extend a parcelable by using ParcelableHolder.
Users can set/get an extension(or extensions) by ParcelableHolder

ParcelableHolder field is always initialized by its container, and has
the same stability level as its container.

Bug: 146611855
Test: atest aidl_integration_test aidl_unittests
Change-Id: Iec1a2fbb8f7a38680c0dae360b7ae2ab1bee5416
diff --git a/Android.bp b/Android.bp
index fd46e81..c30d71e 100644
--- a/Android.bp
+++ b/Android.bp
@@ -298,6 +298,11 @@
     optimize: {
         enabled: false,
     },
+    static_libs: [
+        "aidl_test_nonvintf_parcelable-java",
+        "aidl_test_unstable_parcelable-java",
+        "aidl_test_vintf_parcelable-java",
+    ],
     dex_preopt: {
         enabled: false,
     },
@@ -308,6 +313,8 @@
         "tests/android/aidl/tests/*.aidl",
         "tests/android/aidl/tests/generic/*.aidl",
         "tests/android/aidl/tests/map/*.aidl",
+        "tests/android/aidl/tests/extension/*.aidl",
+        "tests/java_app/src/android/aidl/tests/ExtensionTests.java",
         "tests/java_app/src/android/aidl/tests/GenericTests.java",
         "tests/java_app/src/android/aidl/tests/MapTests.java",
         "tests/java_app/src/android/aidl/tests/NullableTests.java",