Report key request type in GenerateKeyRequest
Bug: 19771299 Merged from Widevine CDM repo: https://widevine-internal-review.googlesource.com/#/c/13830/ Change-Id: Id9b4547febcabbb73a4be5dbb2e4c63b1c3eacd3
This commit is contained in:
@@ -57,6 +57,9 @@ class CdmEngine {
|
|||||||
// and renewal requests.
|
// and renewal requests.
|
||||||
// key_request: This must be non-null and point to a CdmKeyMessage. The buffer
|
// key_request: This must be non-null and point to a CdmKeyMessage. The buffer
|
||||||
// will have its contents replaced with the key request.
|
// will have its contents replaced with the key request.
|
||||||
|
// key_request_type: May be null. If it is non-null, it will be filled with
|
||||||
|
// key request type, whether it is an initial request,
|
||||||
|
// renewal request or release request etc.
|
||||||
// server_url: This must be non-null and point to a string. The string will
|
// server_url: This must be non-null and point to a string. The string will
|
||||||
// have its contents replaced with the default URL (if one is
|
// have its contents replaced with the default URL (if one is
|
||||||
// known) to send this key request to.
|
// known) to send this key request to.
|
||||||
@@ -64,11 +67,14 @@ class CdmEngine {
|
|||||||
// will have its contents replaced with the key set ID of the
|
// will have its contents replaced with the key set ID of the
|
||||||
// session. Note that for non-offline license requests, the
|
// session. Note that for non-offline license requests, the
|
||||||
// key set ID is empty, so the CdmKeySetId will be cleared.
|
// key set ID is empty, so the CdmKeySetId will be cleared.
|
||||||
|
// TODO(kqyang): Consider refactor GenerateKeyRequest to reduce the number of
|
||||||
|
// parameters.
|
||||||
virtual CdmResponseType GenerateKeyRequest(
|
virtual CdmResponseType GenerateKeyRequest(
|
||||||
const CdmSessionId& session_id, const CdmKeySetId& key_set_id,
|
const CdmSessionId& session_id, const CdmKeySetId& key_set_id,
|
||||||
const InitializationData& init_data, const CdmLicenseType license_type,
|
const InitializationData& init_data, const CdmLicenseType license_type,
|
||||||
CdmAppParameterMap& app_parameters, CdmKeyMessage* key_request,
|
CdmAppParameterMap& app_parameters, CdmKeyMessage* key_request,
|
||||||
std::string* server_url, CdmKeySetId* key_set_id_out);
|
CdmKeyRequestType* key_request_type, std::string* server_url,
|
||||||
|
CdmKeySetId* key_set_id_out);
|
||||||
|
|
||||||
// Accept license response and extract key info.
|
// Accept license response and extract key info.
|
||||||
virtual CdmResponseType AddKey(const CdmSessionId& session_id,
|
virtual CdmResponseType AddKey(const CdmSessionId& session_id,
|
||||||
|
|||||||
@@ -37,7 +37,8 @@ class CdmSession {
|
|||||||
virtual CdmResponseType GenerateKeyRequest(
|
virtual CdmResponseType GenerateKeyRequest(
|
||||||
const InitializationData& init_data, const CdmLicenseType license_type,
|
const InitializationData& init_data, const CdmLicenseType license_type,
|
||||||
const CdmAppParameterMap& app_parameters, CdmKeyMessage* key_request,
|
const CdmAppParameterMap& app_parameters, CdmKeyMessage* key_request,
|
||||||
std::string* server_url, CdmKeySetId* key_set_id);
|
CdmKeyRequestType* key_request_type, std::string* server_url,
|
||||||
|
CdmKeySetId* key_set_id);
|
||||||
|
|
||||||
// AddKey() - Accept license response and extract key info.
|
// AddKey() - Accept license response and extract key info.
|
||||||
virtual CdmResponseType AddKey(const CdmKeyResponse& key_response,
|
virtual CdmResponseType AddKey(const CdmKeyResponse& key_response,
|
||||||
|
|||||||
@@ -29,6 +29,13 @@ typedef std::string CdmUsageInfoReleaseMessage;
|
|||||||
typedef std::string CdmProvisioningRequest;
|
typedef std::string CdmProvisioningRequest;
|
||||||
typedef std::string CdmProvisioningResponse;
|
typedef std::string CdmProvisioningResponse;
|
||||||
|
|
||||||
|
enum CdmKeyRequestType {
|
||||||
|
kKeyRequestTypeUnknown,
|
||||||
|
kKeyRequestTypeInitial,
|
||||||
|
kKeyRequestTypeRenewal,
|
||||||
|
kKeyRequestTypeRelease,
|
||||||
|
};
|
||||||
|
|
||||||
enum CdmResponseType {
|
enum CdmResponseType {
|
||||||
NO_ERROR,
|
NO_ERROR,
|
||||||
UNKNOWN_ERROR,
|
UNKNOWN_ERROR,
|
||||||
|
|||||||
@@ -166,7 +166,8 @@ CdmResponseType CdmEngine::GenerateKeyRequest(
|
|||||||
const CdmSessionId& session_id, const CdmKeySetId& key_set_id,
|
const CdmSessionId& session_id, const CdmKeySetId& key_set_id,
|
||||||
const InitializationData& init_data, const CdmLicenseType license_type,
|
const InitializationData& init_data, const CdmLicenseType license_type,
|
||||||
CdmAppParameterMap& app_parameters, CdmKeyMessage* key_request,
|
CdmAppParameterMap& app_parameters, CdmKeyMessage* key_request,
|
||||||
std::string* server_url, CdmKeySetId* key_set_id_out) {
|
CdmKeyRequestType* key_request_type, std::string* server_url,
|
||||||
|
CdmKeySetId* key_set_id_out) {
|
||||||
LOGI("CdmEngine::GenerateKeyRequest");
|
LOGI("CdmEngine::GenerateKeyRequest");
|
||||||
|
|
||||||
CdmSessionId id = session_id;
|
CdmSessionId id = session_id;
|
||||||
@@ -217,9 +218,9 @@ CdmResponseType CdmEngine::GenerateKeyRequest(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sts =
|
sts = iter->second->GenerateKeyRequest(
|
||||||
iter->second->GenerateKeyRequest(init_data, license_type, app_parameters,
|
init_data, license_type, app_parameters, key_request, key_request_type,
|
||||||
key_request, server_url, key_set_id_out);
|
server_url, key_set_id_out);
|
||||||
|
|
||||||
if (KEY_MESSAGE != sts) {
|
if (KEY_MESSAGE != sts) {
|
||||||
if (sts == NEED_PROVISIONING) {
|
if (sts == NEED_PROVISIONING) {
|
||||||
|
|||||||
@@ -154,7 +154,8 @@ CdmResponseType CdmSession::RestoreUsageSession(
|
|||||||
CdmResponseType CdmSession::GenerateKeyRequest(
|
CdmResponseType CdmSession::GenerateKeyRequest(
|
||||||
const InitializationData& init_data, const CdmLicenseType license_type,
|
const InitializationData& init_data, const CdmLicenseType license_type,
|
||||||
const CdmAppParameterMap& app_parameters, CdmKeyMessage* key_request,
|
const CdmAppParameterMap& app_parameters, CdmKeyMessage* key_request,
|
||||||
std::string* server_url, CdmKeySetId* key_set_id) {
|
CdmKeyRequestType* key_request_type, std::string* server_url,
|
||||||
|
CdmKeySetId* key_set_id) {
|
||||||
if (crypto_session_.get() == NULL) {
|
if (crypto_session_.get() == NULL) {
|
||||||
LOGW("CdmSession::GenerateKeyRequest: Invalid crypto session");
|
LOGW("CdmSession::GenerateKeyRequest: Invalid crypto session");
|
||||||
return UNKNOWN_ERROR;
|
return UNKNOWN_ERROR;
|
||||||
@@ -182,10 +183,13 @@ CdmResponseType CdmSession::GenerateKeyRequest(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (is_release_) {
|
if (is_release_) {
|
||||||
|
if (key_request_type) *key_request_type = kKeyRequestTypeRelease;
|
||||||
return GenerateReleaseRequest(key_request, server_url);
|
return GenerateReleaseRequest(key_request, server_url);
|
||||||
} else if (license_received_) { // renewal
|
} else if (license_received_) { // renewal
|
||||||
|
if (key_request_type) *key_request_type = kKeyRequestTypeRenewal;
|
||||||
return GenerateRenewalRequest(key_request, server_url);
|
return GenerateRenewalRequest(key_request, server_url);
|
||||||
} else {
|
} else {
|
||||||
|
if (key_request_type) *key_request_type = kKeyRequestTypeInitial;
|
||||||
if (!init_data.is_supported()) {
|
if (!init_data.is_supported()) {
|
||||||
LOGW("CdmSession::GenerateKeyRequest: unsupported init data type (%s)",
|
LOGW("CdmSession::GenerateKeyRequest: unsupported init data type (%s)",
|
||||||
init_data.type().c_str());
|
init_data.type().c_str());
|
||||||
|
|||||||
@@ -85,10 +85,12 @@ class WvCdmEngineTest : public testing::Test {
|
|||||||
|
|
||||||
InitializationData init_data(init_data_type_string, key_id);
|
InitializationData init_data(init_data_type_string, key_id);
|
||||||
|
|
||||||
EXPECT_EQ(KEY_MESSAGE,
|
CdmKeyRequestType key_request_type;
|
||||||
cdm_engine_.GenerateKeyRequest(
|
EXPECT_EQ(KEY_MESSAGE, cdm_engine_.GenerateKeyRequest(
|
||||||
session_id_, key_set_id, init_data, kLicenseTypeStreaming,
|
session_id_, key_set_id, init_data,
|
||||||
app_parameters, &key_msg_, &server_url, NULL));
|
kLicenseTypeStreaming, app_parameters, &key_msg_,
|
||||||
|
&key_request_type, &server_url, NULL));
|
||||||
|
EXPECT_EQ(kKeyRequestTypeInitial, key_request_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GenerateRenewalRequest() {
|
void GenerateRenewalRequest() {
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ class WvContentDecryptionModule : public TimerHandler {
|
|||||||
CdmAppParameterMap& app_parameters,
|
CdmAppParameterMap& app_parameters,
|
||||||
CdmClientPropertySet* property_set,
|
CdmClientPropertySet* property_set,
|
||||||
CdmKeyMessage* key_request,
|
CdmKeyMessage* key_request,
|
||||||
|
CdmKeyRequestType* key_request_type,
|
||||||
std::string* server_url);
|
std::string* server_url);
|
||||||
|
|
||||||
// Accept license response and extract key info.
|
// Accept license response and extract key info.
|
||||||
|
|||||||
@@ -58,25 +58,20 @@ CdmResponseType WvContentDecryptionModule::CloseSession(
|
|||||||
}
|
}
|
||||||
|
|
||||||
CdmResponseType WvContentDecryptionModule::GenerateKeyRequest(
|
CdmResponseType WvContentDecryptionModule::GenerateKeyRequest(
|
||||||
const CdmSessionId& session_id,
|
const CdmSessionId& session_id, const CdmKeySetId& key_set_id,
|
||||||
const CdmKeySetId& key_set_id,
|
const std::string& init_data_type, const CdmInitData& init_data,
|
||||||
const std::string& init_data_type,
|
const CdmLicenseType license_type, CdmAppParameterMap& app_parameters,
|
||||||
const CdmInitData& init_data,
|
CdmClientPropertySet* property_set, CdmKeyMessage* key_request,
|
||||||
const CdmLicenseType license_type,
|
CdmKeyRequestType* key_request_type, std::string* server_url) {
|
||||||
CdmAppParameterMap& app_parameters,
|
|
||||||
CdmClientPropertySet* property_set,
|
|
||||||
CdmKeyMessage* key_request,
|
|
||||||
std::string* server_url) {
|
|
||||||
CdmResponseType sts;
|
CdmResponseType sts;
|
||||||
if (license_type == kLicenseTypeRelease) {
|
if (license_type == kLicenseTypeRelease) {
|
||||||
sts = cdm_engine_->OpenKeySetSession(key_set_id, property_set, NULL);
|
sts = cdm_engine_->OpenKeySetSession(key_set_id, property_set, NULL);
|
||||||
if (sts != NO_ERROR) return sts;
|
if (sts != NO_ERROR) return sts;
|
||||||
}
|
}
|
||||||
InitializationData initialization_data(init_data_type, init_data);
|
InitializationData initialization_data(init_data_type, init_data);
|
||||||
sts = cdm_engine_->GenerateKeyRequest(session_id, key_set_id,
|
sts = cdm_engine_->GenerateKeyRequest(
|
||||||
initialization_data, license_type,
|
session_id, key_set_id, initialization_data, license_type, app_parameters,
|
||||||
app_parameters, key_request,
|
key_request, key_request_type, server_url, NULL);
|
||||||
server_url, NULL);
|
|
||||||
|
|
||||||
switch(license_type) {
|
switch(license_type) {
|
||||||
case kLicenseTypeRelease:
|
case kLicenseTypeRelease:
|
||||||
|
|||||||
@@ -270,10 +270,12 @@ class WvCdmExtendedDurationTest : public testing::Test {
|
|||||||
CdmLicenseType license_type) {
|
CdmLicenseType license_type) {
|
||||||
wvcdm::CdmAppParameterMap app_parameters;
|
wvcdm::CdmAppParameterMap app_parameters;
|
||||||
std::string server_url;
|
std::string server_url;
|
||||||
EXPECT_EQ(wvcdm::KEY_MESSAGE,
|
CdmKeyRequestType key_request_type;
|
||||||
decryptor_.GenerateKeyRequest(
|
EXPECT_EQ(wvcdm::KEY_MESSAGE, decryptor_.GenerateKeyRequest(
|
||||||
session_id_, key_set_id_, "video/mp4", init_data,
|
session_id_, key_set_id_, "video/mp4",
|
||||||
license_type, app_parameters, NULL, &key_msg_, &server_url));
|
init_data, license_type, app_parameters,
|
||||||
|
NULL, &key_msg_, &key_request_type, &server_url));
|
||||||
|
EXPECT_EQ(kKeyRequestTypeInitial, key_request_type);
|
||||||
EXPECT_EQ(0u, server_url.size());
|
EXPECT_EQ(0u, server_url.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -283,10 +285,13 @@ class WvCdmExtendedDurationTest : public testing::Test {
|
|||||||
// when appropriate.
|
// when appropriate.
|
||||||
std::string init_data;
|
std::string init_data;
|
||||||
wvcdm::CdmAppParameterMap app_parameters;
|
wvcdm::CdmAppParameterMap app_parameters;
|
||||||
EXPECT_EQ(wvcdm::KEY_MESSAGE,
|
CdmKeyRequestType key_request_type;
|
||||||
decryptor_.GenerateKeyRequest(
|
EXPECT_EQ(
|
||||||
session_id_, key_set_id_, "video/mp4", init_data,
|
wvcdm::KEY_MESSAGE,
|
||||||
license_type, app_parameters, NULL, &key_msg_, server_url));
|
decryptor_.GenerateKeyRequest(
|
||||||
|
session_id_, key_set_id_, "video/mp4", init_data, license_type,
|
||||||
|
app_parameters, NULL, &key_msg_, &key_request_type, server_url));
|
||||||
|
EXPECT_EQ(kKeyRequestTypeRenewal, key_request_type);
|
||||||
// TODO(edwinwong, rfrias): Add tests cases for when license server url
|
// TODO(edwinwong, rfrias): Add tests cases for when license server url
|
||||||
// is empty on renewal. Need appropriate key id at the server.
|
// is empty on renewal. Need appropriate key id at the server.
|
||||||
EXPECT_NE(0u, server_url->size());
|
EXPECT_NE(0u, server_url->size());
|
||||||
@@ -297,11 +302,13 @@ class WvCdmExtendedDurationTest : public testing::Test {
|
|||||||
CdmInitData init_data;
|
CdmInitData init_data;
|
||||||
wvcdm::CdmAppParameterMap app_parameters;
|
wvcdm::CdmAppParameterMap app_parameters;
|
||||||
std::string server_url;
|
std::string server_url;
|
||||||
|
CdmKeyRequestType key_request_type;
|
||||||
EXPECT_EQ(wvcdm::KEY_MESSAGE,
|
EXPECT_EQ(wvcdm::KEY_MESSAGE,
|
||||||
decryptor_.GenerateKeyRequest(
|
decryptor_.GenerateKeyRequest(session_id, key_set_id, "video/mp4",
|
||||||
session_id, key_set_id, "video/mp4", init_data,
|
init_data, kLicenseTypeRelease,
|
||||||
kLicenseTypeRelease, app_parameters, NULL, &key_msg_,
|
app_parameters, NULL, &key_msg_,
|
||||||
&server_url));
|
&key_request_type, &server_url));
|
||||||
|
EXPECT_EQ(kKeyRequestTypeRelease, key_request_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
void LogResponseError(const std::string& message, int http_status_code) {
|
void LogResponseError(const std::string& message, int http_status_code) {
|
||||||
|
|||||||
@@ -484,7 +484,7 @@ class WvCdmRequestLicenseTest : public testing::Test {
|
|||||||
EXPECT_EQ(wvcdm::KEY_MESSAGE,
|
EXPECT_EQ(wvcdm::KEY_MESSAGE,
|
||||||
decryptor_.GenerateKeyRequest(
|
decryptor_.GenerateKeyRequest(
|
||||||
session_id_, key_set_id, "video/mp4", init_data, license_type,
|
session_id_, key_set_id, "video/mp4", init_data, license_type,
|
||||||
app_parameters, property_set, &key_msg_, &server_url));
|
app_parameters, property_set, &key_msg_, NULL, &server_url));
|
||||||
EXPECT_EQ(0u, server_url.size());
|
EXPECT_EQ(0u, server_url.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -500,11 +500,13 @@ class WvCdmRequestLicenseTest : public testing::Test {
|
|||||||
// when appropriate.
|
// when appropriate.
|
||||||
std::string init_data;
|
std::string init_data;
|
||||||
wvcdm::CdmAppParameterMap app_parameters;
|
wvcdm::CdmAppParameterMap app_parameters;
|
||||||
|
wvcdm::CdmKeyRequestType key_request_type;
|
||||||
EXPECT_EQ(wvcdm::KEY_MESSAGE,
|
EXPECT_EQ(wvcdm::KEY_MESSAGE,
|
||||||
decryptor_.GenerateKeyRequest(
|
decryptor_.GenerateKeyRequest(
|
||||||
session_id_, key_set_id_, "video/mp4", init_data,
|
session_id_, key_set_id_, "video/mp4", init_data,
|
||||||
license_type, app_parameters, property_set, &key_msg_,
|
license_type, app_parameters, property_set, &key_msg_,
|
||||||
server_url));
|
&key_request_type, server_url));
|
||||||
|
EXPECT_EQ(kKeyRequestTypeRenewal, key_request_type);
|
||||||
// TODO(edwinwong, rfrias): Add tests cases for when license server url
|
// TODO(edwinwong, rfrias): Add tests cases for when license server url
|
||||||
// is empty on renewal. Need appropriate key id at the server.
|
// is empty on renewal. Need appropriate key id at the server.
|
||||||
EXPECT_NE(0u, server_url->size());
|
EXPECT_NE(0u, server_url->size());
|
||||||
@@ -519,12 +521,14 @@ class WvCdmRequestLicenseTest : public testing::Test {
|
|||||||
CdmSessionId session_id;
|
CdmSessionId session_id;
|
||||||
CdmInitData init_data;
|
CdmInitData init_data;
|
||||||
wvcdm::CdmAppParameterMap app_parameters;
|
wvcdm::CdmAppParameterMap app_parameters;
|
||||||
|
wvcdm::CdmKeyRequestType key_request_type;
|
||||||
std::string server_url;
|
std::string server_url;
|
||||||
EXPECT_EQ(wvcdm::KEY_MESSAGE,
|
EXPECT_EQ(wvcdm::KEY_MESSAGE,
|
||||||
decryptor_.GenerateKeyRequest(
|
decryptor_.GenerateKeyRequest(
|
||||||
session_id, key_set_id, "video/mp4", init_data,
|
session_id, key_set_id, "video/mp4", init_data,
|
||||||
kLicenseTypeRelease, app_parameters, property_set, &key_msg_,
|
kLicenseTypeRelease, app_parameters, property_set, &key_msg_,
|
||||||
&server_url));
|
&key_request_type, &server_url));
|
||||||
|
EXPECT_EQ(kKeyRequestTypeRelease, key_request_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
void LogResponseError(const std::string& message, int http_status_code) {
|
void LogResponseError(const std::string& message, int http_status_code) {
|
||||||
|
|||||||
@@ -32,6 +32,22 @@ using namespace android;
|
|||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace wvcdm;
|
using namespace wvcdm;
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
DrmPlugin::KeyRequestType ConvertFromCdmKeyRequestType(
|
||||||
|
CdmKeyRequestType keyRequestType) {
|
||||||
|
switch (keyRequestType) {
|
||||||
|
case kKeyRequestTypeInitial:
|
||||||
|
return DrmPlugin::kKeyRequestType_Initial;
|
||||||
|
case kKeyRequestTypeRenewal:
|
||||||
|
return DrmPlugin::kKeyRequestType_Renewal;
|
||||||
|
case kKeyRequestTypeRelease:
|
||||||
|
return DrmPlugin::kKeyRequestType_Release;
|
||||||
|
default:
|
||||||
|
return DrmPlugin::kKeyRequestType_Unknown;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} // namespace
|
||||||
|
|
||||||
WVDrmPlugin::WVDrmPlugin(WvContentDecryptionModule* cdm,
|
WVDrmPlugin::WVDrmPlugin(WvContentDecryptionModule* cdm,
|
||||||
WVGenericCryptoInterface* crypto)
|
WVGenericCryptoInterface* crypto)
|
||||||
: mCDM(cdm), mCrypto(crypto), mCryptoSessionsMutex(), mCryptoSessions() {}
|
: mCDM(cdm), mCrypto(crypto), mCryptoSessionsMutex(), mCryptoSessions() {}
|
||||||
@@ -138,11 +154,6 @@ status_t WVDrmPlugin::getKeyRequest(
|
|||||||
return android::ERROR_DRM_CANNOT_HANDLE;
|
return android::ERROR_DRM_CANNOT_HANDLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: set *keyRequestType properly, this is
|
|
||||||
// just a stub implementation to allow the framework
|
|
||||||
// changes to build and run
|
|
||||||
*keyRequestType = kKeyRequestType_Initial;
|
|
||||||
|
|
||||||
string cdmInitDataType = initDataType.string();
|
string cdmInitDataType = initDataType.string();
|
||||||
// Provide backwards-compatibility for apps that pass non-EME-compatible MIME
|
// Provide backwards-compatibility for apps that pass non-EME-compatible MIME
|
||||||
// types.
|
// types.
|
||||||
@@ -195,13 +206,13 @@ status_t WVDrmPlugin::getKeyRequest(
|
|||||||
}
|
}
|
||||||
|
|
||||||
CdmKeyMessage keyRequest;
|
CdmKeyMessage keyRequest;
|
||||||
|
CdmKeyRequestType cdmKeyRequestType;
|
||||||
string cdmDefaultUrl;
|
string cdmDefaultUrl;
|
||||||
CdmResponseType res = mCDM->GenerateKeyRequest(cdmSessionId, cdmKeySetId,
|
CdmResponseType res = mCDM->GenerateKeyRequest(
|
||||||
cdmInitDataType,
|
cdmSessionId, cdmKeySetId, cdmInitDataType, processedInitData,
|
||||||
processedInitData,
|
cdmLicenseType, cdmParameters, &mPropertySet, &keyRequest,
|
||||||
cdmLicenseType, cdmParameters,
|
&cdmKeyRequestType, &cdmDefaultUrl);
|
||||||
&mPropertySet, &keyRequest,
|
*keyRequestType = ConvertFromCdmKeyRequestType(cdmKeyRequestType);
|
||||||
&cdmDefaultUrl);
|
|
||||||
|
|
||||||
if (isCdmResponseTypeSuccess(res)) {
|
if (isCdmResponseTypeSuccess(res)) {
|
||||||
defaultUrl.clear();
|
defaultUrl.clear();
|
||||||
|
|||||||
@@ -33,14 +33,12 @@ class MockCDM : public WvContentDecryptionModule {
|
|||||||
|
|
||||||
MOCK_METHOD1(CloseSession, CdmResponseType(const CdmSessionId&));
|
MOCK_METHOD1(CloseSession, CdmResponseType(const CdmSessionId&));
|
||||||
|
|
||||||
MOCK_METHOD9(GenerateKeyRequest, CdmResponseType(const CdmSessionId&,
|
MOCK_METHOD10(GenerateKeyRequest,
|
||||||
const CdmKeySetId&,
|
CdmResponseType(const CdmSessionId&, const CdmKeySetId&,
|
||||||
const std::string&,
|
const std::string&, const CdmInitData&,
|
||||||
const CdmInitData&,
|
const CdmLicenseType, CdmAppParameterMap&,
|
||||||
const CdmLicenseType,
|
CdmClientPropertySet*, CdmKeyMessage*,
|
||||||
CdmAppParameterMap&,
|
CdmKeyRequestType*, string*));
|
||||||
CdmClientPropertySet*,
|
|
||||||
CdmKeyMessage*, string*));
|
|
||||||
|
|
||||||
MOCK_METHOD3(AddKey, CdmResponseType(const CdmSessionId&,
|
MOCK_METHOD3(AddKey, CdmResponseType(const CdmSessionId&,
|
||||||
const CdmKeyResponse&,
|
const CdmKeyResponse&,
|
||||||
@@ -269,23 +267,26 @@ TEST_F(WVDrmPluginTest, GeneratesKeyRequests) {
|
|||||||
|
|
||||||
EXPECT_CALL(cdm, GenerateKeyRequest(cdmSessionId, "", mimeType, initData,
|
EXPECT_CALL(cdm, GenerateKeyRequest(cdmSessionId, "", mimeType, initData,
|
||||||
kLicenseTypeOffline, cdmParameters, _,
|
kLicenseTypeOffline, cdmParameters, _,
|
||||||
_, _))
|
_, _, _))
|
||||||
.WillOnce(DoAll(SetArgPointee<7>(cdmRequest),
|
.WillOnce(DoAll(SetArgPointee<7>(cdmRequest),
|
||||||
SetArgPointee<8>(kDefaultUrl),
|
SetArgPointee<8>(kKeyRequestTypeInitial),
|
||||||
|
SetArgPointee<9>(kDefaultUrl),
|
||||||
Return(wvcdm::KEY_MESSAGE)));
|
Return(wvcdm::KEY_MESSAGE)));
|
||||||
|
|
||||||
EXPECT_CALL(cdm, GenerateKeyRequest(cdmSessionId, "", mimeType, initData,
|
EXPECT_CALL(cdm, GenerateKeyRequest(cdmSessionId, "", mimeType, initData,
|
||||||
kLicenseTypeStreaming, cdmParameters, _,
|
kLicenseTypeStreaming, cdmParameters,
|
||||||
_, _))
|
_, _, _, _))
|
||||||
.WillOnce(DoAll(SetArgPointee<7>(cdmRequest),
|
.WillOnce(DoAll(SetArgPointee<7>(cdmRequest),
|
||||||
SetArgPointee<8>(kDefaultUrl),
|
SetArgPointee<8>(kKeyRequestTypeRenewal),
|
||||||
|
SetArgPointee<9>(kDefaultUrl),
|
||||||
Return(wvcdm::KEY_MESSAGE)));
|
Return(wvcdm::KEY_MESSAGE)));
|
||||||
|
|
||||||
EXPECT_CALL(cdm, GenerateKeyRequest("", cdmKeySetId, mimeType, initData,
|
EXPECT_CALL(cdm, GenerateKeyRequest("", cdmKeySetId, mimeType, initData,
|
||||||
kLicenseTypeRelease, cdmParameters,
|
kLicenseTypeRelease, cdmParameters,
|
||||||
NotNull(), _, _))
|
NotNull(), _, _, _))
|
||||||
.WillOnce(DoAll(SetArgPointee<7>(cdmRequest),
|
.WillOnce(DoAll(SetArgPointee<7>(cdmRequest),
|
||||||
SetArgPointee<8>(kDefaultUrl),
|
SetArgPointee<8>(kKeyRequestTypeRelease),
|
||||||
|
SetArgPointee<9>(kDefaultUrl),
|
||||||
Return(wvcdm::KEY_MESSAGE)));
|
Return(wvcdm::KEY_MESSAGE)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -306,6 +307,7 @@ TEST_F(WVDrmPluginTest, GeneratesKeyRequests) {
|
|||||||
&keyRequestType);
|
&keyRequestType);
|
||||||
ASSERT_EQ(OK, res);
|
ASSERT_EQ(OK, res);
|
||||||
EXPECT_THAT(request, ElementsAreArray(requestRaw, kRequestSize));
|
EXPECT_THAT(request, ElementsAreArray(requestRaw, kRequestSize));
|
||||||
|
EXPECT_EQ(DrmPlugin::kKeyRequestType_Initial, keyRequestType);
|
||||||
EXPECT_STREQ(kDefaultUrl, defaultUrl.string());
|
EXPECT_STREQ(kDefaultUrl, defaultUrl.string());
|
||||||
|
|
||||||
res = plugin.getKeyRequest(sessionId, initData, mimeType,
|
res = plugin.getKeyRequest(sessionId, initData, mimeType,
|
||||||
@@ -313,6 +315,7 @@ TEST_F(WVDrmPluginTest, GeneratesKeyRequests) {
|
|||||||
request, defaultUrl, &keyRequestType);
|
request, defaultUrl, &keyRequestType);
|
||||||
ASSERT_EQ(OK, res);
|
ASSERT_EQ(OK, res);
|
||||||
EXPECT_THAT(request, ElementsAreArray(requestRaw, kRequestSize));
|
EXPECT_THAT(request, ElementsAreArray(requestRaw, kRequestSize));
|
||||||
|
EXPECT_EQ(DrmPlugin::kKeyRequestType_Renewal, keyRequestType);
|
||||||
EXPECT_STREQ(kDefaultUrl, defaultUrl.string());
|
EXPECT_STREQ(kDefaultUrl, defaultUrl.string());
|
||||||
|
|
||||||
res = plugin.getKeyRequest(keySetId, initData, mimeType,
|
res = plugin.getKeyRequest(keySetId, initData, mimeType,
|
||||||
@@ -320,6 +323,7 @@ TEST_F(WVDrmPluginTest, GeneratesKeyRequests) {
|
|||||||
request, defaultUrl, &keyRequestType);
|
request, defaultUrl, &keyRequestType);
|
||||||
ASSERT_EQ(OK, res);
|
ASSERT_EQ(OK, res);
|
||||||
EXPECT_THAT(request, ElementsAreArray(requestRaw, kRequestSize));
|
EXPECT_THAT(request, ElementsAreArray(requestRaw, kRequestSize));
|
||||||
|
EXPECT_EQ(DrmPlugin::kKeyRequestType_Release, keyRequestType);
|
||||||
EXPECT_STREQ(kDefaultUrl, defaultUrl.string());
|
EXPECT_STREQ(kDefaultUrl, defaultUrl.string());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user