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

Commit 78b1947e authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Guard __AActivityManager_* APIs with __builtin_available"

parents 6ab4df23 ff998616
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -302,12 +302,14 @@ bool TranscodingClientManager::isTrustedCaller(pid_t pid, uid_t uid) {
    }

    int32_t result;
    if (__builtin_available(android 31, *)) {
        if (APermissionManager_checkPermission("android.permission.WRITE_MEDIA_STORAGE", pid, uid,
                                               &result) == PERMISSION_MANAGER_STATUS_OK &&
            result == PERMISSION_MANAGER_PERMISSION_GRANTED) {
            mTrustedUids.insert(uid);
            return true;
        }
    }

    return false;
}
+16 −9
Original line number Diff line number Diff line
@@ -48,8 +48,9 @@ void TranscodingUidPolicy::OnUidImportance(uid_t uid, int32_t uidImportance, voi
}

void TranscodingUidPolicy::registerSelf() {
    mUidObserver = AActivityManager_addUidImportanceListener(
            &OnUidImportance, -1, (void*)this);
    if (__builtin_available(android 31, *)) {
        mUidObserver = AActivityManager_addUidImportanceListener(&OnUidImportance, -1, (void*)this);
    }

    if (mUidObserver == nullptr) {
        ALOGE("Failed to register uid observer");
@@ -62,12 +63,16 @@ void TranscodingUidPolicy::registerSelf() {
}

void TranscodingUidPolicy::unregisterSelf() {
    if (__builtin_available(android 31, *)) {
        AActivityManager_removeUidImportanceListener(mUidObserver);
        mUidObserver = nullptr;

        Mutex::Autolock _l(mUidLock);
        mRegistered = false;
        ALOGI("Unregistered uid observer");
    } else {
        ALOGE("Failed to unregister uid observer");
    }
}

void TranscodingUidPolicy::setCallback(const std::shared_ptr<UidPolicyCallbackInterface>& cb) {
@@ -86,9 +91,11 @@ void TranscodingUidPolicy::registerMonitorUid(uid_t uid) {
    }

    int32_t state = IMPORTANCE_UNKNOWN;
    if (__builtin_available(android 31, *)) {
        if (mRegistered && AActivityManager_isUidActive(uid)) {
            state = AActivityManager_getUidImportance(uid);
        }
    }

    ALOGV("%s: inserting new uid: %u, procState %d", __FUNCTION__, uid, state);

+12 −10
Original line number Diff line number Diff line
@@ -62,6 +62,7 @@ binder_status_t MediaTranscodingService::dump(int fd, const char** /*args*/, uin

    uid_t callingUid = AIBinder_getCallingUid();
    pid_t callingPid = AIBinder_getCallingPid();
    if (__builtin_available(android 31, *)) {
        int32_t permissionResult;
        if (APermissionManager_checkPermission("android.permission.DUMP", callingPid, callingUid,
                                               &permissionResult) != PERMISSION_MANAGER_STATUS_OK ||
@@ -73,6 +74,7 @@ binder_status_t MediaTranscodingService::dump(int fd, const char** /*args*/, uin
            write(fd, result.string(), result.size());
            return PERMISSION_DENIED;
        }
    }

    const size_t SIZE = 256;
    char buffer[SIZE];