summaryrefslogtreecommitdiff
path: root/services/audiopolicy/service/AudioRecordClient.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'services/audiopolicy/service/AudioRecordClient.cpp')
-rw-r--r--services/audiopolicy/service/AudioRecordClient.cpp26
1 files changed, 15 insertions, 11 deletions
diff --git a/services/audiopolicy/service/AudioRecordClient.cpp b/services/audiopolicy/service/AudioRecordClient.cpp
index 44cbd871f2..26f92370e9 100644
--- a/services/audiopolicy/service/AudioRecordClient.cpp
+++ b/services/audiopolicy/service/AudioRecordClient.cpp
@@ -19,6 +19,7 @@
#include "AudioRecordClient.h"
#include "AudioPolicyService.h"
#include "binder/AppOpsManager.h"
+#include "mediautils/ServiceUtilities.h"
#include <algorithm>
@@ -47,7 +48,7 @@ int getTargetSdkForPackageName(std::string_view packageName) {
if (pm != nullptr) {
const auto status = pm->getTargetSdkVersionForPackage(
String16{packageName.data(), packageName.size()}, &targetSdk);
- return status.isOk() ? targetSdk : -1;
+ return status.isOk() ? targetSdk : __ANDROID_API_FUTURE__;
}
}
return targetSdk;
@@ -120,16 +121,19 @@ OpRecordAudioMonitor::createIfNeeded(
|| attributionSource.packageName.value().size() == 0) {
return nullptr;
}
- return new OpRecordAudioMonitor(attributionSource, getOpForSource(attr.source), commandThread);
+ return new OpRecordAudioMonitor(attributionSource, getOpForSource(attr.source),
+ isRecordOpRequired(attr.source),
+ commandThread);
}
-OpRecordAudioMonitor::OpRecordAudioMonitor(
- const AttributionSourceState& attributionSource, int32_t appOp,
- wp<AudioPolicyService::AudioCommandThread> commandThread) :
- mHasOp(true), mAttributionSource(attributionSource), mAppOp(appOp),
- mCommandThread(commandThread)
-{
-}
+OpRecordAudioMonitor::OpRecordAudioMonitor(const AttributionSourceState& attributionSource,
+ int32_t appOp, bool shouldMonitorRecord,
+ wp<AudioPolicyService::AudioCommandThread> commandThread)
+ : mHasOp(true),
+ mAttributionSource(attributionSource),
+ mAppOp(appOp),
+ mShouldMonitorRecord(shouldMonitorRecord),
+ mCommandThread(commandThread) {}
OpRecordAudioMonitor::~OpRecordAudioMonitor()
{
@@ -160,7 +164,7 @@ void OpRecordAudioMonitor::onFirstRef()
});
};
reg(mAppOp);
- if (mAppOp != AppOpsManager::OP_RECORD_AUDIO) {
+ if (mAppOp != AppOpsManager::OP_RECORD_AUDIO && mShouldMonitorRecord) {
reg(AppOpsManager::OP_RECORD_AUDIO);
}
}
@@ -186,7 +190,7 @@ void OpRecordAudioMonitor::checkOp(bool updateUidStates) {
});
};
bool hasIt = check(mAppOp);
- if (mAppOp != AppOpsManager::OP_RECORD_AUDIO) {
+ if (mAppOp != AppOpsManager::OP_RECORD_AUDIO && mShouldMonitorRecord) {
hasIt = hasIt && check(AppOpsManager::OP_RECORD_AUDIO);
}
// verbose logging only log when appOp changed