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/AudioPolicyInterfaceImpl.cpp b/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp
index 582c048..0479958 100644
--- a/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp
+++ b/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp
@@ -2002,34 +2002,33 @@
mAudioPolicyManager->setSurroundFormatEnabled(audioFormat, enabled));
}
-Status AudioPolicyService::setAssistantUid(int32_t uidAidl)
-{
- uid_t uid = VALUE_OR_RETURN_BINDER_STATUS(aidl2legacy_int32_t_uid_t(uidAidl));
- Mutex::Autolock _l(mLock);
- mUidPolicy->setAssistantUid(uid);
+Status convertInt32VectorToUidVectorWithLimit(
+ const std::vector<int32_t>& uidsAidl, std::vector<uid_t>& uids) {
+ RETURN_IF_BINDER_ERROR(binderStatusFromStatusT(
+ convertRangeWithLimit(uidsAidl.begin(),
+ uidsAidl.end(),
+ std::back_inserter(uids),
+ aidl2legacy_int32_t_uid_t,
+ MAX_ITEMS_PER_LIST)));
+
return Status::ok();
}
-Status AudioPolicyService::setHotwordDetectionServiceUid(int32_t uidAidl)
+Status AudioPolicyService::setAssistantServicesUids(const std::vector<int32_t>& uidsAidl)
{
- uid_t uid = VALUE_OR_RETURN_BINDER_STATUS(aidl2legacy_int32_t_uid_t(uidAidl));
+ std::vector<uid_t> uids;
+ RETURN_IF_BINDER_ERROR(convertInt32VectorToUidVectorWithLimit(uidsAidl, uids));
+
Mutex::Autolock _l(mLock);
- mUidPolicy->setHotwordDetectionServiceUid(uid);
+ mUidPolicy->setAssistantUids(uids);
return Status::ok();
}
Status AudioPolicyService::setA11yServicesUids(const std::vector<int32_t>& uidsAidl)
{
- size_t size = uidsAidl.size();
- if (size > MAX_ITEMS_PER_LIST) {
- size = MAX_ITEMS_PER_LIST;
- }
std::vector<uid_t> uids;
- RETURN_IF_BINDER_ERROR(binderStatusFromStatusT(
- convertRange(uidsAidl.begin(),
- uidsAidl.begin() + size,
- std::back_inserter(uids),
- aidl2legacy_int32_t_uid_t)));
+ RETURN_IF_BINDER_ERROR(convertInt32VectorToUidVectorWithLimit(uidsAidl, uids));
+
Mutex::Autolock _l(mLock);
mUidPolicy->setA11yUids(uids);
return Status::ok();