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

Commit 0cdcfe89 authored by Steven Moreland's avatar Steven Moreland
Browse files

libbinder_ndk: conditional __builtin_available

Apps don't have this, so we have to use it conditionally.

Bug: 219987524
Test: compile

Change-Id: I2cbb9eecc8d5c9c15985ab23656245a749668e8f
parent 0f899ce8
Loading
Loading
Loading
Loading
+4 −0
Original line number 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()); }

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

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

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

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

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