Merge "Add testcase for empty ParcelableHolder"
diff --git a/tests/tests/binder_ndk/libbinder_ndk_test/aidl_api/libbinder_ndk_test_interface/current/test_package/ITest.aidl b/tests/tests/binder_ndk/libbinder_ndk_test/aidl_api/libbinder_ndk_test_interface/current/test_package/ITest.aidl
index dad0716..7cd58e7 100644
--- a/tests/tests/binder_ndk/libbinder_ndk_test/aidl_api/libbinder_ndk_test_interface/current/test_package/ITest.aidl
+++ b/tests/tests/binder_ndk/libbinder_ndk_test/aidl_api/libbinder_ndk_test_interface/current/test_package/ITest.aidl
@@ -81,6 +81,7 @@
void RepeatExtendableParcelable(in test_package.ExtendableParcelable input, out test_package.ExtendableParcelable output);
test_package.SimpleUnion RepeatSimpleUnion(in test_package.SimpleUnion u);
IBinder getICompatTest();
+ void RepeatExtendableParcelableWithoutExtension(in test_package.ExtendableParcelable input, out test_package.ExtendableParcelable output);
const int kZero = 0;
const int kOne = 1;
const int kOnes = -1;
diff --git a/tests/tests/binder_ndk/libbinder_ndk_test/itest_impl.h b/tests/tests/binder_ndk/libbinder_ndk_test/itest_impl.h
index 413e190..ae7e435 100644
--- a/tests/tests/binder_ndk/libbinder_ndk_test/itest_impl.h
+++ b/tests/tests/binder_ndk/libbinder_ndk_test/itest_impl.h
@@ -455,6 +455,7 @@
::ndk::ScopedAStatus RepeatExtendableParcelable(
const ::aidl::test_package::ExtendableParcelable& in_input,
::aidl::test_package::ExtendableParcelable* out_output) {
+ RepeatExtendableParcelableWithoutExtension(in_input, out_output);
std::unique_ptr<MyExt> ext = in_input.ext.getParcelable<MyExt>();
MyExt ext2;
ext2.a = ext->a;
@@ -463,6 +464,15 @@
return ::ndk::ScopedAStatus(AStatus_newOk());
}
+ ::ndk::ScopedAStatus RepeatExtendableParcelableWithoutExtension(
+ const ::aidl::test_package::ExtendableParcelable& in_input,
+ ::aidl::test_package::ExtendableParcelable* out_output) {
+ out_output->a = in_input.a;
+ out_output->b = in_input.b;
+ out_output->c = in_input.c;
+ return ::ndk::ScopedAStatus(AStatus_newOk());
+ }
+
::ndk::ScopedAStatus RepeatSimpleUnion(const SimpleUnion& in_u,
SimpleUnion* _aidl_return) override {
*_aidl_return = in_u;
diff --git a/tests/tests/binder_ndk/libbinder_ndk_test/test_native_aidl_client.cpp b/tests/tests/binder_ndk/libbinder_ndk_test/test_native_aidl_client.cpp
index 10d6b65..85e5599 100644
--- a/tests/tests/binder_ndk/libbinder_ndk_test/test_native_aidl_client.cpp
+++ b/tests/tests/binder_ndk/libbinder_ndk_test/test_native_aidl_client.cpp
@@ -958,7 +958,7 @@
}
TEST_P(NdkBinderTest_Aidl, ParcelableHolderCommunicationTest) {
ExtendableParcelable ep;
-
+ ep.c = 42L;
MyExt myext1;
myext1.a = 42;
myext1.b = "mystr";
@@ -967,11 +967,21 @@
ExtendableParcelable ep2;
EXPECT_OK(iface->RepeatExtendableParcelable(ep, &ep2));
std::unique_ptr<MyExt> myext2 = ep2.ext.getParcelable<MyExt>();
+ EXPECT_EQ(42L, ep2.c);
EXPECT_TRUE(myext2);
EXPECT_EQ(42, myext2->a);
EXPECT_EQ("mystr", myext2->b);
}
+TEST_P(NdkBinderTest_Aidl, EmptyParcelableHolderCommunicationTest) {
+ ExtendableParcelable ep;
+ ExtendableParcelable ep2;
+ ep.c = 42L;
+ EXPECT_OK(iface->RepeatExtendableParcelableWithoutExtension(ep, &ep2));
+
+ EXPECT_EQ(42L, ep2.c);
+}
+
std::shared_ptr<ITest> getProxyLocalService() {
std::shared_ptr<MyTest> test = SharedRefBase::make<MyTest>();
SpAIBinder binder = test->asBinder();
diff --git a/tests/tests/binder_ndk/libbinder_ndk_test/test_package/ITest.aidl b/tests/tests/binder_ndk/libbinder_ndk_test/test_package/ITest.aidl
index d5d112b..084c7d7 100644
--- a/tests/tests/binder_ndk/libbinder_ndk_test/test_package/ITest.aidl
+++ b/tests/tests/binder_ndk/libbinder_ndk_test/test_package/ITest.aidl
@@ -130,4 +130,6 @@
SimpleUnion RepeatSimpleUnion(in SimpleUnion u);
IBinder getICompatTest();
+
+ void RepeatExtendableParcelableWithoutExtension(in ExtendableParcelable input, out ExtendableParcelable output);
}
diff --git a/tests/tests/binder_ndk/src/android/binder/cts/JavaClientTest.java b/tests/tests/binder_ndk/src/android/binder/cts/JavaClientTest.java
index e56c3c0..79f231a 100644
--- a/tests/tests/binder_ndk/src/android/binder/cts/JavaClientTest.java
+++ b/tests/tests/binder_ndk/src/android/binder/cts/JavaClientTest.java
@@ -691,7 +691,7 @@
@Test
public void testParcelableHolder() throws RemoteException {
ExtendableParcelable ep = new ExtendableParcelable();
-
+ ep.c = 42L;
MyExt myext1 = new MyExt();
myext1.a = 42;
myext1.b = "mystr";
@@ -700,12 +700,22 @@
ExtendableParcelable ep2 = new ExtendableParcelable();
mInterface.RepeatExtendableParcelable(ep, ep2);
MyExt myext2 = ep2.ext.getParcelable(MyExt.class);
+ assertEquals(42L, ep2.c);
assertNotEquals(null, myext2);
assertEquals(42, myext2.a);
assertEquals("mystr", myext2.b);
}
@Test
+ public void testEmptyParcelableHolder() throws RemoteException {
+ ExtendableParcelable ep = new ExtendableParcelable();
+ ep.c = 42L;
+ ExtendableParcelable ep2 = new ExtendableParcelable();
+ mInterface.RepeatExtendableParcelableWithoutExtension(ep, ep2);
+ assertEquals(42L, ep2.c);
+ }
+
+ @Test
public void testRepeatSimpleUnion() throws RemoteException {
final int[] intArray = { 1, 2, 3 };
SimpleUnion origin = SimpleUnion.b(intArray);
diff --git a/tests/tests/binder_ndk/src/android/binder/cts/TestImpl.java b/tests/tests/binder_ndk/src/android/binder/cts/TestImpl.java
index c65a99a..d16e8a7 100644
--- a/tests/tests/binder_ndk/src/android/binder/cts/TestImpl.java
+++ b/tests/tests/binder_ndk/src/android/binder/cts/TestImpl.java
@@ -398,6 +398,7 @@
@Override
public void RepeatExtendableParcelable(ExtendableParcelable in, ExtendableParcelable out) {
+ RepeatExtendableParcelableWithoutExtension(in, out);
MyExt ext = in.ext.getParcelable(MyExt.class);
MyExt ext2 = new MyExt();
ext2.a = ext.a;
@@ -405,6 +406,13 @@
out.ext.setParcelable(ext2);
}
+ @Override
+ public void RepeatExtendableParcelableWithoutExtension(ExtendableParcelable in, ExtendableParcelable out) {
+ out.a = in.a;
+ out.b = in.b;
+ out.c = in.c;
+ }
+
public SimpleUnion RepeatSimpleUnion(SimpleUnion in_u) {
return in_u;
}