Enable usage reporting
[ Merge from Widevine CDM repo of https://widevine-internal-review.googlesource.com/#/c/10171/ and https://widevine-internal-review.googlesource.com/#/c/10172/ ] Updated license_protocol.proto from constituent protos in google3 These changes make use of OEMCrypto v9 changes to support usage reporting. Usage reporting may be enabled for streaming (by means of secure stops) and offline playback by a provider session token specified in the license. Changes include periodically updating usage information for relevant sessions and reporting and releasing usage information as needed. The CDM has removed all references to Secure Stops. This change updates the Android API implementation to comply. b/11987015 Change-Id: Ibb6f2ced4ef20ee349ca1ae6412ce686b2b5d085
This commit is contained in:
@@ -376,12 +376,12 @@ status_t WVDrmPlugin::provideProvisionResponse(
|
||||
}
|
||||
|
||||
status_t WVDrmPlugin::getSecureStops(List<Vector<uint8_t> >& secureStops) {
|
||||
CdmSecureStops cdmSecureStops;
|
||||
CdmResponseType res = mCDM->GetSecureStops(&cdmSecureStops);
|
||||
CdmUsageInfo cdmUsageInfo;
|
||||
CdmResponseType res = mCDM->GetUsageInfo(&cdmUsageInfo);
|
||||
if (isCdmResponseTypeSuccess(res)) {
|
||||
secureStops.clear();
|
||||
for (CdmSecureStops::const_iterator iter = cdmSecureStops.begin();
|
||||
iter != cdmSecureStops.end();
|
||||
for (CdmUsageInfo::const_iterator iter = cdmUsageInfo.begin();
|
||||
iter != cdmUsageInfo.end();
|
||||
++iter) {
|
||||
const string& cdmStop = *iter;
|
||||
|
||||
@@ -396,10 +396,8 @@ status_t WVDrmPlugin::getSecureStops(List<Vector<uint8_t> >& secureStops) {
|
||||
}
|
||||
|
||||
status_t WVDrmPlugin::releaseSecureStops(const Vector<uint8_t>& ssRelease) {
|
||||
CdmSecureStopReleaseMessage cdmMessage(ssRelease.begin(), ssRelease.end());
|
||||
|
||||
CdmResponseType res = mCDM->ReleaseSecureStops(cdmMessage);
|
||||
|
||||
CdmUsageInfoReleaseMessage cdmMessage(ssRelease.begin(), ssRelease.end());
|
||||
CdmResponseType res = mCDM->ReleaseUsageInfo(cdmMessage);
|
||||
return mapCdmResponseType(res);
|
||||
}
|
||||
|
||||
|
||||
@@ -64,10 +64,10 @@ class MockCDM : public WvContentDecryptionModule {
|
||||
MOCK_METHOD3(HandleProvisioningResponse,
|
||||
CdmResponseType(CdmProvisioningResponse&, std::string*, std::string*));
|
||||
|
||||
MOCK_METHOD1(GetSecureStops, CdmResponseType(CdmSecureStops*));
|
||||
MOCK_METHOD1(GetUsageInfo, CdmResponseType(CdmUsageInfo*));
|
||||
|
||||
MOCK_METHOD1(ReleaseSecureStops,
|
||||
CdmResponseType(const CdmSecureStopReleaseMessage&));
|
||||
MOCK_METHOD1(ReleaseUsageInfo,
|
||||
CdmResponseType(const CdmUsageInfoReleaseMessage&));
|
||||
|
||||
MOCK_METHOD2(AttachEventListener, bool(const CdmSessionId&,
|
||||
WvCdmEventListener*));
|
||||
@@ -568,12 +568,12 @@ TEST_F(WVDrmPluginTest, GetsSecureStops) {
|
||||
}
|
||||
fclose(fp);
|
||||
|
||||
CdmSecureStops cdmStops;
|
||||
CdmUsageInfo cdmStops;
|
||||
for (uint32_t i = 0; i < kStopCount; ++i) {
|
||||
cdmStops.push_back(string(stopsRaw[i], stopsRaw[i] + kStopSize));
|
||||
}
|
||||
|
||||
EXPECT_CALL(cdm, GetSecureStops(_))
|
||||
EXPECT_CALL(cdm, GetUsageInfo(_))
|
||||
.WillOnce(DoAll(SetArgPointee<0>(cdmStops),
|
||||
Return(wvcdm::NO_ERROR)));
|
||||
|
||||
@@ -610,8 +610,8 @@ TEST_F(WVDrmPluginTest, ReleasesSecureStops) {
|
||||
Vector<uint8_t> message;
|
||||
message.appendArray(messageRaw, kMessageSize);
|
||||
|
||||
EXPECT_CALL(cdm, ReleaseSecureStops(ElementsAreArray(messageRaw,
|
||||
kMessageSize)))
|
||||
EXPECT_CALL(cdm, ReleaseUsageInfo(ElementsAreArray(messageRaw,
|
||||
kMessageSize)))
|
||||
.Times(1);
|
||||
|
||||
status_t res = plugin.releaseSecureStops(message);
|
||||
|
||||
Reference in New Issue
Block a user