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

Commit fa72c480 authored by Kyle Zhang's avatar Kyle Zhang
Browse files

Fix toDrmMetricGroupHidl conversion

Test: atest
CtsMediaDrmTestCases: android.media.drm.cts.MediaDrmMetricsTest#testGetMetricsEmpty
Bug: 206804036
Change-Id: If3f736943ad990cfb94552626c09363362c439c6
parent a55209dc
Loading
Loading
Loading
Loading
+15 −15
Original line number Diff line number Diff line
@@ -246,6 +246,12 @@ static List<Vector<uint8_t>> toKeySetIds(const std::vector<KeySetId>& hKeySetIds
    return keySetIds;
}

static hidl_vec<uint8_t> toHidlVec(const Vector<uint8_t>& vector) {
    hidl_vec<uint8_t> vec;
    vec.setToExternal(const_cast<uint8_t*>(vector.array()), vector.size());
    return vec;
}

static DrmPlugin::OfflineLicenseState toOfflineLicenseState(OfflineLicenseState licenseState) {
    switch (licenseState) {
        case OfflineLicenseState::USABLE:
@@ -257,24 +263,17 @@ static DrmPlugin::OfflineLicenseState toOfflineLicenseState(OfflineLicenseState
    }
}

template <typename T = uint8_t>
static hidl_vec<T> toHidlVec(const Vector<T>& vector) {
    hidl_vec<T> vec;
    vec.setToExternal(const_cast<T*>(vector.array()), vector.size());
    return vec;
}

Mutex DrmHalAidl::mLock;

static hidl_vec<DrmMetricGroupHidl> toDrmMetricGroupHidl(std::vector<DrmMetricGroupAidl> result) {
    Vector<DrmMetricGroupHidl> resultHidl;
    std::vector<DrmMetricGroupHidl> resultHidl;
    for (auto r : result) {
        DrmMetricGroupHidl re;
        Vector<DrmMetricHidl> tmpMetric;
        std::vector<DrmMetricHidl> tmpMetric;
        for (auto m : r.metrics) {
            DrmMetricHidl me;
            me.name = m.name;
            Vector<AttributeHidl> aTmp;
            std::vector<AttributeHidl> aTmp;
            for (auto attr : m.attributes) {
                AttributeHidl attrHidl;
                attrHidl.name = attr.name;
@@ -299,9 +298,9 @@ static hidl_vec<DrmMetricGroupHidl> toDrmMetricGroupHidl(std::vector<DrmMetricGr
                aTmp.push_back(attrHidl);
            }

            me.attributes = toHidlVec<AttributeHidl>(aTmp);
            me.attributes = aTmp;

            Vector<ValueHidl> vTmp;
            std::vector<ValueHidl> vTmp;
            for (auto value : m.values) {
                ValueHidl valueHidl;
                valueHidl.componentName = value.name;
@@ -325,15 +324,15 @@ static hidl_vec<DrmMetricGroupHidl> toDrmMetricGroupHidl(std::vector<DrmMetricGr
                vTmp.push_back(valueHidl);
            }

            me.values = toHidlVec<ValueHidl>(vTmp);
            me.values = vTmp;
            tmpMetric.push_back(me);
        }

        re.metrics = toHidlVec<DrmMetricHidl>(tmpMetric);
        re.metrics = tmpMetric;
        resultHidl.push_back(re);
    }

    return toHidlVec<DrmMetricGroupHidl>(resultHidl);
    return resultHidl;
}

// DrmSessionClient Definition
@@ -560,6 +559,7 @@ status_t DrmHalAidl::closeSession(Vector<uint8_t> const& sessionId) {
        mMetrics.mCloseSessionCounter.Increment(response);
        return response;
    }

    mMetrics.mCloseSessionCounter.Increment(DEAD_OBJECT);
    return DEAD_OBJECT;
}