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

Commit 0c19ed77 authored by Kyle Zhang's avatar Kyle Zhang Committed by Android (Google) Code Review
Browse files

Merge "Implementation of AMediaDrm_getKeyRequestWithDefaultUrlandType"

parents 2f46a2be b5a9b979
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -187,7 +187,7 @@ Status_V1_2 DrmPlugin::getKeyRequestCommon(const hidl_vec<uint8_t>& scope,
        return Status_V1_2::ERROR_DRM_CANNOT_HANDLE;
    }

    *defaultUrl = "";
    *defaultUrl = "https://default.url";
    *keyRequestType = KeyRequestType_V1_1::UNKNOWN;
    *request = std::vector<uint8_t>();

+46 −4
Original line number Diff line number Diff line
@@ -97,6 +97,8 @@ struct AMediaDrm {
    List<idvec_t> mIds;
    KeyedVector<String8, String8> mQueryResults;
    Vector<uint8_t> mKeyRequest;
    String8 mDefaultUrl;
    AMediaDrmKeyRequestType mkeyRequestType;
    Vector<uint8_t> mProvisionRequest;
    String8 mProvisionUrl;
    String8 mPropertyString;
@@ -416,6 +418,21 @@ media_status_t AMediaDrm_getKeyRequest(AMediaDrm *mObj, const AMediaDrmScope *sc
        const AMediaDrmKeyValue *optionalParameters, size_t numOptionalParameters,
        const uint8_t **keyRequest, size_t *keyRequestSize) {

    return AMediaDrm_getKeyRequestWithDefaultUrlAndType(mObj,
        scope, init, initSize, mimeType, keyType, optionalParameters,
        numOptionalParameters, keyRequest,
        keyRequestSize, NULL, NULL);
}

EXPORT
media_status_t AMediaDrm_getKeyRequestWithDefaultUrlAndType(AMediaDrm *mObj,
        const AMediaDrmScope *scope, const uint8_t *init, size_t initSize,
        const char *mimeType, AMediaDrmKeyType keyType,
        const AMediaDrmKeyValue *optionalParameters,
        size_t numOptionalParameters, const uint8_t **keyRequest,
        size_t *keyRequestSize, const char **defaultUrl,
        AMediaDrmKeyRequestType *keyRequestType) {

    if (!mObj || mObj->mDrm == NULL) {
        return AMEDIA_ERROR_INVALID_OBJECT;
    }
@@ -449,18 +466,43 @@ media_status_t AMediaDrm_getKeyRequest(AMediaDrm *mObj, const AMediaDrmScope *sc
        mdOptionalParameters.add(String8(optionalParameters[i].mKey),
                String8(optionalParameters[i].mValue));
    }
    String8 defaultUrl;
    DrmPlugin::KeyRequestType keyRequestType;

    DrmPlugin::KeyRequestType requestType;
    mObj->mKeyRequest.clear();
    status_t status = mObj->mDrm->getKeyRequest(*iter, mdInit, String8(mimeType),
            mdKeyType, mdOptionalParameters, mObj->mKeyRequest, defaultUrl,
            &keyRequestType);
            mdKeyType, mdOptionalParameters, mObj->mKeyRequest, mObj->mDefaultUrl,
            &requestType);
    if (status != OK) {
        return translateStatus(status);
    } else {
        *keyRequest = mObj->mKeyRequest.array();
        *keyRequestSize = mObj->mKeyRequest.size();
        if (defaultUrl != NULL)
            *defaultUrl = mObj->mDefaultUrl.string();
        switch(requestType) {
            case DrmPlugin::kKeyRequestType_Initial:
                mObj->mkeyRequestType = KEY_REQUEST_TYPE_INITIAL;
                break;
            case DrmPlugin::kKeyRequestType_Renewal:
                mObj->mkeyRequestType = KEY_REQUEST_TYPE_RENEWAL;
                break;
            case DrmPlugin::kKeyRequestType_Release:
                mObj->mkeyRequestType = KEY_REQUEST_TYPE_RELEASE;
                break;
            case DrmPlugin::kKeyRequestType_None:
                mObj->mkeyRequestType = KEY_REQUEST_TYPE_NONE;
                break;
            case DrmPlugin::kKeyRequestType_Update:
                mObj->mkeyRequestType = KEY_REQUEST_TYPE_UPDATE;
                break;
            default:
                return AMEDIA_ERROR_UNKNOWN;
        }

        if (keyRequestType != NULL)
            *keyRequestType = mObj->mkeyRequestType;
    }

    return AMEDIA_OK;
}