generate_cpp_unittest.cpp revision b06c82923869f50e9641f7dac56df0aebe637845
1a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin/* 2a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin * Copyright (C) 2015, The Android Open Source Project 3a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin * 4a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin * Licensed under the Apache License, Version 2.0 (the "License"); 5a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin * you may not use this file except in compliance with the License. 6a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin * You may obtain a copy of the License at 7a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin * 8a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin * http://www.apache.org/licenses/LICENSE-2.0 9a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin * 10a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin * Unless required by applicable law or agreed to in writing, software 11a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin * distributed under the License is distributed on an "AS IS" BASIS, 12a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin * See the License for the specific language governing permissions and 14a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin * limitations under the License. 15a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin */ 16a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin 17a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin#include <string> 18a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin 190a62067f35e957493bc37c4b42dfdcfc16353831Elliott Hughes#include <android-base/stringprintf.h> 20a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin#include <gtest/gtest.h> 21a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin 222cc93169679e222dda71c73814f28a9fb0832166Casey Dahlin#include "aidl.h" 23a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin#include "aidl_language.h" 24a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin#include "ast_cpp.h" 25a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin#include "code_writer.h" 26ad3392747003a30928da6cd206e41f66398c2062Christopher Wiley#include "generate_cpp.h" 279d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley#include "os.h" 284a2884b0e9414ed9dfee4e141e8bd462c07b442bChristopher Wiley#include "tests/fake_io_delegate.h" 2980ada3d405cbf76797e007d5fc265d17315aa05cCasey Dahlin#include "tests/test_util.h" 30e3550c6679939d2bf5f35c540cd83198ab156fb7Christopher Wiley#include "type_cpp.h" 31a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin 32b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinusing ::android::aidl::test::FakeIoDelegate; 33b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinusing ::android::base::StringPrintf; 34a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlinusing std::string; 35a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlinusing std::unique_ptr; 36a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin 37a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlinnamespace android { 38a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlinnamespace aidl { 39f944e79bdaf92fffe9ea78314d3636e7e4de8c51Christopher Wileynamespace cpp { 40a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlinnamespace { 41a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin 42b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlinconst string kComplexTypeInterfaceAIDL = 43b0966619850093e117104dc34d8a6ae4c56ea3ffCasey DahlinR"(package android.os; 44389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlinimport foo.IFooType; 45b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlininterface IComplexTypeInterface { 46d40e2fed2c19850d53f1620322ac5cbca2c0e245Casey Dahlin const int MY_CONSTANT = 3; 47cb5317d8270ece5b3f5860a78a1e911d39e677bbCasey Dahlin int[] Send(in @nullable int[] goes_in, inout double[] goes_in_and_out, out boolean[] goes_out); 480dd08af9e6145fb746e96e7ecc5e4c2096de3a6eCasey Dahlin oneway void Piff(int times); 49389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin IFooType TakesABinder(IFooType f); 50ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlin @nullable IFooType NullableBinder(); 5156c9bf3c4fb731d5557427667f13f963fa5ef0f7Christopher Wiley List<String> StringListMethod(in java.util.List<String> input, out List<String> output); 527ecd69f2cc3c31cf569840e9c2d53ed352328d18Casey Dahlin List<IBinder> BinderListMethod(in java.util.List<IBinder> input, out List<IBinder> output); 53a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlin FileDescriptor TakesAFileDescriptor(in FileDescriptor f); 54a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlin FileDescriptor[] TakesAFileDescriptorArray(in FileDescriptor[] f); 55b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin})"; 56b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 57b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlinconst char kExpectedComplexTypeClientHeaderOutput[] = 58b0966619850093e117104dc34d8a6ae4c56ea3ffCasey DahlinR"(#ifndef AIDL_GENERATED_ANDROID_OS_BP_COMPLEX_TYPE_INTERFACE_H_ 59b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin#define AIDL_GENERATED_ANDROID_OS_BP_COMPLEX_TYPE_INTERFACE_H_ 60b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 61b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin#include <binder/IBinder.h> 62b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin#include <binder/IInterface.h> 63b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin#include <utils/Errors.h> 64b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin#include <android/os/IComplexTypeInterface.h> 65b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 66b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlinnamespace android { 67b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 68b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlinnamespace os { 69b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 70b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinclass BpComplexTypeInterface : public ::android::BpInterface<IComplexTypeInterface> { 71b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlinpublic: 72b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinexplicit BpComplexTypeInterface(const ::android::sp<::android::IBinder>& _aidl_impl); 73b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlinvirtual ~BpComplexTypeInterface() = default; 7457dbe24bcb8f4509a876e8445c78d9504d7e616aCasey Dahlin::android::binder::Status Send(const ::std::unique_ptr<::std::vector<int32_t>>& goes_in, ::std::vector<double>* goes_in_and_out, ::std::vector<bool>* goes_out, ::std::vector<int32_t>* _aidl_return) override; 75b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::binder::Status Piff(int32_t times) override; 76b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::binder::Status TakesABinder(const ::android::sp<::foo::IFooType>& f, ::android::sp<::foo::IFooType>* _aidl_return) override; 77ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlin::android::binder::Status NullableBinder(::android::sp<::foo::IFooType>* _aidl_return) override; 78b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::binder::Status StringListMethod(const ::std::vector<::android::String16>& input, ::std::vector<::android::String16>* output, ::std::vector<::android::String16>* _aidl_return) override; 79b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::binder::Status BinderListMethod(const ::std::vector<::android::sp<::android::IBinder>>& input, ::std::vector<::android::sp<::android::IBinder>>* output, ::std::vector<::android::sp<::android::IBinder>>* _aidl_return) override; 807cb9c2585d518f97e1b42bf6b444a3fb69b332bbChristopher Wiley::android::binder::Status TakesAFileDescriptor(const ::android::base::unique_fd& f, ::android::base::unique_fd* _aidl_return) override; 817cb9c2585d518f97e1b42bf6b444a3fb69b332bbChristopher Wiley::android::binder::Status TakesAFileDescriptorArray(const ::std::vector<::android::base::unique_fd>& f, ::std::vector<::android::base::unique_fd>* _aidl_return) override; 82b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin}; // class BpComplexTypeInterface 83b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 84b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin} // namespace os 85b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 86b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin} // namespace android 87b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 8811a9d79a1189bbfa5b64a77b32f1a947ad91f0ddChristopher Wiley#endif // AIDL_GENERATED_ANDROID_OS_BP_COMPLEX_TYPE_INTERFACE_H_ 8911a9d79a1189bbfa5b64a77b32f1a947ad91f0ddChristopher Wiley)"; 90b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 91b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlinconst char kExpectedComplexTypeClientSourceOutput[] = 92b0966619850093e117104dc34d8a6ae4c56ea3ffCasey DahlinR"(#include <android/os/BpComplexTypeInterface.h> 93b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin#include <binder/Parcel.h> 94b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 95b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlinnamespace android { 96b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 97b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlinnamespace os { 98b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 99b8d9e8898c34da45027e56be88d5c9238ea88203Casey DahlinBpComplexTypeInterface::BpComplexTypeInterface(const ::android::sp<::android::IBinder>& _aidl_impl) 100b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin : BpInterface<IComplexTypeInterface>(_aidl_impl){ 101b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin} 102b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 10357dbe24bcb8f4509a876e8445c78d9504d7e616aCasey Dahlin::android::binder::Status BpComplexTypeInterface::Send(const ::std::unique_ptr<::std::vector<int32_t>>& goes_in, ::std::vector<double>* goes_in_and_out, ::std::vector<bool>* goes_out, ::std::vector<int32_t>* _aidl_return) { 104b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::Parcel _aidl_data; 105b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::Parcel _aidl_reply; 1061095712f27931cb64d398d77201036cdcef0a296Christopher Wiley::android::status_t _aidl_ret_status = ::android::OK; 107b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::binder::Status _aidl_status; 108b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_data.writeInterfaceToken(getInterfaceDescriptor()); 109b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 110b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlingoto _aidl_error; 1118993cb5f297f9e329470d75f02a7b3e3a4bc64a5Christopher Wiley} 112b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_data.writeInt32Vector(goes_in); 113b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 114b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlingoto _aidl_error; 115bb96782d158ee996f79c1b4d6f06e121dee24972Christopher Wiley} 116b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_data.writeDoubleVector(*goes_in_and_out); 117b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 118b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlingoto _aidl_error; 1190eb903eff2376941ad7e947bd5d3a32e15d89f69Christopher Wiley} 12074b7bf1043d1905e6f999f7c47920319029453c0Christopher Wiley_aidl_ret_status = _aidl_data.writeVectorSize(*goes_out); 12174b7bf1043d1905e6f999f7c47920319029453c0Christopher Wileyif (((_aidl_ret_status) != (::android::OK))) { 12274b7bf1043d1905e6f999f7c47920319029453c0Christopher Wileygoto _aidl_error; 12374b7bf1043d1905e6f999f7c47920319029453c0Christopher Wiley} 124b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = remote()->transact(IComplexTypeInterface::SEND, _aidl_data, &_aidl_reply); 125b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 126b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlingoto _aidl_error; 1270eb903eff2376941ad7e947bd5d3a32e15d89f69Christopher Wiley} 128b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_status.readFromParcel(_aidl_reply); 129b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 130b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlingoto _aidl_error; 131433c8bbdfa1ee6db10b7f08d3c50eafd49ad2687Christopher Wiley} 132433c8bbdfa1ee6db10b7f08d3c50eafd49ad2687Christopher Wileyif (!_aidl_status.isOk()) { 133433c8bbdfa1ee6db10b7f08d3c50eafd49ad2687Christopher Wileyreturn _aidl_status; 1342aaeda8b140de83f2cb2d51405ea27ccf1eefc13Christopher Wiley} 135b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_reply.readInt32Vector(_aidl_return); 136b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 137b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlingoto _aidl_error; 1380eb903eff2376941ad7e947bd5d3a32e15d89f69Christopher Wiley} 139b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_reply.readDoubleVector(goes_in_and_out); 140b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 141b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlingoto _aidl_error; 142bb96782d158ee996f79c1b4d6f06e121dee24972Christopher Wiley} 143b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_reply.readBoolVector(goes_out); 144b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 145b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlingoto _aidl_error; 1460eb903eff2376941ad7e947bd5d3a32e15d89f69Christopher Wiley} 147b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_error: 148b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_status.setFromStatusT(_aidl_ret_status); 149433c8bbdfa1ee6db10b7f08d3c50eafd49ad2687Christopher Wileyreturn _aidl_status; 150b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin} 151b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 152b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::binder::Status BpComplexTypeInterface::Piff(int32_t times) { 153b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::Parcel _aidl_data; 154b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::Parcel _aidl_reply; 1551095712f27931cb64d398d77201036cdcef0a296Christopher Wiley::android::status_t _aidl_ret_status = ::android::OK; 156b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::binder::Status _aidl_status; 157b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_data.writeInterfaceToken(getInterfaceDescriptor()); 158b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 159b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlingoto _aidl_error; 1608993cb5f297f9e329470d75f02a7b3e3a4bc64a5Christopher Wiley} 161b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_data.writeInt32(times); 162b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 163b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlingoto _aidl_error; 1640eb903eff2376941ad7e947bd5d3a32e15d89f69Christopher Wiley} 165b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = remote()->transact(IComplexTypeInterface::PIFF, _aidl_data, &_aidl_reply, ::android::IBinder::FLAG_ONEWAY); 166b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 167b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlingoto _aidl_error; 1680eb903eff2376941ad7e947bd5d3a32e15d89f69Christopher Wiley} 169b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_error: 170b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_status.setFromStatusT(_aidl_ret_status); 171433c8bbdfa1ee6db10b7f08d3c50eafd49ad2687Christopher Wileyreturn _aidl_status; 1720dd08af9e6145fb746e96e7ecc5e4c2096de3a6eCasey Dahlin} 1730dd08af9e6145fb746e96e7ecc5e4c2096de3a6eCasey Dahlin 174b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::binder::Status BpComplexTypeInterface::TakesABinder(const ::android::sp<::foo::IFooType>& f, ::android::sp<::foo::IFooType>* _aidl_return) { 175b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::Parcel _aidl_data; 176b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::Parcel _aidl_reply; 1771095712f27931cb64d398d77201036cdcef0a296Christopher Wiley::android::status_t _aidl_ret_status = ::android::OK; 178b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::binder::Status _aidl_status; 179b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_data.writeInterfaceToken(getInterfaceDescriptor()); 180b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 181b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlingoto _aidl_error; 182389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin} 1832dbab064e029411e230fb86913d58a03dfd18519Casey Dahlin_aidl_ret_status = _aidl_data.writeStrongBinder(::foo::IFooType::asBinder(f)); 184b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 185b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlingoto _aidl_error; 186389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin} 187b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = remote()->transact(IComplexTypeInterface::TAKESABINDER, _aidl_data, &_aidl_reply); 188b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 189b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlingoto _aidl_error; 190389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin} 191b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_status.readFromParcel(_aidl_reply); 192b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 193b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlingoto _aidl_error; 194433c8bbdfa1ee6db10b7f08d3c50eafd49ad2687Christopher Wiley} 195433c8bbdfa1ee6db10b7f08d3c50eafd49ad2687Christopher Wileyif (!_aidl_status.isOk()) { 196433c8bbdfa1ee6db10b7f08d3c50eafd49ad2687Christopher Wileyreturn _aidl_status; 197389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin} 198b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_reply.readStrongBinder(_aidl_return); 199b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 200b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlingoto _aidl_error; 201389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin} 202b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_error: 203b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_status.setFromStatusT(_aidl_ret_status); 204433c8bbdfa1ee6db10b7f08d3c50eafd49ad2687Christopher Wileyreturn _aidl_status; 205389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin} 206389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin 207ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlin::android::binder::Status BpComplexTypeInterface::NullableBinder(::android::sp<::foo::IFooType>* _aidl_return) { 208ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlin::android::Parcel _aidl_data; 209ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlin::android::Parcel _aidl_reply; 210ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlin::android::status_t _aidl_ret_status = ::android::OK; 211ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlin::android::binder::Status _aidl_status; 212ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlin_aidl_ret_status = _aidl_data.writeInterfaceToken(getInterfaceDescriptor()); 213ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 214ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlingoto _aidl_error; 215ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlin} 216ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlin_aidl_ret_status = remote()->transact(IComplexTypeInterface::NULLABLEBINDER, _aidl_data, &_aidl_reply); 217ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 218ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlingoto _aidl_error; 219ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlin} 220ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlin_aidl_ret_status = _aidl_status.readFromParcel(_aidl_reply); 221ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 222ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlingoto _aidl_error; 223ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlin} 224ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlinif (!_aidl_status.isOk()) { 225ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlinreturn _aidl_status; 226ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlin} 227ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlin_aidl_ret_status = _aidl_reply.readNullableStrongBinder(_aidl_return); 228ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 229ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlingoto _aidl_error; 230ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlin} 231ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlin_aidl_error: 232ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlin_aidl_status.setFromStatusT(_aidl_ret_status); 233ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlinreturn _aidl_status; 234ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlin} 235ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlin 236b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::binder::Status BpComplexTypeInterface::StringListMethod(const ::std::vector<::android::String16>& input, ::std::vector<::android::String16>* output, ::std::vector<::android::String16>* _aidl_return) { 237b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::Parcel _aidl_data; 238b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::Parcel _aidl_reply; 2391095712f27931cb64d398d77201036cdcef0a296Christopher Wiley::android::status_t _aidl_ret_status = ::android::OK; 240b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::binder::Status _aidl_status; 241b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_data.writeInterfaceToken(getInterfaceDescriptor()); 242b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 243b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlingoto _aidl_error; 24456c9bf3c4fb731d5557427667f13f963fa5ef0f7Christopher Wiley} 245b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_data.writeString16Vector(input); 246b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 247b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlingoto _aidl_error; 24856c9bf3c4fb731d5557427667f13f963fa5ef0f7Christopher Wiley} 249b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = remote()->transact(IComplexTypeInterface::STRINGLISTMETHOD, _aidl_data, &_aidl_reply); 250b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 251b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlingoto _aidl_error; 25256c9bf3c4fb731d5557427667f13f963fa5ef0f7Christopher Wiley} 253b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_status.readFromParcel(_aidl_reply); 254b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 255b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlingoto _aidl_error; 256433c8bbdfa1ee6db10b7f08d3c50eafd49ad2687Christopher Wiley} 257433c8bbdfa1ee6db10b7f08d3c50eafd49ad2687Christopher Wileyif (!_aidl_status.isOk()) { 258433c8bbdfa1ee6db10b7f08d3c50eafd49ad2687Christopher Wileyreturn _aidl_status; 25956c9bf3c4fb731d5557427667f13f963fa5ef0f7Christopher Wiley} 260b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_reply.readString16Vector(_aidl_return); 261b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 262b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlingoto _aidl_error; 26356c9bf3c4fb731d5557427667f13f963fa5ef0f7Christopher Wiley} 264b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_reply.readString16Vector(output); 265b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 266b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlingoto _aidl_error; 26756c9bf3c4fb731d5557427667f13f963fa5ef0f7Christopher Wiley} 268b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_error: 269b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_status.setFromStatusT(_aidl_ret_status); 270433c8bbdfa1ee6db10b7f08d3c50eafd49ad2687Christopher Wileyreturn _aidl_status; 27156c9bf3c4fb731d5557427667f13f963fa5ef0f7Christopher Wiley} 27256c9bf3c4fb731d5557427667f13f963fa5ef0f7Christopher Wiley 273b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::binder::Status BpComplexTypeInterface::BinderListMethod(const ::std::vector<::android::sp<::android::IBinder>>& input, ::std::vector<::android::sp<::android::IBinder>>* output, ::std::vector<::android::sp<::android::IBinder>>* _aidl_return) { 274b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::Parcel _aidl_data; 275b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::Parcel _aidl_reply; 2761095712f27931cb64d398d77201036cdcef0a296Christopher Wiley::android::status_t _aidl_ret_status = ::android::OK; 277b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::binder::Status _aidl_status; 278b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_data.writeInterfaceToken(getInterfaceDescriptor()); 279b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 280b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlingoto _aidl_error; 2817ecd69f2cc3c31cf569840e9c2d53ed352328d18Casey Dahlin} 282b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_data.writeStrongBinderVector(input); 283b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 284b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlingoto _aidl_error; 2857ecd69f2cc3c31cf569840e9c2d53ed352328d18Casey Dahlin} 286b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = remote()->transact(IComplexTypeInterface::BINDERLISTMETHOD, _aidl_data, &_aidl_reply); 287b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 288b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlingoto _aidl_error; 2897ecd69f2cc3c31cf569840e9c2d53ed352328d18Casey Dahlin} 290b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_status.readFromParcel(_aidl_reply); 291b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 292b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlingoto _aidl_error; 293433c8bbdfa1ee6db10b7f08d3c50eafd49ad2687Christopher Wiley} 294433c8bbdfa1ee6db10b7f08d3c50eafd49ad2687Christopher Wileyif (!_aidl_status.isOk()) { 295433c8bbdfa1ee6db10b7f08d3c50eafd49ad2687Christopher Wileyreturn _aidl_status; 2967ecd69f2cc3c31cf569840e9c2d53ed352328d18Casey Dahlin} 297b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_reply.readStrongBinderVector(_aidl_return); 298b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 299b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlingoto _aidl_error; 3007ecd69f2cc3c31cf569840e9c2d53ed352328d18Casey Dahlin} 301b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_reply.readStrongBinderVector(output); 302b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 303b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlingoto _aidl_error; 3047ecd69f2cc3c31cf569840e9c2d53ed352328d18Casey Dahlin} 305b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_error: 306b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_status.setFromStatusT(_aidl_ret_status); 307433c8bbdfa1ee6db10b7f08d3c50eafd49ad2687Christopher Wileyreturn _aidl_status; 3087ecd69f2cc3c31cf569840e9c2d53ed352328d18Casey Dahlin} 3097ecd69f2cc3c31cf569840e9c2d53ed352328d18Casey Dahlin 3107cb9c2585d518f97e1b42bf6b444a3fb69b332bbChristopher Wiley::android::binder::Status BpComplexTypeInterface::TakesAFileDescriptor(const ::android::base::unique_fd& f, ::android::base::unique_fd* _aidl_return) { 311b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::Parcel _aidl_data; 312b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::Parcel _aidl_reply; 3131095712f27931cb64d398d77201036cdcef0a296Christopher Wiley::android::status_t _aidl_ret_status = ::android::OK; 314b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::binder::Status _aidl_status; 315b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_data.writeInterfaceToken(getInterfaceDescriptor()); 316b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 317b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlingoto _aidl_error; 318a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlin} 319b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_data.writeUniqueFileDescriptor(f); 320b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 321b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlingoto _aidl_error; 322a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlin} 323b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = remote()->transact(IComplexTypeInterface::TAKESAFILEDESCRIPTOR, _aidl_data, &_aidl_reply); 324b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 325b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlingoto _aidl_error; 326a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlin} 327b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_status.readFromParcel(_aidl_reply); 328b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 329b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlingoto _aidl_error; 330a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlin} 331a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlinif (!_aidl_status.isOk()) { 332a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlinreturn _aidl_status; 333a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlin} 334b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_reply.readUniqueFileDescriptor(_aidl_return); 335b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 336b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlingoto _aidl_error; 337a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlin} 338b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_error: 339b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_status.setFromStatusT(_aidl_ret_status); 340a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlinreturn _aidl_status; 341a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlin} 342a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlin 3437cb9c2585d518f97e1b42bf6b444a3fb69b332bbChristopher Wiley::android::binder::Status BpComplexTypeInterface::TakesAFileDescriptorArray(const ::std::vector<::android::base::unique_fd>& f, ::std::vector<::android::base::unique_fd>* _aidl_return) { 344b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::Parcel _aidl_data; 345b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::Parcel _aidl_reply; 3461095712f27931cb64d398d77201036cdcef0a296Christopher Wiley::android::status_t _aidl_ret_status = ::android::OK; 347b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::binder::Status _aidl_status; 348b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_data.writeInterfaceToken(getInterfaceDescriptor()); 349b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 350b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlingoto _aidl_error; 351a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlin} 352b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_data.writeUniqueFileDescriptorVector(f); 353b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 354b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlingoto _aidl_error; 355a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlin} 356b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = remote()->transact(IComplexTypeInterface::TAKESAFILEDESCRIPTORARRAY, _aidl_data, &_aidl_reply); 357b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 358b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlingoto _aidl_error; 359a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlin} 360b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_status.readFromParcel(_aidl_reply); 361b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 362b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlingoto _aidl_error; 363a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlin} 364a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlinif (!_aidl_status.isOk()) { 365a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlinreturn _aidl_status; 366a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlin} 367b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_reply.readUniqueFileDescriptorVector(_aidl_return); 368b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 369b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlingoto _aidl_error; 370a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlin} 371b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_error: 372b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_status.setFromStatusT(_aidl_ret_status); 373a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlinreturn _aidl_status; 374a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlin} 375a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlin 376b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin} // namespace os 377b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 378b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin} // namespace android 379b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin)"; 380b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 381b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenconst char kExpectedComplexTypeClientWithTraceSourceOutput[] = 382b06c82923869f50e9641f7dac56df0aebe637845Martijn CoenenR"(#include <android/os/BpComplexTypeInterface.h> 383b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen#include <binder/Parcel.h> 384b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen 385b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenennamespace android { 386b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen 387b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenennamespace os { 388b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen 389b06c82923869f50e9641f7dac56df0aebe637845Martijn CoenenBpComplexTypeInterface::BpComplexTypeInterface(const ::android::sp<::android::IBinder>& _aidl_impl) 390b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen : BpInterface<IComplexTypeInterface>(_aidl_impl){ 391b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 392b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen 393b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::binder::Status BpComplexTypeInterface::Send(const ::std::unique_ptr<::std::vector<int32_t>>& goes_in, ::std::vector<double>* goes_in_and_out, ::std::vector<bool>* goes_out, ::std::vector<int32_t>* _aidl_return) { 394b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::Parcel _aidl_data; 395b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::Parcel _aidl_reply; 396b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::status_t _aidl_ret_status = ::android::OK; 397b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::binder::Status _aidl_status; 398b06c82923869f50e9641f7dac56df0aebe637845Martijn CoenenScopedTrace _aidl_trace(ATRACE_TAG_AIDL, "IComplexTypeInterface::Send::cppClient"); 399b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_data.writeInterfaceToken(getInterfaceDescriptor()); 400b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 401b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 402b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 403b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_data.writeInt32Vector(goes_in); 404b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 405b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 406b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 407b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_data.writeDoubleVector(*goes_in_and_out); 408b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 409b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 410b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 411b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_data.writeVectorSize(*goes_out); 412b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 413b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 414b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 415b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = remote()->transact(IComplexTypeInterface::SEND, _aidl_data, &_aidl_reply); 416b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 417b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 418b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 419b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_status.readFromParcel(_aidl_reply); 420b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 421b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 422b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 423b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (!_aidl_status.isOk()) { 424b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenreturn _aidl_status; 425b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 426b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_reply.readInt32Vector(_aidl_return); 427b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 428b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 429b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 430b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_reply.readDoubleVector(goes_in_and_out); 431b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 432b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 433b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 434b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_reply.readBoolVector(goes_out); 435b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 436b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 437b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 438b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_error: 439b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_status.setFromStatusT(_aidl_ret_status); 440b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenreturn _aidl_status; 441b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 442b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen 443b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::binder::Status BpComplexTypeInterface::Piff(int32_t times) { 444b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::Parcel _aidl_data; 445b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::Parcel _aidl_reply; 446b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::status_t _aidl_ret_status = ::android::OK; 447b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::binder::Status _aidl_status; 448b06c82923869f50e9641f7dac56df0aebe637845Martijn CoenenScopedTrace _aidl_trace(ATRACE_TAG_AIDL, "IComplexTypeInterface::Piff::cppClient"); 449b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_data.writeInterfaceToken(getInterfaceDescriptor()); 450b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 451b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 452b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 453b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_data.writeInt32(times); 454b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 455b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 456b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 457b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = remote()->transact(IComplexTypeInterface::PIFF, _aidl_data, &_aidl_reply, ::android::IBinder::FLAG_ONEWAY); 458b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 459b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 460b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 461b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_error: 462b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_status.setFromStatusT(_aidl_ret_status); 463b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenreturn _aidl_status; 464b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 465b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen 466b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::binder::Status BpComplexTypeInterface::TakesABinder(const ::android::sp<::foo::IFooType>& f, ::android::sp<::foo::IFooType>* _aidl_return) { 467b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::Parcel _aidl_data; 468b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::Parcel _aidl_reply; 469b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::status_t _aidl_ret_status = ::android::OK; 470b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::binder::Status _aidl_status; 471b06c82923869f50e9641f7dac56df0aebe637845Martijn CoenenScopedTrace _aidl_trace(ATRACE_TAG_AIDL, "IComplexTypeInterface::TakesABinder::cppClient"); 472b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_data.writeInterfaceToken(getInterfaceDescriptor()); 473b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 474b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 475b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 476b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_data.writeStrongBinder(::foo::IFooType::asBinder(f)); 477b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 478b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 479b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 480b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = remote()->transact(IComplexTypeInterface::TAKESABINDER, _aidl_data, &_aidl_reply); 481b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 482b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 483b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 484b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_status.readFromParcel(_aidl_reply); 485b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 486b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 487b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 488b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (!_aidl_status.isOk()) { 489b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenreturn _aidl_status; 490b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 491b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_reply.readStrongBinder(_aidl_return); 492b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 493b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 494b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 495b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_error: 496b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_status.setFromStatusT(_aidl_ret_status); 497b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenreturn _aidl_status; 498b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 499b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen 500b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::binder::Status BpComplexTypeInterface::NullableBinder(::android::sp<::foo::IFooType>* _aidl_return) { 501b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::Parcel _aidl_data; 502b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::Parcel _aidl_reply; 503b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::status_t _aidl_ret_status = ::android::OK; 504b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::binder::Status _aidl_status; 505b06c82923869f50e9641f7dac56df0aebe637845Martijn CoenenScopedTrace _aidl_trace(ATRACE_TAG_AIDL, "IComplexTypeInterface::NullableBinder::cppClient"); 506b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_data.writeInterfaceToken(getInterfaceDescriptor()); 507b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 508b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 509b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 510b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = remote()->transact(IComplexTypeInterface::NULLABLEBINDER, _aidl_data, &_aidl_reply); 511b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 512b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 513b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 514b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_status.readFromParcel(_aidl_reply); 515b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 516b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 517b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 518b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (!_aidl_status.isOk()) { 519b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenreturn _aidl_status; 520b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 521b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_reply.readNullableStrongBinder(_aidl_return); 522b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 523b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 524b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 525b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_error: 526b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_status.setFromStatusT(_aidl_ret_status); 527b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenreturn _aidl_status; 528b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 529b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen 530b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::binder::Status BpComplexTypeInterface::StringListMethod(const ::std::vector<::android::String16>& input, ::std::vector<::android::String16>* output, ::std::vector<::android::String16>* _aidl_return) { 531b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::Parcel _aidl_data; 532b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::Parcel _aidl_reply; 533b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::status_t _aidl_ret_status = ::android::OK; 534b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::binder::Status _aidl_status; 535b06c82923869f50e9641f7dac56df0aebe637845Martijn CoenenScopedTrace _aidl_trace(ATRACE_TAG_AIDL, "IComplexTypeInterface::StringListMethod::cppClient"); 536b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_data.writeInterfaceToken(getInterfaceDescriptor()); 537b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 538b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 539b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 540b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_data.writeString16Vector(input); 541b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 542b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 543b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 544b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = remote()->transact(IComplexTypeInterface::STRINGLISTMETHOD, _aidl_data, &_aidl_reply); 545b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 546b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 547b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 548b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_status.readFromParcel(_aidl_reply); 549b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 550b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 551b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 552b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (!_aidl_status.isOk()) { 553b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenreturn _aidl_status; 554b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 555b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_reply.readString16Vector(_aidl_return); 556b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 557b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 558b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 559b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_reply.readString16Vector(output); 560b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 561b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 562b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 563b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_error: 564b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_status.setFromStatusT(_aidl_ret_status); 565b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenreturn _aidl_status; 566b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 567b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen 568b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::binder::Status BpComplexTypeInterface::BinderListMethod(const ::std::vector<::android::sp<::android::IBinder>>& input, ::std::vector<::android::sp<::android::IBinder>>* output, ::std::vector<::android::sp<::android::IBinder>>* _aidl_return) { 569b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::Parcel _aidl_data; 570b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::Parcel _aidl_reply; 571b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::status_t _aidl_ret_status = ::android::OK; 572b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::binder::Status _aidl_status; 573b06c82923869f50e9641f7dac56df0aebe637845Martijn CoenenScopedTrace _aidl_trace(ATRACE_TAG_AIDL, "IComplexTypeInterface::BinderListMethod::cppClient"); 574b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_data.writeInterfaceToken(getInterfaceDescriptor()); 575b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 576b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 577b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 578b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_data.writeStrongBinderVector(input); 579b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 580b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 581b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 582b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = remote()->transact(IComplexTypeInterface::BINDERLISTMETHOD, _aidl_data, &_aidl_reply); 583b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 584b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 585b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 586b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_status.readFromParcel(_aidl_reply); 587b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 588b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 589b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 590b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (!_aidl_status.isOk()) { 591b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenreturn _aidl_status; 592b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 593b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_reply.readStrongBinderVector(_aidl_return); 594b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 595b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 596b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 597b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_reply.readStrongBinderVector(output); 598b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 599b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 600b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 601b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_error: 602b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_status.setFromStatusT(_aidl_ret_status); 603b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenreturn _aidl_status; 604b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 605b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen 606b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::binder::Status BpComplexTypeInterface::TakesAFileDescriptor(const ::android::base::unique_fd& f, ::android::base::unique_fd* _aidl_return) { 607b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::Parcel _aidl_data; 608b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::Parcel _aidl_reply; 609b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::status_t _aidl_ret_status = ::android::OK; 610b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::binder::Status _aidl_status; 611b06c82923869f50e9641f7dac56df0aebe637845Martijn CoenenScopedTrace _aidl_trace(ATRACE_TAG_AIDL, "IComplexTypeInterface::TakesAFileDescriptor::cppClient"); 612b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_data.writeInterfaceToken(getInterfaceDescriptor()); 613b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 614b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 615b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 616b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_data.writeUniqueFileDescriptor(f); 617b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 618b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 619b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 620b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = remote()->transact(IComplexTypeInterface::TAKESAFILEDESCRIPTOR, _aidl_data, &_aidl_reply); 621b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 622b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 623b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 624b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_status.readFromParcel(_aidl_reply); 625b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 626b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 627b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 628b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (!_aidl_status.isOk()) { 629b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenreturn _aidl_status; 630b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 631b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_reply.readUniqueFileDescriptor(_aidl_return); 632b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 633b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 634b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 635b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_error: 636b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_status.setFromStatusT(_aidl_ret_status); 637b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenreturn _aidl_status; 638b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 639b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen 640b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::binder::Status BpComplexTypeInterface::TakesAFileDescriptorArray(const ::std::vector<::android::base::unique_fd>& f, ::std::vector<::android::base::unique_fd>* _aidl_return) { 641b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::Parcel _aidl_data; 642b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::Parcel _aidl_reply; 643b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::status_t _aidl_ret_status = ::android::OK; 644b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::binder::Status _aidl_status; 645b06c82923869f50e9641f7dac56df0aebe637845Martijn CoenenScopedTrace _aidl_trace(ATRACE_TAG_AIDL, "IComplexTypeInterface::TakesAFileDescriptorArray::cppClient"); 646b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_data.writeInterfaceToken(getInterfaceDescriptor()); 647b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 648b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 649b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 650b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_data.writeUniqueFileDescriptorVector(f); 651b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 652b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 653b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 654b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = remote()->transact(IComplexTypeInterface::TAKESAFILEDESCRIPTORARRAY, _aidl_data, &_aidl_reply); 655b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 656b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 657b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 658b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_status.readFromParcel(_aidl_reply); 659b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 660b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 661b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 662b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (!_aidl_status.isOk()) { 663b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenreturn _aidl_status; 664b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 665b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_reply.readUniqueFileDescriptorVector(_aidl_return); 666b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 667b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenengoto _aidl_error; 668b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 669b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_error: 670b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_status.setFromStatusT(_aidl_ret_status); 671b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenreturn _aidl_status; 672b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 673b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen 674b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} // namespace os 675b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen 676b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} // namespace android 677b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen)"; 678b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen 679b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlinconst char kExpectedComplexTypeServerHeaderOutput[] = 680b0966619850093e117104dc34d8a6ae4c56ea3ffCasey DahlinR"(#ifndef AIDL_GENERATED_ANDROID_OS_BN_COMPLEX_TYPE_INTERFACE_H_ 681b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin#define AIDL_GENERATED_ANDROID_OS_BN_COMPLEX_TYPE_INTERFACE_H_ 682b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 683b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin#include <binder/IInterface.h> 684b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin#include <android/os/IComplexTypeInterface.h> 685b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 686b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlinnamespace android { 687b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 688b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlinnamespace os { 689b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 690b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinclass BnComplexTypeInterface : public ::android::BnInterface<IComplexTypeInterface> { 691b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlinpublic: 692b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::status_t onTransact(uint32_t _aidl_code, const ::android::Parcel& _aidl_data, ::android::Parcel* _aidl_reply, uint32_t _aidl_flags = 0) override; 693b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin}; // class BnComplexTypeInterface 694b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 695b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin} // namespace os 696b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 697b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin} // namespace android 698b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 69911a9d79a1189bbfa5b64a77b32f1a947ad91f0ddChristopher Wiley#endif // AIDL_GENERATED_ANDROID_OS_BN_COMPLEX_TYPE_INTERFACE_H_ 70011a9d79a1189bbfa5b64a77b32f1a947ad91f0ddChristopher Wiley)"; 701b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 702b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlinconst char kExpectedComplexTypeServerSourceOutput[] = 703b0966619850093e117104dc34d8a6ae4c56ea3ffCasey DahlinR"(#include <android/os/BnComplexTypeInterface.h> 704b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin#include <binder/Parcel.h> 705b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 706b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlinnamespace android { 707b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 708b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlinnamespace os { 709b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 710b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::status_t BnComplexTypeInterface::onTransact(uint32_t _aidl_code, const ::android::Parcel& _aidl_data, ::android::Parcel* _aidl_reply, uint32_t _aidl_flags) { 7111095712f27931cb64d398d77201036cdcef0a296Christopher Wiley::android::status_t _aidl_ret_status = ::android::OK; 712b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinswitch (_aidl_code) { 713b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlincase Call::SEND: 714b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin{ 71557dbe24bcb8f4509a876e8445c78d9504d7e616aCasey Dahlin::std::unique_ptr<::std::vector<int32_t>> in_goes_in; 716b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::std::vector<double> in_goes_in_and_out; 717b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::std::vector<bool> out_goes_out; 718b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::std::vector<int32_t> _aidl_return; 719b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (!(_aidl_data.checkInterface(this))) { 720b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = ::android::BAD_TYPE; 7218993cb5f297f9e329470d75f02a7b3e3a4bc64a5Christopher Wileybreak; 7228993cb5f297f9e329470d75f02a7b3e3a4bc64a5Christopher Wiley} 723b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_data.readInt32Vector(&in_goes_in); 724b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 7250eb903eff2376941ad7e947bd5d3a32e15d89f69Christopher Wileybreak; 7260eb903eff2376941ad7e947bd5d3a32e15d89f69Christopher Wiley} 727b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_data.readDoubleVector(&in_goes_in_and_out); 728b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 729bb96782d158ee996f79c1b4d6f06e121dee24972Christopher Wileybreak; 730bb96782d158ee996f79c1b4d6f06e121dee24972Christopher Wiley} 73174b7bf1043d1905e6f999f7c47920319029453c0Christopher Wiley_aidl_ret_status = _aidl_data.resizeOutVector(&out_goes_out); 73274b7bf1043d1905e6f999f7c47920319029453c0Christopher Wileyif (((_aidl_ret_status) != (::android::OK))) { 73374b7bf1043d1905e6f999f7c47920319029453c0Christopher Wileybreak; 73474b7bf1043d1905e6f999f7c47920319029453c0Christopher Wiley} 735b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::binder::Status _aidl_status(Send(in_goes_in, &in_goes_in_and_out, &out_goes_out, &_aidl_return)); 736b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_status.writeToParcel(_aidl_reply); 737b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 7380eb903eff2376941ad7e947bd5d3a32e15d89f69Christopher Wileybreak; 7390eb903eff2376941ad7e947bd5d3a32e15d89f69Christopher Wiley} 740433c8bbdfa1ee6db10b7f08d3c50eafd49ad2687Christopher Wileyif (!_aidl_status.isOk()) { 7412aaeda8b140de83f2cb2d51405ea27ccf1eefc13Christopher Wileybreak; 7422aaeda8b140de83f2cb2d51405ea27ccf1eefc13Christopher Wiley} 743b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_reply->writeInt32Vector(_aidl_return); 744b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 745bb96782d158ee996f79c1b4d6f06e121dee24972Christopher Wileybreak; 746bb96782d158ee996f79c1b4d6f06e121dee24972Christopher Wiley} 747b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_reply->writeDoubleVector(in_goes_in_and_out); 748b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 7490eb903eff2376941ad7e947bd5d3a32e15d89f69Christopher Wileybreak; 7500eb903eff2376941ad7e947bd5d3a32e15d89f69Christopher Wiley} 751b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_reply->writeBoolVector(out_goes_out); 752b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 7530eb903eff2376941ad7e947bd5d3a32e15d89f69Christopher Wileybreak; 7540eb903eff2376941ad7e947bd5d3a32e15d89f69Christopher Wiley} 755b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin} 756b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlinbreak; 7570dd08af9e6145fb746e96e7ecc5e4c2096de3a6eCasey Dahlincase Call::PIFF: 7580dd08af9e6145fb746e96e7ecc5e4c2096de3a6eCasey Dahlin{ 7590dd08af9e6145fb746e96e7ecc5e4c2096de3a6eCasey Dahlinint32_t in_times; 760b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (!(_aidl_data.checkInterface(this))) { 761b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = ::android::BAD_TYPE; 7628993cb5f297f9e329470d75f02a7b3e3a4bc64a5Christopher Wileybreak; 7638993cb5f297f9e329470d75f02a7b3e3a4bc64a5Christopher Wiley} 764b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_data.readInt32(&in_times); 765b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 7660eb903eff2376941ad7e947bd5d3a32e15d89f69Christopher Wileybreak; 7670eb903eff2376941ad7e947bd5d3a32e15d89f69Christopher Wiley} 768b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::binder::Status _aidl_status(Piff(in_times)); 7690dd08af9e6145fb746e96e7ecc5e4c2096de3a6eCasey Dahlin} 7700dd08af9e6145fb746e96e7ecc5e4c2096de3a6eCasey Dahlinbreak; 771389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlincase Call::TAKESABINDER: 772389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin{ 773b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::sp<::foo::IFooType> in_f; 774b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::sp<::foo::IFooType> _aidl_return; 775b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (!(_aidl_data.checkInterface(this))) { 776b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = ::android::BAD_TYPE; 777389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlinbreak; 778389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin} 779b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_data.readStrongBinder(&in_f); 780b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 781389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlinbreak; 782389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin} 783b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::binder::Status _aidl_status(TakesABinder(in_f, &_aidl_return)); 784b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_status.writeToParcel(_aidl_reply); 785b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 786389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlinbreak; 787389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin} 788433c8bbdfa1ee6db10b7f08d3c50eafd49ad2687Christopher Wileyif (!_aidl_status.isOk()) { 789389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlinbreak; 790389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin} 7912dbab064e029411e230fb86913d58a03dfd18519Casey Dahlin_aidl_ret_status = _aidl_reply->writeStrongBinder(::foo::IFooType::asBinder(_aidl_return)); 792b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 793389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlinbreak; 794389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin} 795389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin} 796389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlinbreak; 797ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlincase Call::NULLABLEBINDER: 798ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlin{ 799ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlin::android::sp<::foo::IFooType> _aidl_return; 800ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlinif (!(_aidl_data.checkInterface(this))) { 801ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlin_aidl_ret_status = ::android::BAD_TYPE; 802ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlinbreak; 803ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlin} 804ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlin::android::binder::Status _aidl_status(NullableBinder(&_aidl_return)); 805ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlin_aidl_ret_status = _aidl_status.writeToParcel(_aidl_reply); 806ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 807ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlinbreak; 808ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlin} 809ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlinif (!_aidl_status.isOk()) { 810ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlinbreak; 811ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlin} 812ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlin_aidl_ret_status = _aidl_reply->writeStrongBinder(::foo::IFooType::asBinder(_aidl_return)); 813ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 814ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlinbreak; 815ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlin} 816ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlin} 817ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlinbreak; 81856c9bf3c4fb731d5557427667f13f963fa5ef0f7Christopher Wileycase Call::STRINGLISTMETHOD: 81956c9bf3c4fb731d5557427667f13f963fa5ef0f7Christopher Wiley{ 820b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::std::vector<::android::String16> in_input; 821b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::std::vector<::android::String16> out_output; 822b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::std::vector<::android::String16> _aidl_return; 823b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (!(_aidl_data.checkInterface(this))) { 824b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = ::android::BAD_TYPE; 82556c9bf3c4fb731d5557427667f13f963fa5ef0f7Christopher Wileybreak; 82656c9bf3c4fb731d5557427667f13f963fa5ef0f7Christopher Wiley} 827b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_data.readString16Vector(&in_input); 828b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 82956c9bf3c4fb731d5557427667f13f963fa5ef0f7Christopher Wileybreak; 83056c9bf3c4fb731d5557427667f13f963fa5ef0f7Christopher Wiley} 831b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::binder::Status _aidl_status(StringListMethod(in_input, &out_output, &_aidl_return)); 832b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_status.writeToParcel(_aidl_reply); 833b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 83456c9bf3c4fb731d5557427667f13f963fa5ef0f7Christopher Wileybreak; 83556c9bf3c4fb731d5557427667f13f963fa5ef0f7Christopher Wiley} 836433c8bbdfa1ee6db10b7f08d3c50eafd49ad2687Christopher Wileyif (!_aidl_status.isOk()) { 83756c9bf3c4fb731d5557427667f13f963fa5ef0f7Christopher Wileybreak; 83856c9bf3c4fb731d5557427667f13f963fa5ef0f7Christopher Wiley} 839b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_reply->writeString16Vector(_aidl_return); 840b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 84156c9bf3c4fb731d5557427667f13f963fa5ef0f7Christopher Wileybreak; 84256c9bf3c4fb731d5557427667f13f963fa5ef0f7Christopher Wiley} 843b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_reply->writeString16Vector(out_output); 844b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 84556c9bf3c4fb731d5557427667f13f963fa5ef0f7Christopher Wileybreak; 84656c9bf3c4fb731d5557427667f13f963fa5ef0f7Christopher Wiley} 84756c9bf3c4fb731d5557427667f13f963fa5ef0f7Christopher Wiley} 84856c9bf3c4fb731d5557427667f13f963fa5ef0f7Christopher Wileybreak; 8497ecd69f2cc3c31cf569840e9c2d53ed352328d18Casey Dahlincase Call::BINDERLISTMETHOD: 8507ecd69f2cc3c31cf569840e9c2d53ed352328d18Casey Dahlin{ 851b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::std::vector<::android::sp<::android::IBinder>> in_input; 852b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::std::vector<::android::sp<::android::IBinder>> out_output; 853b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::std::vector<::android::sp<::android::IBinder>> _aidl_return; 854b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (!(_aidl_data.checkInterface(this))) { 855b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = ::android::BAD_TYPE; 8567ecd69f2cc3c31cf569840e9c2d53ed352328d18Casey Dahlinbreak; 8577ecd69f2cc3c31cf569840e9c2d53ed352328d18Casey Dahlin} 858b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_data.readStrongBinderVector(&in_input); 859b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 8607ecd69f2cc3c31cf569840e9c2d53ed352328d18Casey Dahlinbreak; 8617ecd69f2cc3c31cf569840e9c2d53ed352328d18Casey Dahlin} 862b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::binder::Status _aidl_status(BinderListMethod(in_input, &out_output, &_aidl_return)); 863b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_status.writeToParcel(_aidl_reply); 864b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 8657ecd69f2cc3c31cf569840e9c2d53ed352328d18Casey Dahlinbreak; 8667ecd69f2cc3c31cf569840e9c2d53ed352328d18Casey Dahlin} 867433c8bbdfa1ee6db10b7f08d3c50eafd49ad2687Christopher Wileyif (!_aidl_status.isOk()) { 8687ecd69f2cc3c31cf569840e9c2d53ed352328d18Casey Dahlinbreak; 8697ecd69f2cc3c31cf569840e9c2d53ed352328d18Casey Dahlin} 870b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_reply->writeStrongBinderVector(_aidl_return); 871b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 8727ecd69f2cc3c31cf569840e9c2d53ed352328d18Casey Dahlinbreak; 8737ecd69f2cc3c31cf569840e9c2d53ed352328d18Casey Dahlin} 874b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_reply->writeStrongBinderVector(out_output); 875b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 8767ecd69f2cc3c31cf569840e9c2d53ed352328d18Casey Dahlinbreak; 8777ecd69f2cc3c31cf569840e9c2d53ed352328d18Casey Dahlin} 8787ecd69f2cc3c31cf569840e9c2d53ed352328d18Casey Dahlin} 8797ecd69f2cc3c31cf569840e9c2d53ed352328d18Casey Dahlinbreak; 880a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlincase Call::TAKESAFILEDESCRIPTOR: 881a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlin{ 8827cb9c2585d518f97e1b42bf6b444a3fb69b332bbChristopher Wiley::android::base::unique_fd in_f; 8837cb9c2585d518f97e1b42bf6b444a3fb69b332bbChristopher Wiley::android::base::unique_fd _aidl_return; 884b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (!(_aidl_data.checkInterface(this))) { 885b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = ::android::BAD_TYPE; 886a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlinbreak; 887a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlin} 888b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_data.readUniqueFileDescriptor(&in_f); 889b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 890a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlinbreak; 891a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlin} 892b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::binder::Status _aidl_status(TakesAFileDescriptor(in_f, &_aidl_return)); 893b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_status.writeToParcel(_aidl_reply); 894b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 895a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlinbreak; 896a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlin} 897a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlinif (!_aidl_status.isOk()) { 898a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlinbreak; 899a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlin} 900b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_reply->writeUniqueFileDescriptor(_aidl_return); 901b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 902a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlinbreak; 903a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlin} 904a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlin} 905a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlinbreak; 906a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlincase Call::TAKESAFILEDESCRIPTORARRAY: 907a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlin{ 9087cb9c2585d518f97e1b42bf6b444a3fb69b332bbChristopher Wiley::std::vector<::android::base::unique_fd> in_f; 9097cb9c2585d518f97e1b42bf6b444a3fb69b332bbChristopher Wiley::std::vector<::android::base::unique_fd> _aidl_return; 910b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (!(_aidl_data.checkInterface(this))) { 911b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = ::android::BAD_TYPE; 912a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlinbreak; 913a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlin} 914b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_data.readUniqueFileDescriptorVector(&in_f); 915b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 916a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlinbreak; 917a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlin} 918b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin::android::binder::Status _aidl_status(TakesAFileDescriptorArray(in_f, &_aidl_return)); 919b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_status.writeToParcel(_aidl_reply); 920b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 921a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlinbreak; 922a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlin} 923a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlinif (!_aidl_status.isOk()) { 924a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlinbreak; 925a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlin} 926b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = _aidl_reply->writeUniqueFileDescriptorVector(_aidl_return); 927b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (((_aidl_ret_status) != (::android::OK))) { 928a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlinbreak; 929a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlin} 930a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlin} 931a4ba4b6868977b26b471860c038c7bbda4470946Casey Dahlinbreak; 932b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlindefault: 933b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin{ 934b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = ::android::BBinder::onTransact(_aidl_code, _aidl_data, _aidl_reply, _aidl_flags); 935b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin} 936b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlinbreak; 937b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin} 938b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinif (_aidl_ret_status == ::android::UNEXPECTED_NULL) { 939b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin_aidl_ret_status = ::android::binder::Status::fromExceptionCode(::android::binder::Status::EX_NULL_POINTER).writeToParcel(_aidl_reply); 940433c8bbdfa1ee6db10b7f08d3c50eafd49ad2687Christopher Wiley} 941b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinreturn _aidl_ret_status; 942b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin} 943b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 944b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin} // namespace os 945b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 946b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin} // namespace android 947b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin)"; 948b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 949b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenconst char kExpectedComplexTypeServerWithTraceSourceOutput[] = 950b06c82923869f50e9641f7dac56df0aebe637845Martijn CoenenR"(#include <android/os/BnComplexTypeInterface.h> 951b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen#include <binder/Parcel.h> 952b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen 953b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenennamespace android { 954b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen 955b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenennamespace os { 956b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen 957b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::status_t BnComplexTypeInterface::onTransact(uint32_t _aidl_code, const ::android::Parcel& _aidl_data, ::android::Parcel* _aidl_reply, uint32_t _aidl_flags) { 958b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::status_t _aidl_ret_status = ::android::OK; 959b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenswitch (_aidl_code) { 960b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenencase Call::SEND: 961b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen{ 962b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::std::unique_ptr<::std::vector<int32_t>> in_goes_in; 963b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::std::vector<double> in_goes_in_and_out; 964b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::std::vector<bool> out_goes_out; 965b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::std::vector<int32_t> _aidl_return; 966b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (!(_aidl_data.checkInterface(this))) { 967b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = ::android::BAD_TYPE; 968b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 969b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 970b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_data.readInt32Vector(&in_goes_in); 971b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 972b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 973b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 974b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_data.readDoubleVector(&in_goes_in_and_out); 975b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 976b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 977b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 978b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_data.resizeOutVector(&out_goes_out); 979b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 980b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 981b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 982b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenatrace_begin(ATRACE_TAG_AIDL, "IComplexTypeInterface::Send::cppServer"); 983b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::binder::Status _aidl_status(Send(in_goes_in, &in_goes_in_and_out, &out_goes_out, &_aidl_return)); 984b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenatrace_end(ATRACE_TAG_AIDL); 985b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_status.writeToParcel(_aidl_reply); 986b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 987b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 988b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 989b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (!_aidl_status.isOk()) { 990b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 991b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 992b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_reply->writeInt32Vector(_aidl_return); 993b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 994b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 995b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 996b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_reply->writeDoubleVector(in_goes_in_and_out); 997b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 998b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 999b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1000b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_reply->writeBoolVector(out_goes_out); 1001b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 1002b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1003b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1004b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1005b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1006b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenencase Call::PIFF: 1007b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen{ 1008b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenint32_t in_times; 1009b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (!(_aidl_data.checkInterface(this))) { 1010b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = ::android::BAD_TYPE; 1011b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1012b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1013b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_data.readInt32(&in_times); 1014b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 1015b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1016b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1017b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenatrace_begin(ATRACE_TAG_AIDL, "IComplexTypeInterface::Piff::cppServer"); 1018b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::binder::Status _aidl_status(Piff(in_times)); 1019b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenatrace_end(ATRACE_TAG_AIDL); 1020b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1021b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1022b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenencase Call::TAKESABINDER: 1023b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen{ 1024b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::sp<::foo::IFooType> in_f; 1025b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::sp<::foo::IFooType> _aidl_return; 1026b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (!(_aidl_data.checkInterface(this))) { 1027b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = ::android::BAD_TYPE; 1028b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1029b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1030b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_data.readStrongBinder(&in_f); 1031b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 1032b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1033b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1034b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenatrace_begin(ATRACE_TAG_AIDL, "IComplexTypeInterface::TakesABinder::cppServer"); 1035b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::binder::Status _aidl_status(TakesABinder(in_f, &_aidl_return)); 1036b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenatrace_end(ATRACE_TAG_AIDL); 1037b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_status.writeToParcel(_aidl_reply); 1038b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 1039b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1040b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1041b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (!_aidl_status.isOk()) { 1042b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1043b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1044b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_reply->writeStrongBinder(::foo::IFooType::asBinder(_aidl_return)); 1045b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 1046b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1047b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1048b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1049b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1050b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenencase Call::NULLABLEBINDER: 1051b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen{ 1052b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::sp<::foo::IFooType> _aidl_return; 1053b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (!(_aidl_data.checkInterface(this))) { 1054b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = ::android::BAD_TYPE; 1055b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1056b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1057b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenatrace_begin(ATRACE_TAG_AIDL, "IComplexTypeInterface::NullableBinder::cppServer"); 1058b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::binder::Status _aidl_status(NullableBinder(&_aidl_return)); 1059b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenatrace_end(ATRACE_TAG_AIDL); 1060b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_status.writeToParcel(_aidl_reply); 1061b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 1062b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1063b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1064b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (!_aidl_status.isOk()) { 1065b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1066b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1067b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_reply->writeStrongBinder(::foo::IFooType::asBinder(_aidl_return)); 1068b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 1069b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1070b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1071b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1072b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1073b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenencase Call::STRINGLISTMETHOD: 1074b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen{ 1075b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::std::vector<::android::String16> in_input; 1076b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::std::vector<::android::String16> out_output; 1077b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::std::vector<::android::String16> _aidl_return; 1078b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (!(_aidl_data.checkInterface(this))) { 1079b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = ::android::BAD_TYPE; 1080b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1081b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1082b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_data.readString16Vector(&in_input); 1083b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 1084b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1085b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1086b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenatrace_begin(ATRACE_TAG_AIDL, "IComplexTypeInterface::StringListMethod::cppServer"); 1087b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::binder::Status _aidl_status(StringListMethod(in_input, &out_output, &_aidl_return)); 1088b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenatrace_end(ATRACE_TAG_AIDL); 1089b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_status.writeToParcel(_aidl_reply); 1090b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 1091b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1092b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1093b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (!_aidl_status.isOk()) { 1094b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1095b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1096b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_reply->writeString16Vector(_aidl_return); 1097b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 1098b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1099b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1100b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_reply->writeString16Vector(out_output); 1101b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 1102b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1103b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1104b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1105b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1106b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenencase Call::BINDERLISTMETHOD: 1107b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen{ 1108b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::std::vector<::android::sp<::android::IBinder>> in_input; 1109b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::std::vector<::android::sp<::android::IBinder>> out_output; 1110b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::std::vector<::android::sp<::android::IBinder>> _aidl_return; 1111b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (!(_aidl_data.checkInterface(this))) { 1112b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = ::android::BAD_TYPE; 1113b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1114b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1115b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_data.readStrongBinderVector(&in_input); 1116b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 1117b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1118b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1119b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenatrace_begin(ATRACE_TAG_AIDL, "IComplexTypeInterface::BinderListMethod::cppServer"); 1120b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::binder::Status _aidl_status(BinderListMethod(in_input, &out_output, &_aidl_return)); 1121b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenatrace_end(ATRACE_TAG_AIDL); 1122b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_status.writeToParcel(_aidl_reply); 1123b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 1124b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1125b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1126b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (!_aidl_status.isOk()) { 1127b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1128b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1129b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_reply->writeStrongBinderVector(_aidl_return); 1130b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 1131b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1132b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1133b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_reply->writeStrongBinderVector(out_output); 1134b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 1135b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1136b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1137b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1138b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1139b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenencase Call::TAKESAFILEDESCRIPTOR: 1140b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen{ 1141b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::base::unique_fd in_f; 1142b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::base::unique_fd _aidl_return; 1143b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (!(_aidl_data.checkInterface(this))) { 1144b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = ::android::BAD_TYPE; 1145b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1146b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1147b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_data.readUniqueFileDescriptor(&in_f); 1148b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 1149b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1150b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1151b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenatrace_begin(ATRACE_TAG_AIDL, "IComplexTypeInterface::TakesAFileDescriptor::cppServer"); 1152b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::binder::Status _aidl_status(TakesAFileDescriptor(in_f, &_aidl_return)); 1153b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenatrace_end(ATRACE_TAG_AIDL); 1154b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_status.writeToParcel(_aidl_reply); 1155b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 1156b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1157b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1158b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (!_aidl_status.isOk()) { 1159b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1160b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1161b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_reply->writeUniqueFileDescriptor(_aidl_return); 1162b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 1163b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1164b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1165b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1166b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1167b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenencase Call::TAKESAFILEDESCRIPTORARRAY: 1168b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen{ 1169b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::std::vector<::android::base::unique_fd> in_f; 1170b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::std::vector<::android::base::unique_fd> _aidl_return; 1171b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (!(_aidl_data.checkInterface(this))) { 1172b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = ::android::BAD_TYPE; 1173b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1174b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1175b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_data.readUniqueFileDescriptorVector(&in_f); 1176b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 1177b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1178b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1179b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenatrace_begin(ATRACE_TAG_AIDL, "IComplexTypeInterface::TakesAFileDescriptorArray::cppServer"); 1180b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen::android::binder::Status _aidl_status(TakesAFileDescriptorArray(in_f, &_aidl_return)); 1181b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenatrace_end(ATRACE_TAG_AIDL); 1182b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_status.writeToParcel(_aidl_reply); 1183b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 1184b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1185b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1186b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (!_aidl_status.isOk()) { 1187b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1188b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1189b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = _aidl_reply->writeUniqueFileDescriptorVector(_aidl_return); 1190b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (((_aidl_ret_status) != (::android::OK))) { 1191b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1192b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1193b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1194b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1195b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenendefault: 1196b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen{ 1197b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = ::android::BBinder::onTransact(_aidl_code, _aidl_data, _aidl_reply, _aidl_flags); 1198b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1199b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenbreak; 1200b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1201b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenif (_aidl_ret_status == ::android::UNEXPECTED_NULL) { 1202b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen_aidl_ret_status = ::android::binder::Status::fromExceptionCode(::android::binder::Status::EX_NULL_POINTER).writeToParcel(_aidl_reply); 1203b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1204b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenenreturn _aidl_ret_status; 1205b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1206b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen 1207b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} // namespace os 1208b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen 1209b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} // namespace android 1210b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen)"; 1211b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen 1212b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlinconst char kExpectedComplexTypeInterfaceHeaderOutput[] = 1213b0966619850093e117104dc34d8a6ae4c56ea3ffCasey DahlinR"(#ifndef AIDL_GENERATED_ANDROID_OS_I_COMPLEX_TYPE_INTERFACE_H_ 1214b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin#define AIDL_GENERATED_ANDROID_OS_I_COMPLEX_TYPE_INTERFACE_H_ 1215b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 12167cb9c2585d518f97e1b42bf6b444a3fb69b332bbChristopher Wiley#include <android-base/unique_fd.h> 1217b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin#include <binder/IBinder.h> 1218b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin#include <binder/IInterface.h> 1219433c8bbdfa1ee6db10b7f08d3c50eafd49ad2687Christopher Wiley#include <binder/Status.h> 1220b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin#include <cstdint> 1221389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin#include <foo/IFooType.h> 1222041c8d7ad2f9660a44e6ebc4f173b125b35f63f0Christopher Wiley#include <memory> 122356c9bf3c4fb731d5557427667f13f963fa5ef0f7Christopher Wiley#include <utils/String16.h> 1224389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin#include <utils/StrongPointer.h> 1225b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin#include <vector> 1226b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 1227b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlinnamespace android { 1228b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 1229b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlinnamespace os { 1230b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 1231b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinclass IComplexTypeInterface : public ::android::IInterface { 1232b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlinpublic: 123311a9d79a1189bbfa5b64a77b32f1a947ad91f0ddChristopher WileyDECLARE_META_INTERFACE(ComplexTypeInterface) 1234fd7dc03fdd1e0cd558df43a155ab1644cbe2b553Christopher Wileyenum : int32_t { 1235fd7dc03fdd1e0cd558df43a155ab1644cbe2b553Christopher Wiley MY_CONSTANT = 3, 1236fd7dc03fdd1e0cd558df43a155ab1644cbe2b553Christopher Wiley}; 123757dbe24bcb8f4509a876e8445c78d9504d7e616aCasey Dahlinvirtual ::android::binder::Status Send(const ::std::unique_ptr<::std::vector<int32_t>>& goes_in, ::std::vector<double>* goes_in_and_out, ::std::vector<bool>* goes_out, ::std::vector<int32_t>* _aidl_return) = 0; 1238b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinvirtual ::android::binder::Status Piff(int32_t times) = 0; 1239b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinvirtual ::android::binder::Status TakesABinder(const ::android::sp<::foo::IFooType>& f, ::android::sp<::foo::IFooType>* _aidl_return) = 0; 1240ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlinvirtual ::android::binder::Status NullableBinder(::android::sp<::foo::IFooType>* _aidl_return) = 0; 1241b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinvirtual ::android::binder::Status StringListMethod(const ::std::vector<::android::String16>& input, ::std::vector<::android::String16>* output, ::std::vector<::android::String16>* _aidl_return) = 0; 1242b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlinvirtual ::android::binder::Status BinderListMethod(const ::std::vector<::android::sp<::android::IBinder>>& input, ::std::vector<::android::sp<::android::IBinder>>* output, ::std::vector<::android::sp<::android::IBinder>>* _aidl_return) = 0; 12437cb9c2585d518f97e1b42bf6b444a3fb69b332bbChristopher Wileyvirtual ::android::binder::Status TakesAFileDescriptor(const ::android::base::unique_fd& f, ::android::base::unique_fd* _aidl_return) = 0; 12447cb9c2585d518f97e1b42bf6b444a3fb69b332bbChristopher Wileyvirtual ::android::binder::Status TakesAFileDescriptorArray(const ::std::vector<::android::base::unique_fd>& f, ::std::vector<::android::base::unique_fd>* _aidl_return) = 0; 1245b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlinenum Call { 1246b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin SEND = ::android::IBinder::FIRST_CALL_TRANSACTION + 0, 1247b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin PIFF = ::android::IBinder::FIRST_CALL_TRANSACTION + 1, 1248b8d9e8898c34da45027e56be88d5c9238ea88203Casey Dahlin TAKESABINDER = ::android::IBinder::FIRST_CALL_TRANSACTION + 2, 1249ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlin NULLABLEBINDER = ::android::IBinder::FIRST_CALL_TRANSACTION + 3, 1250ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlin STRINGLISTMETHOD = ::android::IBinder::FIRST_CALL_TRANSACTION + 4, 1251ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlin BINDERLISTMETHOD = ::android::IBinder::FIRST_CALL_TRANSACTION + 5, 1252ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlin TAKESAFILEDESCRIPTOR = ::android::IBinder::FIRST_CALL_TRANSACTION + 6, 1253ef88bcee919baaed8ded368fe9e549ed5988a6c6Casey Dahlin TAKESAFILEDESCRIPTORARRAY = ::android::IBinder::FIRST_CALL_TRANSACTION + 7, 1254b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin}; 1255b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin}; // class IComplexTypeInterface 1256b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 1257b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin} // namespace os 1258b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 1259b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin} // namespace android 1260b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 126111a9d79a1189bbfa5b64a77b32f1a947ad91f0ddChristopher Wiley#endif // AIDL_GENERATED_ANDROID_OS_I_COMPLEX_TYPE_INTERFACE_H_ 126211a9d79a1189bbfa5b64a77b32f1a947ad91f0ddChristopher Wiley)"; 1263b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 1264b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlinconst char kExpectedComplexTypeInterfaceSourceOutput[] = 1265b0966619850093e117104dc34d8a6ae4c56ea3ffCasey DahlinR"(#include <android/os/IComplexTypeInterface.h> 1266b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin#include <android/os/BpComplexTypeInterface.h> 1267b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 1268b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlinnamespace android { 1269b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 1270b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlinnamespace os { 1271b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 127211a9d79a1189bbfa5b64a77b32f1a947ad91f0ddChristopher WileyIMPLEMENT_META_INTERFACE(ComplexTypeInterface, "android.os.IComplexTypeInterface") 1273b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 1274b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin} // namespace os 1275b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 1276b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin} // namespace android 1277b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin)"; 1278b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 1279a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin} // namespace 1280a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin 1281b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlinclass ASTTest : public ::testing::Test { 12820c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley protected: 1283389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin ASTTest(string file_path, string file_contents) 1284389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin : file_path_(file_path), 12855679952c38925a54b75b087068887002e57f3174Christopher Wiley file_contents_(file_contents) { 12865679952c38925a54b75b087068887002e57f3174Christopher Wiley types_.Init(); 12875679952c38925a54b75b087068887002e57f3174Christopher Wiley } 1288b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 128990be4e3fe6d16ea8e8263b80989ef2ab4e6ef9c6Christopher Wiley unique_ptr<AidlInterface> Parse() { 1290389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin io_delegate_.SetFileContents(file_path_, file_contents_); 129190be4e3fe6d16ea8e8263b80989ef2ab4e6ef9c6Christopher Wiley 129290be4e3fe6d16ea8e8263b80989ef2ab4e6ef9c6Christopher Wiley unique_ptr<AidlInterface> ret; 129390be4e3fe6d16ea8e8263b80989ef2ab4e6ef9c6Christopher Wiley std::vector<std::unique_ptr<AidlImport>> imports; 1294632801d891bd269badc780ab5f0f08e56e6df10aChristopher Wiley AidlError err = ::android::aidl::internals::load_and_validate_aidl( 129590be4e3fe6d16ea8e8263b80989ef2ab4e6ef9c6Christopher Wiley {}, // no preprocessed files 1296389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin {"."}, 1297389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin file_path_, 1298b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen false, // generate_traces 1299389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin io_delegate_, 1300389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin &types_, 130190be4e3fe6d16ea8e8263b80989ef2ab4e6ef9c6Christopher Wiley &ret, 130290be4e3fe6d16ea8e8263b80989ef2ab4e6ef9c6Christopher Wiley &imports); 1303a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin 1304632801d891bd269badc780ab5f0f08e56e6df10aChristopher Wiley if (err != AidlError::OK) 13052cc93169679e222dda71c73814f28a9fb0832166Casey Dahlin return nullptr; 1306a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin 13072cc93169679e222dda71c73814f28a9fb0832166Casey Dahlin return ret; 130890be4e3fe6d16ea8e8263b80989ef2ab4e6ef9c6Christopher Wiley } 1309a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin 13100c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley void Compare(Document* doc, const char* expected) { 13110c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley string output; 13120c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley unique_ptr<CodeWriter> cw = GetStringWriter(&output); 1313a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin 13140c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley doc->Write(cw.get()); 1315a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin 131680ada3d405cbf76797e007d5fc265d17315aa05cCasey Dahlin if (expected == output) { 131780ada3d405cbf76797e007d5fc265d17315aa05cCasey Dahlin return; // Success 131880ada3d405cbf76797e007d5fc265d17315aa05cCasey Dahlin } 131980ada3d405cbf76797e007d5fc265d17315aa05cCasey Dahlin 132080ada3d405cbf76797e007d5fc265d17315aa05cCasey Dahlin test::PrintDiff(expected, output); 132180ada3d405cbf76797e007d5fc265d17315aa05cCasey Dahlin FAIL() << "Document contents did not match expected contents"; 13220c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley } 1323389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin 1324389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin const string file_path_; 1325389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin const string file_contents_; 1326389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin FakeIoDelegate io_delegate_; 1327389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin TypeNamespace types_; 13280c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley}; 1329a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin 1330b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlinclass ComplexTypeInterfaceASTTest : public ASTTest { 1331389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin public: 1332389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin ComplexTypeInterfaceASTTest() 1333389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin : ASTTest("android/os/IComplexTypeInterface.aidl", 1334389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin kComplexTypeInterfaceAIDL) { 1335389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin io_delegate_.SetFileContents("foo/IFooType.aidl", 1336389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin "package foo; interface IFooType {}"); 1337389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin } 1338b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin}; 1339b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin 1340b0966619850093e117104dc34d8a6ae4c56ea3ffCasey DahlinTEST_F(ComplexTypeInterfaceASTTest, GeneratesClientHeader) { 134190be4e3fe6d16ea8e8263b80989ef2ab4e6ef9c6Christopher Wiley unique_ptr<AidlInterface> interface = Parse(); 13420c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley ASSERT_NE(interface, nullptr); 1343389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin unique_ptr<Document> doc = internals::BuildClientHeader(types_, *interface); 1344b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin Compare(doc.get(), kExpectedComplexTypeClientHeaderOutput); 13450c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley} 13460c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley 1347b0966619850093e117104dc34d8a6ae4c56ea3ffCasey DahlinTEST_F(ComplexTypeInterfaceASTTest, GeneratesClientSource) { 134890be4e3fe6d16ea8e8263b80989ef2ab4e6ef9c6Christopher Wiley unique_ptr<AidlInterface> interface = Parse(); 134936570f4779a413ebef9302d1563fd92917ec2e42Christopher Wiley ASSERT_NE(interface, nullptr); 1350389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin unique_ptr<Document> doc = internals::BuildClientSource(types_, *interface); 1351b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin Compare(doc.get(), kExpectedComplexTypeClientSourceOutput); 135236570f4779a413ebef9302d1563fd92917ec2e42Christopher Wiley} 135336570f4779a413ebef9302d1563fd92917ec2e42Christopher Wiley 1354b06c82923869f50e9641f7dac56df0aebe637845Martijn CoenenTEST_F(ComplexTypeInterfaceASTTest, GeneratesClientSourceWithTrace) { 1355b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen unique_ptr<AidlInterface> interface = Parse(); 1356b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen ASSERT_NE(interface, nullptr); 1357b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen interface->SetGenerateTraces(true); 1358b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen unique_ptr<Document> doc = internals::BuildClientSource(types_, *interface); 1359b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen Compare(doc.get(), kExpectedComplexTypeClientWithTraceSourceOutput); 1360b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1361b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen 1362b0966619850093e117104dc34d8a6ae4c56ea3ffCasey DahlinTEST_F(ComplexTypeInterfaceASTTest, GeneratesServerHeader) { 136390be4e3fe6d16ea8e8263b80989ef2ab4e6ef9c6Christopher Wiley unique_ptr<AidlInterface> interface = Parse(); 1364fd51d60f486f1ad514e6f24744ebffab7a3d89bdChristopher Wiley ASSERT_NE(interface, nullptr); 1365389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin unique_ptr<Document> doc = internals::BuildServerHeader(types_, *interface); 1366b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin Compare(doc.get(), kExpectedComplexTypeServerHeaderOutput); 1367fd51d60f486f1ad514e6f24744ebffab7a3d89bdChristopher Wiley} 1368fd51d60f486f1ad514e6f24744ebffab7a3d89bdChristopher Wiley 1369b0966619850093e117104dc34d8a6ae4c56ea3ffCasey DahlinTEST_F(ComplexTypeInterfaceASTTest, GeneratesServerSource) { 137090be4e3fe6d16ea8e8263b80989ef2ab4e6ef9c6Christopher Wiley unique_ptr<AidlInterface> interface = Parse(); 1371ad3392747003a30928da6cd206e41f66398c2062Christopher Wiley ASSERT_NE(interface, nullptr); 1372389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin unique_ptr<Document> doc = internals::BuildServerSource(types_, *interface); 1373b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin Compare(doc.get(), kExpectedComplexTypeServerSourceOutput); 1374ad3392747003a30928da6cd206e41f66398c2062Christopher Wiley} 1375ad3392747003a30928da6cd206e41f66398c2062Christopher Wiley 1376b06c82923869f50e9641f7dac56df0aebe637845Martijn CoenenTEST_F(ComplexTypeInterfaceASTTest, GeneratesServerSourceWithTrace) { 1377b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen unique_ptr<AidlInterface> interface = Parse(); 1378b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen ASSERT_NE(interface, nullptr); 1379b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen interface->SetGenerateTraces(true); 1380b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen unique_ptr<Document> doc = internals::BuildServerSource(types_, *interface); 1381b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen Compare(doc.get(), kExpectedComplexTypeServerWithTraceSourceOutput); 1382b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen} 1383b06c82923869f50e9641f7dac56df0aebe637845Martijn Coenen 1384b0966619850093e117104dc34d8a6ae4c56ea3ffCasey DahlinTEST_F(ComplexTypeInterfaceASTTest, GeneratesInterfaceHeader) { 138590be4e3fe6d16ea8e8263b80989ef2ab4e6ef9c6Christopher Wiley unique_ptr<AidlInterface> interface = Parse(); 13860c732dbae2e6b33cde9a266ea091e1459742f1f1Christopher Wiley ASSERT_NE(interface, nullptr); 1387389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin unique_ptr<Document> doc = internals::BuildInterfaceHeader(types_, *interface); 1388b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin Compare(doc.get(), kExpectedComplexTypeInterfaceHeaderOutput); 1389a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin} 1390a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin 1391b0966619850093e117104dc34d8a6ae4c56ea3ffCasey DahlinTEST_F(ComplexTypeInterfaceASTTest, GeneratesInterfaceSource) { 139290be4e3fe6d16ea8e8263b80989ef2ab4e6ef9c6Christopher Wiley unique_ptr<AidlInterface> interface = Parse(); 13931dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wiley ASSERT_NE(interface, nullptr); 1394389781f56bb6b4363e9eb03acf915ba297f607d5Casey Dahlin unique_ptr<Document> doc = internals::BuildInterfaceSource(types_, *interface); 1395b0966619850093e117104dc34d8a6ae4c56ea3ffCasey Dahlin Compare(doc.get(), kExpectedComplexTypeInterfaceSourceOutput); 13961dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wiley} 13971dd458d3e3647823acb9554f8ae17631d597a1ecChristopher Wiley 13989d6e0b29add607669e440085f1fc60cd434dc987Christopher Wileynamespace test_io_handling { 13999d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley 14009d6e0b29add607669e440085f1fc60cd434dc987Christopher Wileyconst char kInputPath[] = "a/IFoo.aidl"; 14019d6e0b29add607669e440085f1fc60cd434dc987Christopher Wileyconst char kOutputPath[] = "output.cpp"; 14029d6e0b29add607669e440085f1fc60cd434dc987Christopher Wileyconst char kHeaderDir[] = "headers"; 14039d6e0b29add607669e440085f1fc60cd434dc987Christopher Wileyconst char kInterfaceHeaderRelPath[] = "a/IFoo.h"; 14049d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley 14059d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley} // namespace test_io_handling 14069d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley 14079d6e0b29add607669e440085f1fc60cd434dc987Christopher Wileyclass IoErrorHandlingTest : public ASTTest { 14089d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley public: 14099d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley IoErrorHandlingTest () 14109d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley : ASTTest(test_io_handling::kInputPath, 14119d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley "package a; interface IFoo {}"), 14129d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley options_(GetOptions()) {} 14139d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley 14149d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley const unique_ptr<CppOptions> options_; 14159d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley 14169d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley private: 14179d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley static unique_ptr<CppOptions> GetOptions() { 14189d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley using namespace test_io_handling; 14199d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley 14209d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley const int argc = 4; 14219d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley const char* cmdline[argc] = { 14229d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley "aidl-cpp", kInputPath, kHeaderDir, kOutputPath 14239d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley }; 14249d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley return CppOptions::Parse(argc, cmdline); 14259d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley } 14269d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley}; 14279d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley 14289d6e0b29add607669e440085f1fc60cd434dc987Christopher WileyTEST_F(IoErrorHandlingTest, GenerateCorrectlyAbsentErrors) { 14299d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley // Confirm that this is working correctly without I/O problems. 14309d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley const unique_ptr<AidlInterface> interface = Parse(); 14319d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley ASSERT_NE(interface, nullptr); 14329d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley ASSERT_TRUE(GenerateCpp(*options_, types_, *interface, io_delegate_)); 14339d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley} 14349d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley 14359d6e0b29add607669e440085f1fc60cd434dc987Christopher WileyTEST_F(IoErrorHandlingTest, HandlesBadHeaderWrite) { 14369d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley using namespace test_io_handling; 14379d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley const unique_ptr<AidlInterface> interface = Parse(); 14389d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley ASSERT_NE(interface, nullptr); 14399d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley 14409d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley // Simulate issues closing the interface header. 14419d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley const string header_path = 14429d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley StringPrintf("%s%c%s", kHeaderDir, OS_PATH_SEPARATOR, 14439d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley kInterfaceHeaderRelPath); 14449d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley io_delegate_.AddBrokenFilePath(header_path); 14459d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley ASSERT_FALSE(GenerateCpp(*options_, types_, *interface, io_delegate_)); 14469d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley // We should never attempt to write the C++ file if we fail writing headers. 14479d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley ASSERT_FALSE(io_delegate_.GetWrittenContents(kOutputPath, nullptr)); 14489d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley // We should remove partial results. 14499d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley ASSERT_TRUE(io_delegate_.PathWasRemoved(header_path)); 14509d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley} 14519d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley 14529d6e0b29add607669e440085f1fc60cd434dc987Christopher WileyTEST_F(IoErrorHandlingTest, HandlesBadCppWrite) { 14539d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley using test_io_handling::kOutputPath; 14549d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley const unique_ptr<AidlInterface> interface = Parse(); 14559d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley ASSERT_NE(interface, nullptr); 14569d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley 14579d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley // Simulate issues closing the cpp file. 14589d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley io_delegate_.AddBrokenFilePath(kOutputPath); 14599d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley ASSERT_FALSE(GenerateCpp(*options_, types_, *interface, io_delegate_)); 14609d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley // We should remove partial results. 14619d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley ASSERT_TRUE(io_delegate_.PathWasRemoved(kOutputPath)); 14629d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley} 14639d6e0b29add607669e440085f1fc60cd434dc987Christopher Wiley 1464f944e79bdaf92fffe9ea78314d3636e7e4de8c51Christopher Wiley} // namespace cpp 1465a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin} // namespace aidl 1466a834dd4650b3196893440ee49c7ff6b303b45a92Casey Dahlin} // namespace android 1467