Add attributionTag to audio-recordings
... by replacing packageName/uid/pid by the Identity class.
This allows us to track which parts of the app trigger audio-recordings.
90% of the code is just sending around the additional parameters.
This adds it for the Java and native API.
Test: atest CtsAppOpsTestCases
CtsNativeMediaAAudioTestCases
Fixes: 160150145
Change-Id: Ibd7b884f7fcd4668a4e27f997e59cfc3217a9e89
diff --git a/media/libaaudio/src/client/AudioStreamInternal.cpp b/media/libaaudio/src/client/AudioStreamInternal.cpp
index 2815c6a..dc961ad 100644
--- a/media/libaaudio/src/client/AudioStreamInternal.cpp
+++ b/media/libaaudio/src/client/AudioStreamInternal.cpp
@@ -28,7 +28,6 @@
#include <cutils/properties.h>
#include <media/MediaMetricsItem.h>
-#include <utils/String16.h>
#include <utils/Trace.h>
#include "AudioEndpointParcelable.h"
@@ -39,6 +38,7 @@
#include "core/AudioStreamBuilder.h"
#include "fifo/FifoBuffer.h"
#include "utility/AudioClock.h"
+#include <media/AidlConversion.h>
#include "AudioStreamInternal.h"
@@ -49,9 +49,9 @@
// This is needed to make sense of the logs more easily.
#define LOG_TAG (mInService ? "AudioStreamInternal_Service" : "AudioStreamInternal_Client")
-using android::String16;
using android::Mutex;
using android::WrappingBuffer;
+using android::media::permission::Identity;
using namespace aaudio;
@@ -107,9 +107,15 @@
// Request FLOAT for the shared mixer or the device.
request.getConfiguration().setFormat(AUDIO_FORMAT_PCM_FLOAT);
+ // TODO b/182392769: use identity util
+ Identity identity;
+ identity.uid = VALUE_OR_FATAL(android::legacy2aidl_uid_t_int32_t(getuid()));
+ identity.pid = VALUE_OR_FATAL(android::legacy2aidl_pid_t_int32_t(getpid()));
+ identity.packageName = builder.getOpPackageName();
+ identity.attributionTag = builder.getAttributionTag();
+
// Build the request to send to the server.
- request.setUserId(getuid());
- request.setProcessId(getpid());
+ request.setIdentity(identity);
request.setSharingModeMatchRequired(isSharingModeMatchRequired());
request.setInService(isInService());