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

Commit 525afca1 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Libbinder APIs are guarded" am: 38bf134f

Original change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1425365

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I190594ceeb03213e649f33eac124711220010b2f
parents b216a462 38bf134f
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -259,11 +259,14 @@ class ScopedAStatus : public impl::ScopedAResource<AStatus*, AStatus_delete, nul
    const char* getMessage() const { return AStatus_getMessage(get()); }

    std::string getDescription() const {
        if (__builtin_available(android 30, *)) {
            const char* cStr = AStatus_getDescription(get());
            std::string ret = cStr;
            AStatus_deleteDescription(cStr);
            return ret;
        }
        return "(not available)";
    }

    /**
     * Convenience methods for creating scoped statuses.
+1 −1
Original line number Diff line number Diff line
@@ -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
+39 −10
Original line number Diff line number Diff line
@@ -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) {
        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;
        }

        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;
        }
        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,10 +117,14 @@ class AParcelableHolder {
    binder_status_t getParcelable(std::optional<T>* ret) const {
        const std::string parcelableDesc(T::descriptor);
        AParcel_setDataPosition(mParcel.get(), 0);
        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);
        if (status != STATUS_OK || parcelableDesc != 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; }
+0 −2
Original line number Diff line number Diff line
@@ -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

/** @} */