Added mechanism for setting multiple UIDs as assistants.
Added mechanism for setting multiple services UIDS as assistants. The
current assistant behaviour for recording still remains the same.
Bug: 189312611
Test: m -j, and run assistant via hotword trigger and key press
Change-Id: Iccd01c8a8ceaacc16418e0857bda805452b26152
diff --git a/services/audiopolicy/service/AudioPolicyService.cpp b/services/audiopolicy/service/AudioPolicyService.cpp
index 8add137..fb6b096 100644
--- a/services/audiopolicy/service/AudioPolicyService.cpp
+++ b/services/audiopolicy/service/AudioPolicyService.cpp
@@ -594,6 +594,8 @@
}
write(fd, result.string(), result.size());
+
+ mUidPolicy->dumpInternals(fd);
return NO_ERROR;
}
@@ -1036,7 +1038,7 @@
case TRANSACTION_getSurroundFormats:
case TRANSACTION_getReportedSurroundFormats:
case TRANSACTION_setSurroundFormatEnabled:
- case TRANSACTION_setAssistantUid:
+ case TRANSACTION_setAssistantServicesUids:
case TRANSACTION_setA11yServicesUids:
case TRANSACTION_setUidDeviceAffinities:
case TRANSACTION_removeUidDeviceAffinities:
@@ -1474,6 +1476,54 @@
return it != mA11yUids.end();
}
+void AudioPolicyService::UidPolicy::setAssistantUids(const std::vector<uid_t>& uids) {
+ mAssistantUids.clear();
+ mAssistantUids = uids;
+}
+
+bool AudioPolicyService::UidPolicy::isAssistantUid(uid_t uid)
+{
+ std::vector<uid_t>::iterator it = find(mAssistantUids.begin(), mAssistantUids.end(), uid);
+ return it != mAssistantUids.end();
+}
+
+void AudioPolicyService::UidPolicy::dumpInternals(int fd) {
+ const size_t SIZE = 256;
+ char buffer[SIZE];
+ String8 result;
+ auto appendUidsToResult = [&](const char* title, const std::vector<uid_t> &uids) {
+ snprintf(buffer, SIZE, "\t%s: \n", title);
+ result.append(buffer);
+ int counter = 0;
+ if (uids.empty()) {
+ snprintf(buffer, SIZE, "\t\tNo UIDs present.\n");
+ result.append(buffer);
+ return;
+ }
+ for (const auto &uid : uids) {
+ snprintf(buffer, SIZE, "\t\tUID[%d]=%d\n", counter++, uid);
+ result.append(buffer);
+ }
+ };
+
+ snprintf(buffer, SIZE, "UID Policy:\n");
+ result.append(buffer);
+ snprintf(buffer, SIZE, "\tmObserverRegistered=%s\n",(mObserverRegistered ? "True":"False"));
+ result.append(buffer);
+
+ appendUidsToResult("Assistants UIDs", mAssistantUids);
+
+ appendUidsToResult("Accessibility UIDs", mA11yUids);
+
+ snprintf(buffer, SIZE, "\tInput Method Service UID=%d\n", mCurrentImeUid);
+ result.append(buffer);
+
+ snprintf(buffer, SIZE, "\tIs RTT Enabled: %s\n", (mRttEnabled ? "True":"False"));
+ result.append(buffer);
+
+ write(fd, result.string(), result.size());
+}
+
// ----------- AudioPolicyService::SensorPrivacyService implementation ----------
void AudioPolicyService::SensorPrivacyPolicy::registerSelf() {
SensorPrivacyManager spm;