diff options
author | 2021-01-18 13:13:36 +0000 | |
---|---|---|
committer | 2021-01-18 13:13:36 +0000 | |
commit | e25f600ca1ee1439e236bf31eb4a237fc476c7f5 (patch) | |
tree | 0847ae2d22c2018c8b8ea49f3ebc49ab6601e580 | |
parent | 5708921b59a5ec757866265b60a447f0a8c7a916 (diff) | |
parent | 525afca11674086b5a47c4ccd937a8ce2bc7ad2d (diff) |
Merge "Libbinder APIs are guarded" am: 38bf134fc5 am: 525afca116
Original change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1425365
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: I5094d4870b3972603b3a444cbb437087e70951fc
4 files changed, 47 insertions, 17 deletions
diff --git a/libs/binder/ndk/include_cpp/android/binder_auto_utils.h b/libs/binder/ndk/include_cpp/android/binder_auto_utils.h index 53871f28a2..6b52c0aea1 100644 --- a/libs/binder/ndk/include_cpp/android/binder_auto_utils.h +++ b/libs/binder/ndk/include_cpp/android/binder_auto_utils.h @@ -259,10 +259,13 @@ class ScopedAStatus : public impl::ScopedAResource<AStatus*, AStatus_delete, nul const char* getMessage() const { return AStatus_getMessage(get()); } std::string getDescription() const { - const char* cStr = AStatus_getDescription(get()); - std::string ret = cStr; - AStatus_deleteDescription(cStr); - return ret; + if (__builtin_available(android 30, *)) { + const char* cStr = AStatus_getDescription(get()); + std::string ret = cStr; + AStatus_deleteDescription(cStr); + return ret; + } + return "(not available)"; } /** diff --git a/libs/binder/ndk/include_cpp/android/binder_interface_utils.h b/libs/binder/ndk/include_cpp/android/binder_interface_utils.h index a1102e2833..05eb64be2c 100644 --- a/libs/binder/ndk/include_cpp/android/binder_interface_utils.h +++ b/libs/binder/ndk/include_cpp/android/binder_interface_utils.h @@ -247,7 +247,7 @@ AIBinder_Class* ICInterface::defineClass(const char* interfaceDescriptor, // ourselves. The defaults are harmless. AIBinder_Class_setOnDump(clazz, ICInterfaceData::onDump); #ifdef HAS_BINDER_SHELL_COMMAND - if (AIBinder_Class_setHandleShellCommand != nullptr) { + if (__builtin_available(android 30, *)) { AIBinder_Class_setHandleShellCommand(clazz, ICInterfaceData::handleShellCommand); } #endif diff --git a/libs/binder/ndk/include_cpp/android/binder_parcelable_utils.h b/libs/binder/ndk/include_cpp/android/binder_parcelable_utils.h index 6636a416e2..2277148285 100644 --- a/libs/binder/ndk/include_cpp/android/binder_parcelable_utils.h +++ b/libs/binder/ndk/include_cpp/android/binder_parcelable_utils.h @@ -51,14 +51,27 @@ class AParcelableHolder { binder_status_t writeToParcel(AParcel* parcel) const { RETURN_ON_FAILURE(AParcel_writeInt32(parcel, static_cast<int32_t>(this->mStability))); - RETURN_ON_FAILURE(AParcel_writeInt32(parcel, AParcel_getDataSize(this->mParcel.get()))); - RETURN_ON_FAILURE(AParcel_appendFrom(this->mParcel.get(), parcel, 0, - AParcel_getDataSize(this->mParcel.get()))); + if (__builtin_available(android 31, *)) { + int32_t size = AParcel_getDataSize(this->mParcel.get()); + RETURN_ON_FAILURE(AParcel_writeInt32(parcel, size)); + } else { + return STATUS_INVALID_OPERATION; + } + if (__builtin_available(android 31, *)) { + int32_t size = AParcel_getDataSize(this->mParcel.get()); + RETURN_ON_FAILURE(AParcel_appendFrom(this->mParcel.get(), parcel, 0, size)); + } else { + return STATUS_INVALID_OPERATION; + } return STATUS_OK; } binder_status_t readFromParcel(const AParcel* parcel) { - AParcel_reset(mParcel.get()); + if (__builtin_available(android 31, *)) { + AParcel_reset(mParcel.get()); + } else { + return STATUS_INVALID_OPERATION; + } RETURN_ON_FAILURE(AParcel_readInt32(parcel, &this->mStability)); int32_t dataSize; @@ -74,7 +87,11 @@ class AParcelableHolder { return STATUS_BAD_VALUE; } - status = AParcel_appendFrom(parcel, mParcel.get(), dataStartPos, dataSize); + if (__builtin_available(android 31, *)) { + status = AParcel_appendFrom(parcel, mParcel.get(), dataStartPos, dataSize); + } else { + status = STATUS_INVALID_OPERATION; + } if (status != STATUS_OK) { return status; } @@ -86,7 +103,11 @@ class AParcelableHolder { if (this->mStability > T::_aidl_stability) { return STATUS_BAD_VALUE; } - AParcel_reset(mParcel.get()); + if (__builtin_available(android 31, *)) { + AParcel_reset(mParcel.get()); + } else { + return STATUS_INVALID_OPERATION; + } AParcel_writeString(mParcel.get(), T::descriptor, strlen(T::descriptor)); p.writeToParcel(mParcel.get()); return STATUS_OK; @@ -96,9 +117,13 @@ class AParcelableHolder { binder_status_t getParcelable(std::optional<T>* ret) const { const std::string parcelableDesc(T::descriptor); AParcel_setDataPosition(mParcel.get(), 0); - if (AParcel_getDataSize(mParcel.get()) == 0) { - *ret = std::nullopt; - return STATUS_OK; + if (__builtin_available(android 31, *)) { + if (AParcel_getDataSize(mParcel.get()) == 0) { + *ret = std::nullopt; + return STATUS_OK; + } + } else { + return STATUS_INVALID_OPERATION; } std::string parcelableDescInParcel; binder_status_t status = AParcel_readString(mParcel.get(), &parcelableDescInParcel); @@ -115,7 +140,11 @@ class AParcelableHolder { return STATUS_OK; } - void reset() { AParcel_reset(mParcel.get()); } + void reset() { + if (__builtin_available(android 31, *)) { + AParcel_reset(mParcel.get()); + } + } inline bool operator!=(const AParcelableHolder& rhs) const { return this != &rhs; } inline bool operator<(const AParcelableHolder& rhs) const { return this < &rhs; } diff --git a/libs/binder/ndk/include_ndk/android/binder_parcel.h b/libs/binder/ndk/include_ndk/android/binder_parcel.h index 93c3f32100..ab67017fee 100644 --- a/libs/binder/ndk/include_ndk/android/binder_parcel.h +++ b/libs/binder/ndk/include_ndk/android/binder_parcel.h @@ -1120,7 +1120,6 @@ binder_status_t AParcel_readByteArray(const AParcel* parcel, void* arrayData, // @END-PRIMITIVE-READ-WRITE #endif //__ANDROID_API__ >= 29 -#if __ANDROID_API__ >= 31 /** * Reset the parcel to the initial status. * @@ -1166,7 +1165,6 @@ binder_status_t AParcel_appendFrom(const AParcel* from, AParcel* to, int32_t sta * \return A parcel which is not related to any IBinder objects. */ AParcel* AParcel_create() __INTRODUCED_IN(31); -#endif //__ANDROID_API__ >= 31 __END_DECLS /** @} */ |