diff --git a/libwvdrmengine/cdm/include/wv_content_decryption_module.h b/libwvdrmengine/cdm/include/wv_content_decryption_module.h index 8d0b5d27..35cb0042 100644 --- a/libwvdrmengine/cdm/include/wv_content_decryption_module.h +++ b/libwvdrmengine/cdm/include/wv_content_decryption_module.h @@ -99,13 +99,17 @@ class WvContentDecryptionModule : public android::RefBase, public TimerHandler { // Secure stop related methods virtual CdmResponseType GetUsageInfo(const std::string& app_id, + const CdmIdentifier& identifier, CdmUsageInfo* usage_info); virtual CdmResponseType GetUsageInfo(const std::string& app_id, const CdmSecureStopId& ssid, + const CdmIdentifier& identifier, CdmUsageInfo* usage_info); - virtual CdmResponseType ReleaseAllUsageInfo(const std::string& app_id); + virtual CdmResponseType ReleaseAllUsageInfo(const std::string& app_id, + const CdmIdentifier& identifier); virtual CdmResponseType ReleaseUsageInfo( - const CdmUsageInfoReleaseMessage& message); + const CdmUsageInfoReleaseMessage& message, + const CdmIdentifier& identifier); // Accept encrypted buffer and decrypt data. // Decryption parameters that need to be specified are diff --git a/libwvdrmengine/cdm/src/wv_content_decryption_module.cpp b/libwvdrmengine/cdm/src/wv_content_decryption_module.cpp index 6668fc60..44bdecbd 100644 --- a/libwvdrmengine/cdm/src/wv_content_decryption_module.cpp +++ b/libwvdrmengine/cdm/src/wv_content_decryption_module.cpp @@ -303,8 +303,9 @@ CdmResponseType WvContentDecryptionModule::Unprovision( } CdmResponseType WvContentDecryptionModule::GetUsageInfo( - const std::string& app_id, CdmUsageInfo* usage_info) { - CdmEngine* cdm_engine = EnsureCdmForIdentifier(kDefaultCdmIdentifier); + const std::string& app_id, const CdmIdentifier& identifier, + CdmUsageInfo* usage_info) { + CdmEngine* cdm_engine = EnsureCdmForIdentifier(identifier); CdmResponseType sts; M_TIME( sts = cdm_engine->GetUsageInfo( @@ -319,8 +320,9 @@ CdmResponseType WvContentDecryptionModule::GetUsageInfo( CdmResponseType WvContentDecryptionModule::GetUsageInfo( const std::string& app_id, const CdmSecureStopId& ssid, + const CdmIdentifier& identifier, CdmUsageInfo* usage_info) { - CdmEngine* cdm_engine = EnsureCdmForIdentifier(kDefaultCdmIdentifier); + CdmEngine* cdm_engine = EnsureCdmForIdentifier(identifier); CdmResponseType sts; M_TIME( sts = cdm_engine->GetUsageInfo( @@ -334,8 +336,8 @@ CdmResponseType WvContentDecryptionModule::GetUsageInfo( } CdmResponseType WvContentDecryptionModule::ReleaseAllUsageInfo( - const std::string& app_id) { - CdmEngine* cdm_engine = EnsureCdmForIdentifier(kDefaultCdmIdentifier); + const std::string& app_id, const CdmIdentifier& identifier) { + CdmEngine* cdm_engine = EnsureCdmForIdentifier(identifier); CdmResponseType sts; M_TIME( sts = cdm_engine->ReleaseAllUsageInfo( @@ -347,8 +349,9 @@ CdmResponseType WvContentDecryptionModule::ReleaseAllUsageInfo( } CdmResponseType WvContentDecryptionModule::ReleaseUsageInfo( - const CdmUsageInfoReleaseMessage& message) { - CdmEngine* cdm_engine = EnsureCdmForIdentifier(kDefaultCdmIdentifier); + const CdmUsageInfoReleaseMessage& message, + const CdmIdentifier& identifier) { + CdmEngine* cdm_engine = EnsureCdmForIdentifier(identifier); CdmResponseType sts; M_TIME( sts = cdm_engine->ReleaseUsageInfo( diff --git a/libwvdrmengine/cdm/test/cdm_extended_duration_test.cpp b/libwvdrmengine/cdm/test/cdm_extended_duration_test.cpp index 5f668317..8f8976ef 100644 --- a/libwvdrmengine/cdm/test/cdm_extended_duration_test.cpp +++ b/libwvdrmengine/cdm/test/cdm_extended_duration_test.cpp @@ -969,15 +969,17 @@ TEST_F(WvCdmExtendedDurationTest, UsageOverflowTest) { uint32_t num_usage_info = 0; CdmUsageInfo usage_info; CdmUsageInfoReleaseMessage release_msg; - CdmResponseType status = decryptor_.GetUsageInfo("", &usage_info); + CdmResponseType status = decryptor_.GetUsageInfo( + "", kDefaultCdmIdentifier, &usage_info); EXPECT_EQ(usage_info.empty() ? NO_ERROR : KEY_MESSAGE, status); while (usage_info.size() > 0) { for (size_t i = 0; i < usage_info.size(); ++i) { release_msg = GetUsageInfoResponse(g_license_server, g_client_auth, usage_info[i]); - EXPECT_EQ(NO_ERROR, decryptor_.ReleaseUsageInfo(release_msg)); + EXPECT_EQ(NO_ERROR, decryptor_.ReleaseUsageInfo(release_msg, + kDefaultCdmIdentifier)); } - status = decryptor_.GetUsageInfo("", &usage_info); + status = decryptor_.GetUsageInfo("", kDefaultCdmIdentifier, &usage_info); switch (status) { case KEY_MESSAGE: EXPECT_FALSE(usage_info.empty()); break; case NO_ERROR: EXPECT_TRUE(usage_info.empty()); break; @@ -1406,7 +1408,8 @@ TEST_P(WvCdmStreamingUsageReportTest, UsageTest) { uint32_t num_usage_info = 0; CdmUsageInfo usage_info; CdmUsageInfoReleaseMessage release_msg; - CdmResponseType status = decryptor_.GetUsageInfo("", &usage_info); + CdmResponseType status = decryptor_.GetUsageInfo( + "", kDefaultCdmIdentifier, &usage_info); EXPECT_EQ(usage_info.empty() ? NO_ERROR : KEY_MESSAGE, status); while (usage_info.size() > 0) { for (size_t i = 0; i < usage_info.size(); ++i) { @@ -1416,9 +1419,10 @@ TEST_P(WvCdmStreamingUsageReportTest, UsageTest) { expected_seconds_since_last_playback); release_msg = GetUsageInfoResponse(g_license_server, g_client_auth, usage_info[i]); - EXPECT_EQ(NO_ERROR, decryptor_.ReleaseUsageInfo(release_msg)); + EXPECT_EQ(NO_ERROR, decryptor_.ReleaseUsageInfo(release_msg, + kDefaultCdmIdentifier)); } - status = decryptor_.GetUsageInfo("", &usage_info); + status = decryptor_.GetUsageInfo("", kDefaultCdmIdentifier, &usage_info); switch (status) { case KEY_MESSAGE: EXPECT_FALSE(usage_info.empty()); diff --git a/libwvdrmengine/cdm/test/request_license_test.cpp b/libwvdrmengine/cdm/test/request_license_test.cpp index 08a34121..17cc037d 100644 --- a/libwvdrmengine/cdm/test/request_license_test.cpp +++ b/libwvdrmengine/cdm/test/request_license_test.cpp @@ -2540,7 +2540,8 @@ TEST_P(WvCdmUsageTest, WithClientId) { uint32_t num_usage_info = 0; CdmUsageInfo usage_info; CdmUsageInfoReleaseMessage release_msg; - CdmResponseType status = decryptor_.GetUsageInfo(app_id, &usage_info); + CdmResponseType status = decryptor_.GetUsageInfo( + app_id, kDefaultCdmIdentifier, &usage_info); EXPECT_EQ(usage_info.empty() ? NO_ERROR : KEY_MESSAGE, status); // Validate signed renewal request @@ -2571,7 +2572,8 @@ TEST_P(WvCdmUsageTest, WithClientId) { release_msg = GetUsageInfoResponse(g_license_server, g_client_auth, usage_info[0]); - EXPECT_EQ(NO_ERROR, decryptor_.ReleaseUsageInfo(release_msg)); + EXPECT_EQ(NO_ERROR, decryptor_.ReleaseUsageInfo(release_msg, + kDefaultCdmIdentifier)); } INSTANTIATE_TEST_CASE_P( @@ -2622,20 +2624,23 @@ TEST_F(WvCdmRequestLicenseTest, UsageInfoRetryTest) { uint32_t num_usage_info = 0; CdmUsageInfo usage_info; CdmUsageInfoReleaseMessage release_msg; - CdmResponseType status = decryptor_.GetUsageInfo(app_id, &usage_info); + CdmResponseType status = decryptor_.GetUsageInfo( + app_id, kDefaultCdmIdentifier, &usage_info); EXPECT_EQ(usage_info.empty() ? NO_ERROR : KEY_MESSAGE, status); // Discard and retry to verify usage reports can be generated multiple times // before release. - status = decryptor_.GetUsageInfo(app_id, &usage_info); + status = decryptor_.GetUsageInfo(app_id, kDefaultCdmIdentifier, &usage_info); EXPECT_EQ(usage_info.empty() ? NO_ERROR : KEY_MESSAGE, status); while (usage_info.size() > 0) { for (size_t i = 0; i < usage_info.size(); ++i) { release_msg = GetUsageInfoResponse(g_license_server, g_client_auth, usage_info[i]); - EXPECT_EQ(NO_ERROR, decryptor_.ReleaseUsageInfo(release_msg)); + EXPECT_EQ(NO_ERROR, decryptor_.ReleaseUsageInfo(release_msg, + kDefaultCdmIdentifier)); } - status = decryptor_.GetUsageInfo(app_id, &usage_info); + status = decryptor_.GetUsageInfo( + app_id, kDefaultCdmIdentifier, &usage_info); switch (status) { case KEY_MESSAGE: EXPECT_FALSE(usage_info.empty()); @@ -2718,15 +2723,19 @@ TEST_P(WvCdmUsageInfoTest, UsageInfo) { CdmUsageInfo usage_info; CdmUsageInfoReleaseMessage release_msg; CdmResponseType status = - decryptor_.GetUsageInfo(usage_info_data->app_id, &usage_info); + decryptor_.GetUsageInfo(usage_info_data->app_id, kDefaultCdmIdentifier, + &usage_info); EXPECT_EQ(usage_info.empty() ? NO_ERROR : KEY_MESSAGE, status); while (usage_info.size() > 0) { for (size_t i = 0; i < usage_info.size(); ++i) { release_msg = GetUsageInfoResponse(g_license_server, g_client_auth, usage_info[i]); - EXPECT_EQ(NO_ERROR, decryptor_.ReleaseUsageInfo(release_msg)); + EXPECT_EQ( + NO_ERROR, + decryptor_.ReleaseUsageInfo(release_msg, kDefaultCdmIdentifier)); } - status = decryptor_.GetUsageInfo(usage_info_data->app_id, &usage_info); + status = decryptor_.GetUsageInfo(usage_info_data->app_id, + kDefaultCdmIdentifier, &usage_info); EXPECT_EQ(usage_info.empty() ? NO_ERROR : KEY_MESSAGE, status); } } @@ -2795,25 +2804,46 @@ TEST_F(WvCdmRequestLicenseTest, UsageReleaseAllTest) { } CdmUsageInfo usage_info; - EXPECT_EQ(KEY_MESSAGE, decryptor_.GetUsageInfo(app_id_empty, &usage_info)); + EXPECT_EQ( + KEY_MESSAGE, + decryptor_.GetUsageInfo(app_id_empty, kDefaultCdmIdentifier, + &usage_info)); EXPECT_TRUE(usage_info.size() > 0); - EXPECT_EQ(KEY_MESSAGE, - decryptor_.GetUsageInfo(app_id_not_empty, &usage_info)); + EXPECT_EQ( + KEY_MESSAGE, + decryptor_.GetUsageInfo(app_id_not_empty, kDefaultCdmIdentifier, + &usage_info)); EXPECT_TRUE(usage_info.size() > 0); - EXPECT_EQ(NO_ERROR, decryptor_.ReleaseAllUsageInfo(app_id_not_empty)); + EXPECT_EQ( + NO_ERROR, + decryptor_.ReleaseAllUsageInfo(app_id_not_empty, kDefaultCdmIdentifier)); - EXPECT_EQ(NO_ERROR, decryptor_.GetUsageInfo(app_id_not_empty, &usage_info)); + EXPECT_EQ( + NO_ERROR, + decryptor_.GetUsageInfo(app_id_not_empty, kDefaultCdmIdentifier, + &usage_info)); EXPECT_TRUE(usage_info.empty()); - EXPECT_EQ(KEY_MESSAGE, decryptor_.GetUsageInfo(app_id_empty, &usage_info)); + EXPECT_EQ( + KEY_MESSAGE, + decryptor_.GetUsageInfo(app_id_empty, kDefaultCdmIdentifier, + &usage_info)); EXPECT_TRUE(usage_info.size() > 0); - EXPECT_EQ(NO_ERROR, decryptor_.ReleaseAllUsageInfo(app_id_empty)); + EXPECT_EQ( + NO_ERROR, + decryptor_.ReleaseAllUsageInfo(app_id_empty, kDefaultCdmIdentifier)); - EXPECT_EQ(NO_ERROR, decryptor_.GetUsageInfo(app_id_not_empty, &usage_info)); + EXPECT_EQ( + NO_ERROR, + decryptor_.GetUsageInfo(app_id_not_empty, kDefaultCdmIdentifier, + &usage_info)); EXPECT_TRUE(usage_info.empty()); - EXPECT_EQ(NO_ERROR, decryptor_.GetUsageInfo(app_id_empty, &usage_info)); + EXPECT_EQ( + NO_ERROR, + decryptor_.GetUsageInfo(app_id_empty, kDefaultCdmIdentifier, + &usage_info)); EXPECT_TRUE(usage_info.empty()); } diff --git a/libwvdrmengine/mediadrm/src/WVDrmPlugin.cpp b/libwvdrmengine/mediadrm/src/WVDrmPlugin.cpp index 5a8603cc..e5e8bd56 100644 --- a/libwvdrmengine/mediadrm/src/WVDrmPlugin.cpp +++ b/libwvdrmengine/mediadrm/src/WVDrmPlugin.cpp @@ -424,7 +424,7 @@ status_t WVDrmPlugin::getSecureStop(const Vector& ssid, CdmUsageInfo cdmUsageInfo; CdmSecureStopId cdmSsid(ssid.begin(), ssid.end()); CdmResponseType res = mCDM->GetUsageInfo( - mPropertySet.app_id(), cdmSsid, &cdmUsageInfo); + mPropertySet.app_id(), cdmSsid, mCdmIdentifier, &cdmUsageInfo); if (isCdmResponseTypeSuccess(res)) { secureStop.clear(); for (CdmUsageInfo::const_iterator iter = cdmUsageInfo.begin(); @@ -442,7 +442,7 @@ status_t WVDrmPlugin::getSecureStop(const Vector& ssid, status_t WVDrmPlugin::getSecureStops(List >& secureStops) { CdmUsageInfo cdmUsageInfo; CdmResponseType res = - mCDM->GetUsageInfo(mPropertySet.app_id(), &cdmUsageInfo); + mCDM->GetUsageInfo(mPropertySet.app_id(), mCdmIdentifier, &cdmUsageInfo); if (isCdmResponseTypeSuccess(res)) { secureStops.clear(); for (CdmUsageInfo::const_iterator iter = cdmUsageInfo.begin(); @@ -457,7 +457,8 @@ status_t WVDrmPlugin::getSecureStops(List >& secureStops) { } status_t WVDrmPlugin::releaseAllSecureStops() { - CdmResponseType res = mCDM->ReleaseAllUsageInfo(mPropertySet.app_id()); + CdmResponseType res = mCDM->ReleaseAllUsageInfo(mPropertySet.app_id(), + mCdmIdentifier); return mapCdmResponseType(res); } @@ -466,7 +467,7 @@ status_t WVDrmPlugin::releaseSecureStops(const Vector& ssRelease) { return android::BAD_VALUE; } CdmUsageInfoReleaseMessage cdmMessage(ssRelease.begin(), ssRelease.end()); - CdmResponseType res = mCDM->ReleaseUsageInfo(cdmMessage); + CdmResponseType res = mCDM->ReleaseUsageInfo(cdmMessage, mCdmIdentifier); return mapCdmResponseType(res); } diff --git a/libwvdrmengine/mediadrm/src_hidl/WVDrmPlugin.cpp b/libwvdrmengine/mediadrm/src_hidl/WVDrmPlugin.cpp index bcbe9903..254ebf2c 100644 --- a/libwvdrmengine/mediadrm/src_hidl/WVDrmPlugin.cpp +++ b/libwvdrmengine/mediadrm/src_hidl/WVDrmPlugin.cpp @@ -533,12 +533,20 @@ Return WVDrmPlugin::getSecureStop( return Void(); } const std::vector id = toVector(secureStopId); + SecureStop secureStop; + + CdmIdentifier identifier; + status_t status = mCdmIdentifierBuilder.getCdmIdentifier(&identifier); + if (status != android::OK) { + _hidl_cb(toStatus(status), secureStop); + return Void(); + } + CdmUsageInfo cdmUsageInfo; CdmSecureStopId cdmSsId(id.begin(), id.end()); CdmResponseType res = mCDM->GetUsageInfo( - mPropertySet.app_id(), cdmSsId, &cdmUsageInfo); + mPropertySet.app_id(), cdmSsId, identifier, &cdmUsageInfo); - SecureStop secureStop; if (isCdmResponseTypeSuccess(res)) { std::vector cdmStopVec; for (CdmUsageInfo::const_iterator iter = cdmUsageInfo.begin(); @@ -557,10 +565,18 @@ Return WVDrmPlugin::getSecureStop( Return WVDrmPlugin::getSecureStops(getSecureStops_cb _hidl_cb) { std::list > secureStops; + std::vector secureStopsVec; + + CdmIdentifier identifier; + status_t status = mCdmIdentifierBuilder.getCdmIdentifier(&identifier); + if (status != android::OK) { + _hidl_cb(toStatus(status), toHidlVec(secureStopsVec)); + return Void(); + } CdmUsageInfo cdmUsageInfo; CdmResponseType res = - mCDM->GetUsageInfo(mPropertySet.app_id(), &cdmUsageInfo); + mCDM->GetUsageInfo(mPropertySet.app_id(), identifier, &cdmUsageInfo); if (isCdmResponseTypeSuccess(res)) { secureStops.clear(); @@ -572,7 +588,6 @@ Return WVDrmPlugin::getSecureStops(getSecureStops_cb _hidl_cb) { } } - std::vector secureStopsVec; std::list >::iterator iter = secureStops.begin(); while (iter != secureStops.end()) { SecureStop secureStop; @@ -586,7 +601,14 @@ Return WVDrmPlugin::getSecureStops(getSecureStops_cb _hidl_cb) { Return WVDrmPlugin::releaseAllSecureStops() { - CdmResponseType res = mCDM->ReleaseAllUsageInfo(mPropertySet.app_id()); + CdmIdentifier identifier; + status_t status = mCdmIdentifierBuilder.getCdmIdentifier(&identifier); + if (status != android::OK) { + return toStatus(status); + } + + CdmResponseType res = mCDM->ReleaseAllUsageInfo(mPropertySet.app_id(), + identifier); return toStatus(mapCdmResponseType(res)); } @@ -596,9 +618,16 @@ Return WVDrmPlugin::releaseSecureStop( if (!secureStopId.size()) { return Status::BAD_VALUE; } + + CdmIdentifier identifier; + status_t status = mCdmIdentifierBuilder.getCdmIdentifier(&identifier); + if (status != android::OK) { + return toStatus(status); + } + const std::vector ssRelease = toVector(secureStopId); CdmUsageInfoReleaseMessage cdmMessage(ssRelease.begin(), ssRelease.end()); - CdmResponseType res = mCDM->ReleaseUsageInfo(cdmMessage); + CdmResponseType res = mCDM->ReleaseUsageInfo(cdmMessage, identifier); return toStatus(mapCdmResponseType(res)); } diff --git a/libwvdrmengine/mediadrm/test/WVDrmPlugin_test.cpp b/libwvdrmengine/mediadrm/test/WVDrmPlugin_test.cpp index 8b1b5a88..85c9293d 100644 --- a/libwvdrmengine/mediadrm/test/WVDrmPlugin_test.cpp +++ b/libwvdrmengine/mediadrm/test/WVDrmPlugin_test.cpp @@ -164,17 +164,20 @@ class MockCDM : public WvContentDecryptionModule { MOCK_METHOD2(Unprovision, CdmResponseType(CdmSecurityLevel, const CdmIdentifier&)); - MOCK_METHOD2(GetUsageInfo, CdmResponseType(const std::string&, - CdmUsageInfo*)); - MOCK_METHOD3(GetUsageInfo, CdmResponseType(const std::string&, - const CdmSecureStopId&, + const CdmIdentifier&, CdmUsageInfo*)); - MOCK_METHOD1(ReleaseAllUsageInfo, CdmResponseType(const std::string&)); + MOCK_METHOD4(GetUsageInfo, CdmResponseType(const std::string&, + const CdmSecureStopId&, + const CdmIdentifier&, + CdmUsageInfo*)); - MOCK_METHOD1(ReleaseUsageInfo, - CdmResponseType(const CdmUsageInfoReleaseMessage&)); + MOCK_METHOD2(ReleaseAllUsageInfo, CdmResponseType(const std::string&, + const CdmIdentifier&)); + + MOCK_METHOD2(ReleaseUsageInfo, + CdmResponseType(const CdmUsageInfoReleaseMessage&, const CdmIdentifier&)); MOCK_METHOD1(IsValidServiceCertificate, bool(const std::string&)); }; @@ -946,8 +949,8 @@ TEST_F(WVDrmPluginTest, GetsSecureStops) { } const char* app_id = "my_app_id"; - EXPECT_CALL(*cdm, GetUsageInfo(StrEq(app_id), _)) - .WillOnce(DoAll(SetArgPointee<1>(cdmStops), + EXPECT_CALL(*cdm, GetUsageInfo(StrEq(app_id), _, _)) + .WillOnce(DoAll(SetArgPointee<2>(cdmStops), testing::Return(wvcdm::NO_ERROR))); std::list > stops; @@ -987,7 +990,7 @@ TEST_F(WVDrmPluginTest, ReleasesAllSecureStops) { StrictMock crypto; std::string appPackageName; - EXPECT_CALL(*cdm, ReleaseAllUsageInfo(StrEq(""))) + EXPECT_CALL(*cdm, ReleaseAllUsageInfo(StrEq(""), _)) .Times(1); WVDrmPlugin plugin(cdm.get(), appPackageName, &crypto, false); @@ -1015,7 +1018,8 @@ TEST_F(WVDrmPluginTest, ReleasesSecureStop) { message.assign(messageRaw, messageRaw + kMessageSize); EXPECT_CALL(*cdm, ReleaseUsageInfo(ElementsAreArray(messageRaw, - kMessageSize))) + kMessageSize), + _)) .Times(1); WVDrmPlugin plugin(cdm.get(), appPackageName, &crypto, false); diff --git a/libwvdrmengine/mediadrm/test/legacy_src/WVDrmPlugin_test.cpp b/libwvdrmengine/mediadrm/test/legacy_src/WVDrmPlugin_test.cpp index 286ec0d1..48aecd97 100644 --- a/libwvdrmengine/mediadrm/test/legacy_src/WVDrmPlugin_test.cpp +++ b/libwvdrmengine/mediadrm/test/legacy_src/WVDrmPlugin_test.cpp @@ -82,17 +82,20 @@ class MockCDM : public WvContentDecryptionModule { MOCK_METHOD2(Unprovision, CdmResponseType(CdmSecurityLevel, const CdmIdentifier&)); - MOCK_METHOD2(GetUsageInfo, CdmResponseType(const std::string&, - CdmUsageInfo*)); - MOCK_METHOD3(GetUsageInfo, CdmResponseType(const std::string&, - const CdmSecureStopId&, + const CdmIdentifier&, CdmUsageInfo*)); - MOCK_METHOD1(ReleaseAllUsageInfo, CdmResponseType(const std::string&)); + MOCK_METHOD4(GetUsageInfo, CdmResponseType(const std::string&, + const CdmSecureStopId&, + const CdmIdentifier&, + CdmUsageInfo*)); - MOCK_METHOD1(ReleaseUsageInfo, - CdmResponseType(const CdmUsageInfoReleaseMessage&)); + MOCK_METHOD2(ReleaseAllUsageInfo, CdmResponseType(const std::string&, + const CdmIdentifier&)); + + MOCK_METHOD2(ReleaseUsageInfo, + CdmResponseType(const CdmUsageInfoReleaseMessage&, const CdmIdentifier&)); MOCK_METHOD1(IsValidServiceCertificate, bool(const std::string&)); }; @@ -755,8 +758,8 @@ TEST_F(WVDrmPluginTest, GetsSecureStops) { cdmStops.push_back(string(stopsRaw[i], stopsRaw[i] + kStopSize)); } - EXPECT_CALL(*cdm, GetUsageInfo(StrEq(app_id), _)) - .WillOnce(DoAll(SetArgPointee<1>(cdmStops), + EXPECT_CALL(*cdm, GetUsageInfo(StrEq(app_id), _, _)) + .WillOnce(DoAll(SetArgPointee<2>(cdmStops), Return(wvcdm::NO_ERROR))); List > stops; @@ -786,7 +789,7 @@ TEST_F(WVDrmPluginTest, ReleasesAllSecureStops) { status_t res = plugin.setPropertyString(String8("appId"), String8("")); ASSERT_EQ(OK, res); - EXPECT_CALL(*cdm, ReleaseAllUsageInfo(StrEq(""))) + EXPECT_CALL(*cdm, ReleaseAllUsageInfo(StrEq(""), _)) .Times(1); res = plugin.releaseAllSecureStops(); @@ -808,7 +811,8 @@ TEST_F(WVDrmPluginTest, ReleasesSecureStops) { message.appendArray(messageRaw, kMessageSize); EXPECT_CALL(*cdm, ReleaseUsageInfo(ElementsAreArray(messageRaw, - kMessageSize))) + kMessageSize), + _)) .Times(1); status_t res = plugin.releaseSecureStops(message);