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:
@@ -32,6 +32,22 @@ using namespace android;
|
||||
using namespace std;
|
||||
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,
|
||||
WVGenericCryptoInterface* crypto)
|
||||
: mCDM(cdm), mCrypto(crypto), mCryptoSessionsMutex(), mCryptoSessions() {}
|
||||
@@ -138,11 +154,6 @@ status_t WVDrmPlugin::getKeyRequest(
|
||||
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();
|
||||
// Provide backwards-compatibility for apps that pass non-EME-compatible MIME
|
||||
// types.
|
||||
@@ -195,13 +206,13 @@ status_t WVDrmPlugin::getKeyRequest(
|
||||
}
|
||||
|
||||
CdmKeyMessage keyRequest;
|
||||
CdmKeyRequestType cdmKeyRequestType;
|
||||
string cdmDefaultUrl;
|
||||
CdmResponseType res = mCDM->GenerateKeyRequest(cdmSessionId, cdmKeySetId,
|
||||
cdmInitDataType,
|
||||
processedInitData,
|
||||
cdmLicenseType, cdmParameters,
|
||||
&mPropertySet, &keyRequest,
|
||||
&cdmDefaultUrl);
|
||||
CdmResponseType res = mCDM->GenerateKeyRequest(
|
||||
cdmSessionId, cdmKeySetId, cdmInitDataType, processedInitData,
|
||||
cdmLicenseType, cdmParameters, &mPropertySet, &keyRequest,
|
||||
&cdmKeyRequestType, &cdmDefaultUrl);
|
||||
*keyRequestType = ConvertFromCdmKeyRequestType(cdmKeyRequestType);
|
||||
|
||||
if (isCdmResponseTypeSuccess(res)) {
|
||||
defaultUrl.clear();
|
||||
|
||||
@@ -33,14 +33,12 @@ class MockCDM : public WvContentDecryptionModule {
|
||||
|
||||
MOCK_METHOD1(CloseSession, CdmResponseType(const CdmSessionId&));
|
||||
|
||||
MOCK_METHOD9(GenerateKeyRequest, CdmResponseType(const CdmSessionId&,
|
||||
const CdmKeySetId&,
|
||||
const std::string&,
|
||||
const CdmInitData&,
|
||||
const CdmLicenseType,
|
||||
CdmAppParameterMap&,
|
||||
CdmClientPropertySet*,
|
||||
CdmKeyMessage*, string*));
|
||||
MOCK_METHOD10(GenerateKeyRequest,
|
||||
CdmResponseType(const CdmSessionId&, const CdmKeySetId&,
|
||||
const std::string&, const CdmInitData&,
|
||||
const CdmLicenseType, CdmAppParameterMap&,
|
||||
CdmClientPropertySet*, CdmKeyMessage*,
|
||||
CdmKeyRequestType*, string*));
|
||||
|
||||
MOCK_METHOD3(AddKey, CdmResponseType(const CdmSessionId&,
|
||||
const CdmKeyResponse&,
|
||||
@@ -269,23 +267,26 @@ TEST_F(WVDrmPluginTest, GeneratesKeyRequests) {
|
||||
|
||||
EXPECT_CALL(cdm, GenerateKeyRequest(cdmSessionId, "", mimeType, initData,
|
||||
kLicenseTypeOffline, cdmParameters, _,
|
||||
_, _))
|
||||
_, _, _))
|
||||
.WillOnce(DoAll(SetArgPointee<7>(cdmRequest),
|
||||
SetArgPointee<8>(kDefaultUrl),
|
||||
SetArgPointee<8>(kKeyRequestTypeInitial),
|
||||
SetArgPointee<9>(kDefaultUrl),
|
||||
Return(wvcdm::KEY_MESSAGE)));
|
||||
|
||||
EXPECT_CALL(cdm, GenerateKeyRequest(cdmSessionId, "", mimeType, initData,
|
||||
kLicenseTypeStreaming, cdmParameters, _,
|
||||
_, _))
|
||||
kLicenseTypeStreaming, cdmParameters,
|
||||
_, _, _, _))
|
||||
.WillOnce(DoAll(SetArgPointee<7>(cdmRequest),
|
||||
SetArgPointee<8>(kDefaultUrl),
|
||||
SetArgPointee<8>(kKeyRequestTypeRenewal),
|
||||
SetArgPointee<9>(kDefaultUrl),
|
||||
Return(wvcdm::KEY_MESSAGE)));
|
||||
|
||||
EXPECT_CALL(cdm, GenerateKeyRequest("", cdmKeySetId, mimeType, initData,
|
||||
kLicenseTypeRelease, cdmParameters,
|
||||
NotNull(), _, _))
|
||||
NotNull(), _, _, _))
|
||||
.WillOnce(DoAll(SetArgPointee<7>(cdmRequest),
|
||||
SetArgPointee<8>(kDefaultUrl),
|
||||
SetArgPointee<8>(kKeyRequestTypeRelease),
|
||||
SetArgPointee<9>(kDefaultUrl),
|
||||
Return(wvcdm::KEY_MESSAGE)));
|
||||
}
|
||||
}
|
||||
@@ -306,6 +307,7 @@ TEST_F(WVDrmPluginTest, GeneratesKeyRequests) {
|
||||
&keyRequestType);
|
||||
ASSERT_EQ(OK, res);
|
||||
EXPECT_THAT(request, ElementsAreArray(requestRaw, kRequestSize));
|
||||
EXPECT_EQ(DrmPlugin::kKeyRequestType_Initial, keyRequestType);
|
||||
EXPECT_STREQ(kDefaultUrl, defaultUrl.string());
|
||||
|
||||
res = plugin.getKeyRequest(sessionId, initData, mimeType,
|
||||
@@ -313,6 +315,7 @@ TEST_F(WVDrmPluginTest, GeneratesKeyRequests) {
|
||||
request, defaultUrl, &keyRequestType);
|
||||
ASSERT_EQ(OK, res);
|
||||
EXPECT_THAT(request, ElementsAreArray(requestRaw, kRequestSize));
|
||||
EXPECT_EQ(DrmPlugin::kKeyRequestType_Renewal, keyRequestType);
|
||||
EXPECT_STREQ(kDefaultUrl, defaultUrl.string());
|
||||
|
||||
res = plugin.getKeyRequest(keySetId, initData, mimeType,
|
||||
@@ -320,6 +323,7 @@ TEST_F(WVDrmPluginTest, GeneratesKeyRequests) {
|
||||
request, defaultUrl, &keyRequestType);
|
||||
ASSERT_EQ(OK, res);
|
||||
EXPECT_THAT(request, ElementsAreArray(requestRaw, kRequestSize));
|
||||
EXPECT_EQ(DrmPlugin::kKeyRequestType_Release, keyRequestType);
|
||||
EXPECT_STREQ(kDefaultUrl, defaultUrl.string());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user