From 6a8d93f34e85af161a72a6b207128c0c4fb97e53 Mon Sep 17 00:00:00 2001 From: Nirav Atre Date: Fri, 13 Jul 2018 16:03:31 -0700 Subject: [PATCH] Updated HALs to test structs/safe_unions containing interfaces Bug: 111019943 Test: Ran the hidl_test suite (C++ and Java) Change-Id: I93e8fb9611327e263a02af8fccef1fc878746e02 --- tests/baz/1.0/IBaz.hal | 3 +++ tests/safeunion/1.0/ISafeUnion.hal | 4 ++++ tests/safeunion/1.0/default/SafeUnion.cpp | 20 ++++++++++++++++++++ tests/safeunion/1.0/default/SafeUnion.h | 2 ++ 4 files changed, 29 insertions(+) diff --git a/tests/baz/1.0/IBaz.hal b/tests/baz/1.0/IBaz.hal index 9a9e75451c..00fe5686a8 100644 --- a/tests/baz/1.0/IBaz.hal +++ b/tests/baz/1.0/IBaz.hal @@ -70,6 +70,9 @@ interface IBaz extends IBase { struct StructWithInterface { int32_t number; + int8_t[7] array; + string oneString; + vec vectorOfStrings; IBase dummy; }; oneway doThis(float param); diff --git a/tests/safeunion/1.0/ISafeUnion.hal b/tests/safeunion/1.0/ISafeUnion.hal index fedd63b8e9..e56022f415 100644 --- a/tests/safeunion/1.0/ISafeUnion.hal +++ b/tests/safeunion/1.0/ISafeUnion.hal @@ -66,6 +66,8 @@ interface ISafeUnion { uint32_t a; int8_t[7] b; IOtherInterface c; + string d; + vec e; }; newLargeSafeUnion() generates (LargeSafeUnion myUnion); @@ -86,4 +88,6 @@ interface ISafeUnion { setInterfaceA(InterfaceTypeSafeUnion myUnion, uint32_t a) generates (InterfaceTypeSafeUnion myUnion); setInterfaceB(InterfaceTypeSafeUnion myUnion, int8_t[7] b) generates (InterfaceTypeSafeUnion myUnion); setInterfaceC(InterfaceTypeSafeUnion myUnion, IOtherInterface c) generates (InterfaceTypeSafeUnion myUnion); + setInterfaceD(InterfaceTypeSafeUnion myUnion, string d) generates (InterfaceTypeSafeUnion myUnion); + setInterfaceE(InterfaceTypeSafeUnion myUnion, vec e) generates (InterfaceTypeSafeUnion myUnion); }; diff --git a/tests/safeunion/1.0/default/SafeUnion.cpp b/tests/safeunion/1.0/default/SafeUnion.cpp index 7047d16128..11b2e36782 100644 --- a/tests/safeunion/1.0/default/SafeUnion.cpp +++ b/tests/safeunion/1.0/default/SafeUnion.cpp @@ -191,6 +191,26 @@ Return SafeUnion::setInterfaceC(const InterfaceTypeSafeUnion& myUnion, con return Void(); } +Return SafeUnion::setInterfaceD(const ::android::hardware::tests::safeunion::V1_0::ISafeUnion::InterfaceTypeSafeUnion& myUnion, const hidl_string& d, setInterfaceD_cb _hidl_cb) { + LOG(INFO) << "SERVER(SafeUnion) setInterfaceD(myUnion, " << toString(d) << ")"; + + InterfaceTypeSafeUnion myNewUnion = myUnion; + myNewUnion.d(d); + + _hidl_cb(myNewUnion); + return Void(); +} + +Return SafeUnion::setInterfaceE(const ::android::hardware::tests::safeunion::V1_0::ISafeUnion::InterfaceTypeSafeUnion& myUnion, const hidl_vec& e, setInterfaceE_cb _hidl_cb) { + LOG(INFO) << "SERVER(SafeUnion) setInterfaceE(myUnion, " << toString(e) << ")"; + + InterfaceTypeSafeUnion myNewUnion = myUnion; + myNewUnion.e(e); + + _hidl_cb(myNewUnion); + return Void(); +} + ISafeUnion* HIDL_FETCH_ISafeUnion(const char* /* name */) { return new SafeUnion(); } diff --git a/tests/safeunion/1.0/default/SafeUnion.h b/tests/safeunion/1.0/default/SafeUnion.h index 07d88d23b0..e900fcec34 100644 --- a/tests/safeunion/1.0/default/SafeUnion.h +++ b/tests/safeunion/1.0/default/SafeUnion.h @@ -52,6 +52,8 @@ struct SafeUnion : public ISafeUnion { Return setInterfaceA(const InterfaceTypeSafeUnion& myUnion, uint32_t a, setInterfaceA_cb _hidl_cb) override; Return setInterfaceB(const InterfaceTypeSafeUnion& myUnion, const hidl_array& b, setInterfaceB_cb _hidl_cb) override; Return setInterfaceC(const InterfaceTypeSafeUnion& myUnion, const sp<::android::hardware::tests::safeunion::V1_0::IOtherInterface>& c, setInterfaceC_cb _hidl_cb) override; + Return setInterfaceD(const InterfaceTypeSafeUnion& myUnion, const hidl_string& d, setInterfaceD_cb _hidl_cb) override; + Return setInterfaceE(const InterfaceTypeSafeUnion& myUnion, const hidl_vec& e, setInterfaceE_cb _hidl_cb) override; }; extern "C" ISafeUnion* HIDL_FETCH_ISafeUnion(const char* name);