Integration test for parcelables

This test demonstrates the equivalence of C++ and Java parcelable
handling from an AIDL/libbinder perspective.

Bug: 23600712
Test: These integration tests pass.

Change-Id: I49d9d9bd1baaa1c2c49b6d02a5bfeefc0a53612c
diff --git a/tests/aidl_test_service.cpp b/tests/aidl_test_service.cpp
index 5c3d672..2d4487a 100644
--- a/tests/aidl_test_service.cpp
+++ b/tests/aidl_test_service.cpp
@@ -58,6 +58,7 @@
 using android::aidl::tests::BnTestService;
 using android::aidl::tests::BnNamedCallback;
 using android::aidl::tests::INamedCallback;
+using android::aidl::tests::SimpleParcelable;
 
 // Standard library
 using std::map;
@@ -177,6 +178,15 @@
     return Status::ok();
   }
 
+  Status RepeatParcelable(const SimpleParcelable& input,
+                            SimpleParcelable* repeat,
+                            SimpleParcelable* _aidl_return) override {
+    ALOGI("Repeated a SimpleParcelable %s", input.toString().c_str());
+    *repeat = input;
+    *_aidl_return = input;
+    return Status::ok();
+  }
+
   template<typename T>
   Status ReverseArray(const vector<T>& input,
                         vector<T>* repeated,
@@ -228,6 +238,11 @@
                          vector<String16>* _aidl_return) override {
     return ReverseArray(input, repeated, _aidl_return);
   }
+  Status ReverseParcelables(const vector<SimpleParcelable>& input,
+                              vector<SimpleParcelable>* repeated,
+                              vector<SimpleParcelable>* _aidl_return) override {
+    return ReverseArray(input, repeated, _aidl_return);
+  }
 
   Status GetOtherTestService(const String16& name,
                                sp<INamedCallback>* returned_service) override {