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

Commit da98abad authored by Adam Stone's avatar Adam Stone Committed by Android (Google) Code Review
Browse files

Merge "Add support for getMetrics to IDrm"

parents 65a438c6 ab394d13
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -838,6 +838,11 @@ status_t DrmHal::setPropertyByteArray(String8 const &name,
    return toStatusT(status);
}

status_t DrmHal::getMetrics(MediaAnalyticsItem* metrics) {
    // TODO: Replace this with real metrics.
    metrics->setCString("/drm/mediadrm/dummymetric", "dummy");
    return OK;
}

status_t DrmHal::setCipherAlgorithm(Vector<uint8_t> const &sessionId,
                                 String8 const &algorithm) {
@@ -1030,6 +1035,7 @@ void DrmHal::writeByteArray(Parcel &obj, hidl_vec<uint8_t> const &vec)
    }
}


void DrmHal::reportMetrics() const
{
    Vector<uint8_t> metrics;
+24 −0
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@ enum {
    GET_PROPERTY_BYTE_ARRAY,
    SET_PROPERTY_STRING,
    SET_PROPERTY_BYTE_ARRAY,
    GET_METRICS,
    SET_CIPHER_ALGORITHM,
    SET_MAC_ALGORITHM,
    ENCRYPT,
@@ -393,6 +394,18 @@ struct BpDrm : public BpInterface<IDrm> {
        return reply.readInt32();
    }

    virtual status_t getMetrics(MediaAnalyticsItem *item) {
        Parcel data, reply;
        data.writeInterfaceToken(IDrm::getInterfaceDescriptor());

        status_t status = remote()->transact(GET_METRICS, data, &reply);
        if (status != OK) {
            return status;
        }

        item->readFromParcel(reply);
        return reply.readInt32();
    }

    virtual status_t setCipherAlgorithm(Vector<uint8_t> const &sessionId,
                                        String8 const &algorithm) {
@@ -829,6 +842,17 @@ status_t BnDrm::onTransact(
            return OK;
        }

        case GET_METRICS:
        {
            CHECK_INTERFACE(IDrm, data, reply);

            MediaAnalyticsItem item;
            status_t result = getMetrics(&item);
            item.writeToParcel(reply);
            reply->writeInt32(result);
            return OK;
        }

        case SET_CIPHER_ALGORITHM:
        {
            CHECK_INTERFACE(IDrm, data, reply);
+2 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@

#include <media/IDrm.h>
#include <media/IDrmClient.h>
#include <media/MediaAnalyticsItem.h>
#include <utils/threads.h>

using ::android::hardware::drm::V1_0::EventType;
@@ -104,6 +105,7 @@ struct DrmHal : public BnDrm,
    virtual status_t setPropertyString(String8 const &name, String8 const &value ) const;
    virtual status_t setPropertyByteArray(String8 const &name,
                                          Vector<uint8_t> const &value ) const;
    virtual status_t getMetrics(MediaAnalyticsItem *item);

    virtual status_t setCipherAlgorithm(Vector<uint8_t> const &sessionId,
                                        String8 const &algorithm);
+3 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@
#include <media/stagefright/foundation/ABase.h>
#include <media/drm/DrmAPI.h>
#include <media/IDrmClient.h>
#include <media/MediaAnalyticsItem.h>

#ifndef ANDROID_IDRM_H_

@@ -86,6 +87,8 @@ struct IDrm : public IInterface {
    virtual status_t setPropertyByteArray(String8 const &name,
                                          Vector<uint8_t> const &value) const = 0;

    virtual status_t getMetrics(MediaAnalyticsItem *item) = 0;

    virtual status_t setCipherAlgorithm(Vector<uint8_t> const &sessionId,
                                        String8 const &algorithm) = 0;