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

Commit 9560a12c authored by Austin Borger's avatar Austin Borger Committed by Android (Google) Code Review
Browse files

Merge "Camera / UidObserver: Add the ability to subscribe to specific UIDs" into udc-dev

parents e34ee304 805d8046
Loading
Loading
Loading
Loading
+34 −0
Original line number Diff line number Diff line
@@ -75,6 +75,20 @@ status_t ActivityManager::registerUidObserver(const sp<IUidObserver>& observer,
    return DEAD_OBJECT;
}

status_t ActivityManager::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) {
    sp<IActivityManager> service = getService();
    if (service != nullptr) {
        return service->registerUidObserverForUids(observer, event, cutpoint, callingPackage, uids,
                                                   nUids, observerToken);
    }
    // ActivityManagerService appears dead. Return usual error code for dead service.
    return DEAD_OBJECT;
}

status_t ActivityManager::unregisterUidObserver(const sp<IUidObserver>& observer)
{
    sp<IActivityManager> service = getService();
@@ -85,6 +99,26 @@ status_t ActivityManager::unregisterUidObserver(const sp<IUidObserver>& observer
    return DEAD_OBJECT;
}

status_t ActivityManager::addUidToObserver(const sp<IBinder>& observerToken,
                                           const String16& callingPackage, int32_t uid) {
    sp<IActivityManager> service = getService();
    if (service != nullptr) {
        return service->addUidToObserver(observerToken, callingPackage, uid);
    }
    // ActivityManagerService appears dead. Return usual error code for dead service.
    return DEAD_OBJECT;
}

status_t ActivityManager::removeUidFromObserver(const sp<IBinder>& observerToken,
                                                const String16& callingPackage, int32_t uid) {
    sp<IActivityManager> service = getService();
    if (service != nullptr) {
        return service->removeUidFromObserver(observerToken, callingPackage, uid);
    }
    // ActivityManagerService appears dead. Return usual error code for dead service.
    return DEAD_OBJECT;
}

bool ActivityManager::isUidActive(const uid_t uid, const String16& callingPackage)
{
    sp<IActivityManager> service = getService();
+52 −0
Original line number Diff line number Diff line
@@ -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;
+8 −0
Original line number Diff line number Diff line
@@ -82,7 +82,15 @@ public:
                             const int32_t event,
                             const int32_t cutpoint,
                             const String16& callingPackage);
    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);
    status_t unregisterUidObserver(const sp<IUidObserver>& observer);
    status_t addUidToObserver(const sp<IBinder>& observerToken, const String16& callingPackage,
                              int32_t uid);
    status_t removeUidFromObserver(const sp<IBinder>& observerToken, const String16& callingPackage,
                                   int32_t uid);
    bool isUidActive(const uid_t uid, const String16& callingPackage);
    int getUidProcessState(const uid_t uid, const String16& callingPackage);
    status_t checkPermission(const String16& permission, const pid_t pid, const uid_t uid, int32_t* outResult);
+12 −0
Original line number Diff line number Diff line
@@ -35,7 +35,16 @@ public:
                                     const int32_t event,
                                     const int32_t cutpoint,
                                     const String16& callingPackage) = 0;
    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) = 0;
    virtual status_t unregisterUidObserver(const sp<IUidObserver>& observer) = 0;
    virtual status_t addUidToObserver(const sp<IBinder>& observerToken,
                                      const String16& callingPackage, int32_t uid) = 0;
    virtual status_t removeUidFromObserver(const sp<IBinder>& observerToken,
                                           const String16& callingPackage, int32_t uid) = 0;
    virtual bool isUidActive(const uid_t uid, const String16& callingPackage) = 0;
    virtual int32_t getUidProcessState(const uid_t uid, const String16& callingPackage) = 0;
    virtual status_t checkPermission(const String16& permission,
@@ -51,6 +60,9 @@ public:
        OPEN_CONTENT_URI_TRANSACTION = IBinder::FIRST_CALL_TRANSACTION,
        REGISTER_UID_OBSERVER_TRANSACTION,
        UNREGISTER_UID_OBSERVER_TRANSACTION,
        REGISTER_UID_OBSERVER_FOR_UIDS_TRANSACTION,
        ADD_UID_TO_OBSERVER_TRANSACTION,
        REMOVE_UID_FROM_OBSERVER_TRANSACTION,
        IS_UID_ACTIVE_TRANSACTION,
        GET_UID_PROCESS_STATE_TRANSACTION,
        CHECK_PERMISSION_TRANSACTION,