diff options
Diffstat (limited to 'libs/binder/IActivityManager.cpp')
-rw-r--r-- | libs/binder/IActivityManager.cpp | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/libs/binder/IActivityManager.cpp b/libs/binder/IActivityManager.cpp index 5ec4e8b25a..28975618e1 100644 --- a/libs/binder/IActivityManager.cpp +++ b/libs/binder/IActivityManager.cpp @@ -77,6 +77,30 @@ public: return OK; } + virtual status_t registerUidObserverForUids(const sp<IUidObserver>& observer, + const int32_t event, const int32_t cutpoint, + const String16& callingPackage, + const int32_t uids[], size_t nUids, + /*out*/ sp<IBinder>& observerToken) { + Parcel data, reply; + data.writeInterfaceToken(IActivityManager::getInterfaceDescriptor()); + data.writeStrongBinder(IInterface::asBinder(observer)); + data.writeInt32(event); + data.writeInt32(cutpoint); + data.writeString16(callingPackage); + data.writeInt32Array(nUids, uids); + status_t err = + remote()->transact(REGISTER_UID_OBSERVER_FOR_UIDS_TRANSACTION, data, &reply); + if (err != NO_ERROR || ((err = reply.readExceptionCode()) != NO_ERROR)) { + return err; + } + err = reply.readStrongBinder(&observerToken); + if (err != NO_ERROR || ((err = reply.readExceptionCode()) != NO_ERROR)) { + return err; + } + return OK; + } + virtual status_t unregisterUidObserver(const sp<IUidObserver>& observer) { Parcel data, reply; @@ -89,6 +113,34 @@ public: return OK; } + virtual status_t addUidToObserver(const sp<IBinder>& observerToken, + const String16& callingPackage, int32_t uid) { + Parcel data, reply; + data.writeInterfaceToken(IActivityManager::getInterfaceDescriptor()); + data.writeStrongBinder(observerToken); + data.writeString16(callingPackage); + data.writeInt32(uid); + status_t err = remote()->transact(ADD_UID_TO_OBSERVER_TRANSACTION, data, &reply); + if (err != NO_ERROR || ((err = reply.readExceptionCode()) != NO_ERROR)) { + return err; + } + return OK; + } + + virtual status_t removeUidFromObserver(const sp<IBinder>& observerToken, + const String16& callingPackage, int32_t uid) { + Parcel data, reply; + data.writeInterfaceToken(IActivityManager::getInterfaceDescriptor()); + data.writeStrongBinder(observerToken); + data.writeString16(callingPackage); + data.writeInt32(uid); + status_t err = remote()->transact(REMOVE_UID_FROM_OBSERVER_TRANSACTION, data, &reply); + if (err != NO_ERROR || ((err = reply.readExceptionCode()) != NO_ERROR)) { + return err; + } + return OK; + } + virtual bool isUidActive(const uid_t uid, const String16& callingPackage) { Parcel data, reply; @@ -131,6 +183,56 @@ public: *outResult = reply.readInt32(); return NO_ERROR; } + + virtual status_t logFgsApiBegin(int32_t apiType, int32_t appUid, int32_t appPid) { + Parcel data, reply; + data.writeInterfaceToken(IActivityManager::getInterfaceDescriptor()); + data.writeInt32(apiType); + data.writeInt32(appUid); + data.writeInt32(appPid); + status_t err = remote()->transact(LOG_FGS_API_BEGIN_TRANSACTION, data, &reply, + IBinder::FLAG_ONEWAY); + if (err != NO_ERROR || ((err = reply.readExceptionCode()) != NO_ERROR)) { + ALOGD("FGS Logger Transaction failed"); + ALOGD("%d", err); + return err; + } + return NO_ERROR; + } + + virtual status_t logFgsApiEnd(int32_t apiType, int32_t appUid, int32_t appPid) { + Parcel data, reply; + data.writeInterfaceToken(IActivityManager::getInterfaceDescriptor()); + data.writeInt32(apiType); + data.writeInt32(appUid); + data.writeInt32(appPid); + status_t err = + remote()->transact(LOG_FGS_API_END_TRANSACTION, data, &reply, IBinder::FLAG_ONEWAY); + if (err != NO_ERROR || ((err = reply.readExceptionCode()) != NO_ERROR)) { + ALOGD("FGS Logger Transaction failed"); + ALOGD("%d", err); + return err; + } + return NO_ERROR; + } + + virtual status_t logFgsApiStateChanged(int32_t apiType, int32_t state, int32_t appUid, + int32_t appPid) { + Parcel data, reply; + data.writeInterfaceToken(IActivityManager::getInterfaceDescriptor()); + data.writeInt32(apiType); + data.writeInt32(state); + data.writeInt32(appUid); + data.writeInt32(appPid); + status_t err = remote()->transact(LOG_FGS_API_BEGIN_TRANSACTION, data, &reply, + IBinder::FLAG_ONEWAY); + if (err != NO_ERROR || ((err = reply.readExceptionCode()) != NO_ERROR)) { + ALOGD("FGS Logger Transaction failed"); + ALOGD("%d", err); + return err; + } + return NO_ERROR; + } }; // ------------------------------------------------------------------------------------ |