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

Commit 49114a38 authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 13046591 from 6d93713f to 25Q2-release

Change-Id: I0ad5248f626fe4f8da7990844ab0efa0af90c85e
parents 43bbc693 6d93713f
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -26,14 +26,17 @@ namespace android::media::permission {

// Package name param is unreliable (can be empty), but we should only get valid events based on
// how we register the listener.
void DefaultAppOpsFacade::OpMonitor::opChanged(int32_t op, const String16&) {
    if (mOps.attributedOp != op && mOps.additionalOp != op) return;
binder::Status DefaultAppOpsFacade::OpMonitor::opChanged(int32_t op, int32_t, const String16&,
                                                         const String16&) {
    if (mOps.attributedOp != op && mOps.additionalOp != op) return binder::Status::ok();
    DefaultAppOpsFacade x{};
    const auto allowed = x.checkAccess(mAttr, mOps);
    std::lock_guard l_{mLock};
    if (mCb == nullptr) return;
    if (mCb != nullptr) {
        mCb(allowed);
    }
    return binder::Status::ok();
}

bool DefaultAppOpsFacade::startAccess(const ValidatedAttributionSourceState& attr_, Ops ops) {
    const AttributionSourceState& attr = attr_;
+4 −3
Original line number Diff line number Diff line
@@ -17,7 +17,7 @@
#pragma once

#include <android-base/thread_annotations.h>
#include <binder/IAppOpsCallback.h>
#include <com/android/internal/app/BnAppOpsCallback.h>
#include <cutils/android_filesystem_config.h>
#include <log/log.h>
#include <utils/RefBase.h>
@@ -166,12 +166,13 @@ class DefaultAppOpsFacade {
                                std::function<void(bool)> cb);
    void removeChangeCallback(uintptr_t);

    class OpMonitor : public BnAppOpsCallback {
    class OpMonitor : public com::android::internal::app::BnAppOpsCallback {
      public:
        OpMonitor(ValidatedAttributionSourceState attr, Ops ops, std::function<void(bool)> cb)
            : mAttr(std::move(attr)), mOps(ops), mCb(std::move(cb)) { }

        void opChanged(int32_t op, const String16& packageName) override;
        binder::Status opChanged(int32_t op, int32_t uid, const String16& packageName,
                                 const String16& persistenDeviceId) override;

        void stopListening() {
            std::lock_guard l_{mLock};
+0 −1
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@
#pragma once

#include <android-base/thread_annotations.h>
#include <binder/IAppOpsCallback.h>
#include <cutils/android_filesystem_config.h>
#include <log/log.h>
#include <system/audio.h>
+3 −2
Original line number Diff line number Diff line
@@ -48,10 +48,11 @@ private:

    AppOpsManager mAppOpsManager;

    class PlayAudioOpCallback : public BnAppOpsCallback {
    class PlayAudioOpCallback : public com::android::internal::app::BnAppOpsCallback {
    public:
        explicit PlayAudioOpCallback(const wp<OpPlayAudioMonitor>& monitor);
        void opChanged(int32_t op, const String16& packageName) override;
        binder::Status opChanged(int32_t op, int32_t uid, const String16& packageName,
                                 const String16& persistentDeviceId) override;

    private:
        const wp<OpPlayAudioMonitor> mMonitor;
+13 −1
Original line number Diff line number Diff line
@@ -10651,7 +10651,9 @@ status_t MmapThread::start(const AudioClient& client,
        chain->incActiveTrackCnt();
    }

    track->logBeginInterval(patchSinksToString(&mPatch)); // log to MediaMetrics
    // log to MediaMetrics
    track->logBeginInterval(
            isOutput() ? patchSinksToString(&mPatch) : patchSourcesToString(&mPatch));
    *handle = portId;

    if (mActiveTracks.size() == 1) {
@@ -11004,6 +11006,16 @@ NO_THREAD_SAFETY_ANALYSIS // elease and re-acquire mutex()
    // Force meteadata update after a route change
    mActiveTracks.setHasChanged();

    const std::string patchSourcesAsString = isOutput() ? "" : patchSourcesToString(patch);
    const std::string patchSinksAsString = isOutput() ? patchSinksToString(patch) : "";
    mThreadMetrics.logEndInterval();
    mThreadMetrics.logCreatePatch(patchSourcesAsString, patchSinksAsString);
    mThreadMetrics.logBeginInterval();
    for (const auto &track : mActiveTracks) {
        track->logEndInterval();
        track->logBeginInterval(isOutput() ? patchSinksAsString : patchSourcesAsString);
    }

    return status;
}

Loading