diff options
| author | 2024-06-20 13:33:55 -0700 | |
|---|---|---|
| committer | 2024-07-03 11:40:31 -0700 | |
| commit | 4a5441fe4d60ce20f8de052d4439d4c549e300c4 (patch) | |
| tree | defccd9552485e190808d4a4af1902aa2da5ca74 /libs | |
| parent | ac728795d40213355f5b3e33006e6ace4b47d9ae (diff) | |
Placeholder for binder freeze notification API.
Adding the placeholder APIs to validate whether this breaks existing
prebuilts.
Bug: 338097747
Change-Id: Id7357076ad98c1f220a78186fe509326047cf922
Test: m
Diffstat (limited to 'libs')
| -rw-r--r-- | libs/binder/Binder.cpp | 8 | ||||
| -rw-r--r-- | libs/binder/BpBinder.cpp | 8 | ||||
| -rw-r--r-- | libs/binder/include/binder/Binder.h | 7 | ||||
| -rw-r--r-- | libs/binder/include/binder/BpBinder.h | 6 | ||||
| -rw-r--r-- | libs/binder/include/binder/IBinder.h | 17 |
5 files changed, 43 insertions, 3 deletions
diff --git a/libs/binder/Binder.cpp b/libs/binder/Binder.cpp index c57c9cdd62..6185b7baf8 100644 --- a/libs/binder/Binder.cpp +++ b/libs/binder/Binder.cpp @@ -441,6 +441,14 @@ status_t BBinder::unlinkToDeath( return INVALID_OPERATION; } +status_t BBinder::addFrozenStateChangeCallback(const wp<FrozenStateChangeCallback>&) { + return INVALID_OPERATION; +} + +status_t BBinder::removeFrozenStateChangeCallback(const wp<FrozenStateChangeCallback>&) { + return INVALID_OPERATION; +} + status_t BBinder::dump(int /*fd*/, const Vector<String16>& /*args*/) { return NO_ERROR; diff --git a/libs/binder/BpBinder.cpp b/libs/binder/BpBinder.cpp index 6594aa6309..59c5be75ac 100644 --- a/libs/binder/BpBinder.cpp +++ b/libs/binder/BpBinder.cpp @@ -557,6 +557,14 @@ void BpBinder::sendObituary() } } +status_t BpBinder::addFrozenStateChangeCallback(const wp<FrozenStateChangeCallback>&) { + return INVALID_OPERATION; +} + +status_t BpBinder::removeFrozenStateChangeCallback(const wp<FrozenStateChangeCallback>&) { + return INVALID_OPERATION; +} + void BpBinder::reportOneDeath(const Obituary& obit) { sp<DeathRecipient> recipient = obit.recipient.promote(); diff --git a/libs/binder/include/binder/Binder.h b/libs/binder/include/binder/Binder.h index 135be89c6c..802a3bcd06 100644 --- a/libs/binder/include/binder/Binder.h +++ b/libs/binder/include/binder/Binder.h @@ -50,6 +50,13 @@ public: void* cookie = nullptr, uint32_t flags = 0, wp<DeathRecipient>* outRecipient = nullptr); + // Placeholders to test if adding virtual functions here breaks things. + // Will be replaced by an actual API once things are verified to work. + LIBBINDER_EXPORTED virtual status_t addFrozenStateChangeCallback( + const wp<FrozenStateChangeCallback>& callback); + LIBBINDER_EXPORTED virtual status_t removeFrozenStateChangeCallback( + const wp<FrozenStateChangeCallback>& callback); + LIBBINDER_EXPORTED virtual void* attachObject(const void* objectID, void* object, void* cleanupCookie, object_cleanup_func func) final; diff --git a/libs/binder/include/binder/BpBinder.h b/libs/binder/include/binder/BpBinder.h index d7f74c4152..0f52f6df52 100644 --- a/libs/binder/include/binder/BpBinder.h +++ b/libs/binder/include/binder/BpBinder.h @@ -66,6 +66,12 @@ public: void* cookie = nullptr, uint32_t flags = 0, wp<DeathRecipient>* outRecipient = nullptr); + [[nodiscard]] virtual status_t addFrozenStateChangeCallback( + const wp<FrozenStateChangeCallback>& recipient); + + [[nodiscard]] virtual status_t removeFrozenStateChangeCallback( + const wp<FrozenStateChangeCallback>& recipient); + LIBBINDER_EXPORTED virtual void* attachObject(const void* objectID, void* object, void* cleanupCookie, object_cleanup_func func) final; diff --git a/libs/binder/include/binder/IBinder.h b/libs/binder/include/binder/IBinder.h index 17248ce289..62d7354387 100644 --- a/libs/binder/include/binder/IBinder.h +++ b/libs/binder/include/binder/IBinder.h @@ -198,9 +198,14 @@ public: virtual void binderDied(const wp<IBinder>& who) = 0; }; - #if defined(__clang__) - #pragma clang diagnostic pop - #endif + class FrozenStateChangeCallback : public virtual RefBase { + public: + virtual void onStateChanged(const wp<IBinder>& who, bool isFrozen) = 0; + }; + +#if defined(__clang__) +#pragma clang diagnostic pop +#endif /** * Register the @a recipient for a notification if this binder @@ -249,6 +254,12 @@ public: uint32_t flags = 0, wp<DeathRecipient>* outRecipient = nullptr) = 0; + // Placeholders. See Binder.h for details. + [[nodiscard]] virtual status_t addFrozenStateChangeCallback( + const wp<FrozenStateChangeCallback>& callback) = 0; + [[nodiscard]] virtual status_t removeFrozenStateChangeCallback( + const wp<FrozenStateChangeCallback>& callback) = 0; + virtual bool checkSubclass(const void* subclassID) const; typedef void (*object_cleanup_func)(const void* id, void* obj, void* cleanupCookie); |