Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2cf9e0d3 authored by Steven Moreland's avatar Steven Moreland Committed by Gerrit Code Review
Browse files

Merge "libbinder_ndk: conditional __builtin_available"

parents 27223c51 0cdcfe89
Loading
Loading
Loading
Loading
+4 −0
Original line number Original line Diff line number Diff line
@@ -268,7 +268,11 @@ class ScopedAStatus : public impl::ScopedAResource<AStatus*, AStatus_delete, nul
    const char* getMessage() const { return AStatus_getMessage(get()); }
    const char* getMessage() const { return AStatus_getMessage(get()); }


    std::string getDescription() const {
    std::string getDescription() const {
#ifdef __ANDROID_UNAVAILABLE_SYMBOLS_ARE_WEAK__
        if (__builtin_available(android 30, *)) {
        if (__builtin_available(android 30, *)) {
#else
        if (__ANDROID_API__ >= 30) {
#endif
            const char* cStr = AStatus_getDescription(get());
            const char* cStr = AStatus_getDescription(get());
            std::string ret = cStr;
            std::string ret = cStr;
            AStatus_deleteDescription(cStr);
            AStatus_deleteDescription(cStr);
+4 −0
Original line number Original line Diff line number Diff line
@@ -256,7 +256,11 @@ AIBinder_Class* ICInterface::defineClass(const char* interfaceDescriptor,
    // ourselves. The defaults are harmless.
    // ourselves. The defaults are harmless.
    AIBinder_Class_setOnDump(clazz, ICInterfaceData::onDump);
    AIBinder_Class_setOnDump(clazz, ICInterfaceData::onDump);
#ifdef HAS_BINDER_SHELL_COMMAND
#ifdef HAS_BINDER_SHELL_COMMAND
#ifdef __ANDROID_UNAVAILABLE_SYMBOLS_ARE_WEAK__
    if (__builtin_available(android 30, *)) {
    if (__builtin_available(android 30, *)) {
#else
    if (__ANDROID_API__ >= 30) {
#endif
        AIBinder_Class_setHandleShellCommand(clazz, ICInterfaceData::handleShellCommand);
        AIBinder_Class_setHandleShellCommand(clazz, ICInterfaceData::handleShellCommand);
    }
    }
#endif
#endif
+32 −0
Original line number Original line Diff line number Diff line
@@ -51,7 +51,11 @@ class AParcelableHolder {
    AParcelableHolder(const AParcelableHolder& other)
    AParcelableHolder(const AParcelableHolder& other)
        : mParcel(AParcel_create()), mStability(other.mStability) {
        : mParcel(AParcel_create()), mStability(other.mStability) {
        // AParcelableHolder has been introduced in 31.
        // AParcelableHolder has been introduced in 31.
#ifdef __ANDROID_UNAVAILABLE_SYMBOLS_ARE_WEAK__
        if (__builtin_available(android 31, *)) {
        if (__builtin_available(android 31, *)) {
#else
        if (__ANDROID_API__ >= 31) {
#endif
            AParcel_appendFrom(other.mParcel.get(), this->mParcel.get(), 0,
            AParcel_appendFrom(other.mParcel.get(), this->mParcel.get(), 0,
                               AParcel_getDataSize(other.mParcel.get()));
                               AParcel_getDataSize(other.mParcel.get()));
        }
        }
@@ -63,13 +67,21 @@ class AParcelableHolder {


    binder_status_t writeToParcel(AParcel* parcel) const {
    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, static_cast<int32_t>(this->mStability)));
#ifdef __ANDROID_UNAVAILABLE_SYMBOLS_ARE_WEAK__
        if (__builtin_available(android 31, *)) {
        if (__builtin_available(android 31, *)) {
#else
        if (__ANDROID_API__ >= 31) {
#endif
            int32_t size = AParcel_getDataSize(this->mParcel.get());
            int32_t size = AParcel_getDataSize(this->mParcel.get());
            RETURN_ON_FAILURE(AParcel_writeInt32(parcel, size));
            RETURN_ON_FAILURE(AParcel_writeInt32(parcel, size));
        } else {
        } else {
            return STATUS_INVALID_OPERATION;
            return STATUS_INVALID_OPERATION;
        }
        }
#ifdef __ANDROID_UNAVAILABLE_SYMBOLS_ARE_WEAK__
        if (__builtin_available(android 31, *)) {
        if (__builtin_available(android 31, *)) {
#else
        if (__ANDROID_API__ >= 31) {
#endif
            int32_t size = AParcel_getDataSize(this->mParcel.get());
            int32_t size = AParcel_getDataSize(this->mParcel.get());
            RETURN_ON_FAILURE(AParcel_appendFrom(this->mParcel.get(), parcel, 0, size));
            RETURN_ON_FAILURE(AParcel_appendFrom(this->mParcel.get(), parcel, 0, size));
        } else {
        } else {
@@ -79,7 +91,11 @@ class AParcelableHolder {
    }
    }


    binder_status_t readFromParcel(const AParcel* parcel) {
    binder_status_t readFromParcel(const AParcel* parcel) {
#ifdef __ANDROID_UNAVAILABLE_SYMBOLS_ARE_WEAK__
        if (__builtin_available(android 31, *)) {
        if (__builtin_available(android 31, *)) {
#else
        if (__ANDROID_API__ >= 31) {
#endif
            AParcel_reset(mParcel.get());
            AParcel_reset(mParcel.get());
        } else {
        } else {
            return STATUS_INVALID_OPERATION;
            return STATUS_INVALID_OPERATION;
@@ -99,7 +115,11 @@ class AParcelableHolder {
            return STATUS_BAD_VALUE;
            return STATUS_BAD_VALUE;
        }
        }


#ifdef __ANDROID_UNAVAILABLE_SYMBOLS_ARE_WEAK__
        if (__builtin_available(android 31, *)) {
        if (__builtin_available(android 31, *)) {
#else
        if (__ANDROID_API__ >= 31) {
#endif
            status = AParcel_appendFrom(parcel, mParcel.get(), dataStartPos, dataSize);
            status = AParcel_appendFrom(parcel, mParcel.get(), dataStartPos, dataSize);
        } else {
        } else {
            status = STATUS_INVALID_OPERATION;
            status = STATUS_INVALID_OPERATION;
@@ -115,7 +135,11 @@ class AParcelableHolder {
        if (this->mStability > T::_aidl_stability) {
        if (this->mStability > T::_aidl_stability) {
            return STATUS_BAD_VALUE;
            return STATUS_BAD_VALUE;
        }
        }
#ifdef __ANDROID_UNAVAILABLE_SYMBOLS_ARE_WEAK__
        if (__builtin_available(android 31, *)) {
        if (__builtin_available(android 31, *)) {
#else
        if (__ANDROID_API__ >= 31) {
#endif
            AParcel_reset(mParcel.get());
            AParcel_reset(mParcel.get());
        } else {
        } else {
            return STATUS_INVALID_OPERATION;
            return STATUS_INVALID_OPERATION;
@@ -129,7 +153,11 @@ class AParcelableHolder {
    binder_status_t getParcelable(std::optional<T>* ret) const {
    binder_status_t getParcelable(std::optional<T>* ret) const {
        const std::string parcelableDesc(T::descriptor);
        const std::string parcelableDesc(T::descriptor);
        AParcel_setDataPosition(mParcel.get(), 0);
        AParcel_setDataPosition(mParcel.get(), 0);
#ifdef __ANDROID_UNAVAILABLE_SYMBOLS_ARE_WEAK__
        if (__builtin_available(android 31, *)) {
        if (__builtin_available(android 31, *)) {
#else
        if (__ANDROID_API__ >= 31) {
#endif
            if (AParcel_getDataSize(mParcel.get()) == 0) {
            if (AParcel_getDataSize(mParcel.get()) == 0) {
                *ret = std::nullopt;
                *ret = std::nullopt;
                return STATUS_OK;
                return STATUS_OK;
@@ -153,7 +181,11 @@ class AParcelableHolder {
    }
    }


    void reset() {
    void reset() {
#ifdef __ANDROID_UNAVAILABLE_SYMBOLS_ARE_WEAK__
        if (__builtin_available(android 31, *)) {
        if (__builtin_available(android 31, *)) {
#else
        if (__ANDROID_API__ >= 31) {
#endif
            AParcel_reset(mParcel.get());
            AParcel_reset(mParcel.get());
        }
        }
    }
    }