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

Commit ccc9c83e authored by Ahaan Ugale's avatar Ahaan Ugale Committed by Automerger Merge Worker
Browse files

Merge "Apply Assistant AudioPolicy to HotwordDetectionService" into sc-dev am:...

Merge "Apply Assistant AudioPolicy to HotwordDetectionService" into sc-dev am: 0c1ce4ef am: f2626e3c

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/15464022

Change-Id: I47184f215a9fa7db74b8acb5e715288af8dc5d3e
parents 8dafd16e f2626e3c
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -1934,6 +1934,14 @@ status_t AudioSystem::setAssistantUid(uid_t uid) {
    return statusTFromBinderStatus(aps->setAssistantUid(uidAidl));
}

status_t AudioSystem::setHotwordDetectionServiceUid(uid_t uid) {
    const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service();
    if (aps == 0) return PERMISSION_DENIED;

    int32_t uidAidl = VALUE_OR_RETURN_STATUS(legacy2aidl_uid_t_int32_t(uid));
    return statusTFromBinderStatus(aps->setHotwordDetectionServiceUid(uidAidl));
}

status_t AudioSystem::setA11yServicesUids(const std::vector<uid_t>& uids) {
    const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service();
    if (aps == 0) return PERMISSION_DENIED;
+2 −0
Original line number Diff line number Diff line
@@ -299,6 +299,8 @@ interface IAudioPolicyService {

    void setAssistantUid(int /* uid_t */ uid);

    void setHotwordDetectionServiceUid(int /* uid_t */ uid);

    void setA11yServicesUids(in int[] /* uid_t[] */ uids);

    void setCurrentImeUid(int /* uid_t */ uid);
+1 −0
Original line number Diff line number Diff line
@@ -433,6 +433,7 @@ public:
    static status_t setSurroundFormatEnabled(audio_format_t audioFormat, bool enabled);

    static status_t setAssistantUid(uid_t uid);
    static status_t setHotwordDetectionServiceUid(uid_t uid);
    static status_t setA11yServicesUids(const std::vector<uid_t>& uids);
    static status_t setCurrentImeUid(uid_t uid);

+8 −0
Original line number Diff line number Diff line
@@ -1925,6 +1925,14 @@ Status AudioPolicyService::setAssistantUid(int32_t uidAidl)
    return Status::ok();
}

Status AudioPolicyService::setHotwordDetectionServiceUid(int32_t uidAidl)
{
    uid_t uid = VALUE_OR_RETURN_BINDER_STATUS(aidl2legacy_int32_t_uid_t(uidAidl));
    Mutex::Autolock _l(mLock);
    mUidPolicy->setHotwordDetectionServiceUid(uid);
    return Status::ok();
}

Status AudioPolicyService::setA11yServicesUids(const std::vector<int32_t>& uidsAidl)
{
    size_t size = uidsAidl.size();
+11 −3
Original line number Diff line number Diff line
@@ -205,6 +205,7 @@ public:
    binder::Status setSurroundFormatEnabled(const media::AudioFormatDescription& audioFormat,
                                            bool enabled) override;
    binder::Status setAssistantUid(int32_t uid) override;
    binder::Status setHotwordDetectionServiceUid(int32_t uid) override;
    binder::Status setA11yServicesUids(const std::vector<int32_t>& uids) override;
    binder::Status setCurrentImeUid(int32_t uid) override;
    binder::Status isHapticPlaybackSupported(bool* _aidl_return) override;
@@ -382,7 +383,8 @@ private:
    public:
        explicit UidPolicy(wp<AudioPolicyService> service)
                : mService(service), mObserverRegistered(false),
                  mAssistantUid(0), mCurrentImeUid(0), mRttEnabled(false) {}
                  mAssistantUid(0), mHotwordDetectionServiceUid(0), mCurrentImeUid(0),
                  mRttEnabled(false) {}

        void registerSelf();
        void unregisterSelf();
@@ -392,8 +394,13 @@ private:

        bool isUidActive(uid_t uid);
        int getUidState(uid_t uid);
        void setAssistantUid(uid_t uid) { mAssistantUid = uid; }
        bool isAssistantUid(uid_t uid) { return uid == mAssistantUid; }
        void setAssistantUid(uid_t uid) { mAssistantUid = uid; };
        void setHotwordDetectionServiceUid(uid_t uid) { mHotwordDetectionServiceUid = uid; }
        bool isAssistantUid(uid_t uid) const {
            // The HotwordDetectionService is part of the Assistant package but runs with a separate
            // (isolated) uid, so we check for either uid here.
            return uid == mAssistantUid || uid == mHotwordDetectionServiceUid;
        }
        void setA11yUids(const std::vector<uid_t>& uids) { mA11yUids.clear(); mA11yUids = uids; }
        bool isA11yUid(uid_t uid);
        bool isA11yOnTop();
@@ -429,6 +436,7 @@ private:
        std::unordered_map<uid_t, std::pair<bool, int>> mOverrideUids;
        std::unordered_map<uid_t, std::pair<bool, int>> mCachedUids;
        uid_t mAssistantUid = -1;
        uid_t mHotwordDetectionServiceUid = -1;
        std::vector<uid_t> mA11yUids;
        uid_t mCurrentImeUid = -1;
        bool mRttEnabled = false;