diff options
| author | 2022-08-22 06:34:19 +0000 | |
|---|---|---|
| committer | 2022-08-22 06:34:19 +0000 | |
| commit | 6f01488df99bb49dffa2dca655aa66c0ec68147f (patch) | |
| tree | a4e5e871943e50ba5c39c4ff6ae013888924ab89 | |
| parent | 8e557b4f8b5c6f5a673c2c7cff895fc1be2476ab (diff) | |
| parent | 37e296a49e11e3570f97d3404472b0b26f54b35b (diff) | |
Merge "Add copy assignment operator for ParcelableHolder" am: f918f617e2 am: 19cb4237bb am: 37e296a49e
Original change: https://android-review.googlesource.com/c/platform/frameworks/native/+/2180755
Change-Id: Ic3fda00b42a0eb543b9a772002704030a700fe67
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
| -rw-r--r-- | libs/binder/ndk/include_cpp/android/binder_parcelable_utils.h | 29 |
1 files changed, 29 insertions, 0 deletions
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 f45aa7631b..c1f2620770 100644 --- a/libs/binder/ndk/include_cpp/android/binder_parcelable_utils.h +++ b/libs/binder/ndk/include_cpp/android/binder_parcelable_utils.h @@ -58,6 +58,9 @@ class AParcelableHolder { #endif AParcel_appendFrom(other.mParcel.get(), this->mParcel.get(), 0, AParcel_getDataSize(other.mParcel.get())); + } else { + syslog(LOG_ERR, + "sdk_version not compatible, AParcelableHolder need sdk_version >= 31!"); } } #endif @@ -192,6 +195,9 @@ class AParcelableHolder { if (__ANDROID_API__ >= 31) { #endif AParcel_reset(mParcel.get()); + } else { + syslog(LOG_ERR, + "sdk_version not compatible, AParcelableHolder need sdk_version >= 31!"); } } @@ -201,6 +207,29 @@ class AParcelableHolder { inline bool operator==(const AParcelableHolder& rhs) const { return this == &rhs; } inline bool operator>(const AParcelableHolder& rhs) const { return this > &rhs; } inline bool operator>=(const AParcelableHolder& rhs) const { return this >= &rhs; } +#if __ANDROID_API__ >= 31 + inline AParcelableHolder& operator=(const AParcelableHolder& rhs) { + // AParcelableHolder has been introduced in 31. +#ifdef __ANDROID_UNAVAILABLE_SYMBOLS_ARE_WEAK__ + if (__builtin_available(android 31, *)) { +#else + if (__ANDROID_API__ >= 31) { +#endif + this->reset(); + if (this->mStability != rhs.mStability) { + syslog(LOG_ERR, "AParcelableHolder stability mismatch: this %d rhs %d!", + this->mStability, rhs.mStability); + abort(); + } + AParcel_appendFrom(rhs.mParcel.get(), this->mParcel.get(), 0, + AParcel_getDataSize(rhs.mParcel.get())); + } else { + syslog(LOG_ERR, + "sdk_version not compatible, AParcelableHolder need sdk_version >= 31!"); + } + return *this; + } +#endif private: mutable ndk::ScopedAParcel mParcel; |