Rename CancelKeyRequest

(This is a merge of http://go/wvgerrit/10674 from the Widevine CDM
repository.)

Now that the CE CDM has CloseSession to handle closing sessions, we
can rename CancelKeyRequest on the CDM Engine & CDM Session to better
resemble its purpose and the name it is known by on Android.

Change-Id: I68d55b3be733579e5875ab33d8e94a62fe1f651d
This commit is contained in:
John "Juce" Bruce
2015-03-04 12:22:59 -08:00
parent 723d67c88f
commit 2ae1f717f3
9 changed files with 25 additions and 22 deletions

View File

@@ -56,7 +56,7 @@ class CdmEngine {
virtual CdmResponseType RestoreKey(const CdmSessionId& session_id, virtual CdmResponseType RestoreKey(const CdmSessionId& session_id,
const CdmKeySetId& key_set_id); const CdmKeySetId& key_set_id);
virtual CdmResponseType CancelKeyRequest(const CdmSessionId& session_id); virtual CdmResponseType RemoveKeys(const CdmSessionId& session_id);
// Construct valid renewal request for the current session keys. // Construct valid renewal request for the current session keys.
virtual CdmResponseType GenerateRenewalRequest(const CdmSessionId& session_id, virtual CdmResponseType GenerateRenewalRequest(const CdmSessionId& session_id,

View File

@@ -42,9 +42,6 @@ class CdmSession {
virtual CdmResponseType AddKey(const CdmKeyResponse& key_response, virtual CdmResponseType AddKey(const CdmKeyResponse& key_response,
CdmKeySetId* key_set_id); CdmKeySetId* key_set_id);
// CancelKeyRequest() - Cancel session.
virtual CdmResponseType CancelKeyRequest();
// Query session status // Query session status
virtual CdmResponseType QueryStatus(CdmQueryMap* key_info); virtual CdmResponseType QueryStatus(CdmQueryMap* key_info);
@@ -100,6 +97,13 @@ class CdmSession {
is_usage_update_needed_ = false; is_usage_update_needed_ = false;
} }
// ReleaseCrypto() - Closes the underlying crypto session but leaves this
// object alive. It is invalid to call any method that requires a crypto
// session after calling this. Since calling this renders this object mostly
// useless, it is preferable to simply delete this object (which will also
// release the underlying crypto session) rather than call this method.
virtual CdmResponseType ReleaseCrypto();
bool DeleteLicense(); bool DeleteLicense();
private: private:

View File

@@ -326,17 +326,17 @@ CdmResponseType CdmEngine::RestoreKey(
return sts; return sts;
} }
CdmResponseType CdmEngine::CancelKeyRequest(const CdmSessionId& session_id) { CdmResponseType CdmEngine::RemoveKeys(const CdmSessionId& session_id) {
LOGI("CdmEngine::CancelKeyRequest"); LOGI("CdmEngine::RemoveKeys");
CdmSessionMap::iterator iter = sessions_.find(session_id); CdmSessionMap::iterator iter = sessions_.find(session_id);
if (iter == sessions_.end()) { if (iter == sessions_.end()) {
LOGE("CdmEngine::CancelKeyRequest: session_id not found = %s", LOGE("CdmEngine::RemoveKeys: session_id not found = %s",
session_id.c_str()); session_id.c_str());
return KEY_ERROR; return KEY_ERROR;
} }
iter->second->CancelKeyRequest(); iter->second->ReleaseCrypto();
return NO_ERROR; return NO_ERROR;
} }

View File

@@ -335,12 +335,6 @@ CdmResponseType CdmSession::QueryKeyControlInfo(CdmQueryMap* key_info) {
return NO_ERROR; return NO_ERROR;
} }
// CancelKeyRequest() - Cancel session.
CdmResponseType CdmSession::CancelKeyRequest() {
crypto_session_->Close();
return NO_ERROR;
}
// Decrypt() - Accept encrypted buffer and return decrypted data. // Decrypt() - Accept encrypted buffer and return decrypted data.
CdmResponseType CdmSession::Decrypt(const CdmDecryptionParameters& params) { CdmResponseType CdmSession::Decrypt(const CdmDecryptionParameters& params) {
if (crypto_session_.get() == NULL || !crypto_session_->IsOpen()) if (crypto_session_.get() == NULL || !crypto_session_->IsOpen())
@@ -632,4 +626,9 @@ CdmResponseType CdmSession::UpdateUsageInformation() {
return crypto_session_->UpdateUsageInformation(); return crypto_session_->UpdateUsageInformation();
} }
CdmResponseType CdmSession::ReleaseCrypto() {
crypto_session_->Close();
return NO_ERROR;
}
} // namespace wvcdm } // namespace wvcdm

View File

@@ -53,7 +53,7 @@ class WvContentDecryptionModule : public TimerHandler {
const CdmKeySetId& key_set_id); const CdmKeySetId& key_set_id);
// Cancel session // Cancel session
virtual CdmResponseType CancelKeyRequest(const CdmSessionId& session_id); virtual CdmResponseType RemoveKeys(const CdmSessionId& session_id);
// Query system information // Query system information
virtual CdmResponseType QueryStatus(CdmQueryMap* key_info); virtual CdmResponseType QueryStatus(CdmQueryMap* key_info);

View File

@@ -113,9 +113,9 @@ CdmResponseType WvContentDecryptionModule::RestoreKey(
return sts; return sts;
} }
CdmResponseType WvContentDecryptionModule::CancelKeyRequest( CdmResponseType WvContentDecryptionModule::RemoveKeys(
const CdmSessionId& session_id) { const CdmSessionId& session_id) {
return cdm_engine_->CancelKeyRequest(session_id); return cdm_engine_->RemoveKeys(session_id);
} }
CdmResponseType WvContentDecryptionModule::QueryStatus(CdmQueryMap* key_info) { CdmResponseType WvContentDecryptionModule::QueryStatus(CdmQueryMap* key_info) {

View File

@@ -1196,7 +1196,7 @@ TEST_F(WvCdmRequestLicenseTest, RemoveKeys) {
ASSERT_EQ(NO_ERROR, decryptor_.OpenSession(g_key_system, NULL, &session_id_)); ASSERT_EQ(NO_ERROR, decryptor_.OpenSession(g_key_system, NULL, &session_id_));
GenerateKeyRequest(g_key_id, kLicenseTypeStreaming); GenerateKeyRequest(g_key_id, kLicenseTypeStreaming);
VerifyKeyRequestResponse(g_license_server, g_client_auth, false); VerifyKeyRequestResponse(g_license_server, g_client_auth, false);
ASSERT_EQ(NO_ERROR, decryptor_.CancelKeyRequest(session_id_)); ASSERT_EQ(NO_ERROR, decryptor_.RemoveKeys(session_id_));
ASSERT_EQ(NO_ERROR, decryptor_.CloseSession(session_id_)); ASSERT_EQ(NO_ERROR, decryptor_.CloseSession(session_id_));
} }

View File

@@ -282,7 +282,7 @@ status_t WVDrmPlugin::provideKeyResponse(
status_t WVDrmPlugin::removeKeys(const Vector<uint8_t>& sessionId) { status_t WVDrmPlugin::removeKeys(const Vector<uint8_t>& sessionId) {
CdmSessionId cdmSessionId(sessionId.begin(), sessionId.end()); CdmSessionId cdmSessionId(sessionId.begin(), sessionId.end());
CdmResponseType res = mCDM->CancelKeyRequest(cdmSessionId); CdmResponseType res = mCDM->RemoveKeys(cdmSessionId);
return mapAndNotifyOfCdmResponseType(sessionId, res); return mapAndNotifyOfCdmResponseType(sessionId, res);
} }

View File

@@ -45,7 +45,7 @@ class MockCDM : public WvContentDecryptionModule {
const CdmKeyResponse&, const CdmKeyResponse&,
CdmKeySetId*)); CdmKeySetId*));
MOCK_METHOD1(CancelKeyRequest, CdmResponseType(const CdmSessionId&)); MOCK_METHOD1(RemoveKeys, CdmResponseType(const CdmSessionId&));
MOCK_METHOD2(RestoreKey, CdmResponseType(const CdmSessionId&, MOCK_METHOD2(RestoreKey, CdmResponseType(const CdmSessionId&,
const CdmKeySetId&)); const CdmKeySetId&));
@@ -439,12 +439,12 @@ TEST_F(WVDrmPluginTest, HandlesPrivacyCertCaseOfAddKey) {
ASSERT_EQ(OK, res); ASSERT_EQ(OK, res);
} }
TEST_F(WVDrmPluginTest, CancelsKeyRequests) { TEST_F(WVDrmPluginTest, RemovesKeys) {
StrictMock<MockCDM> cdm; StrictMock<MockCDM> cdm;
StrictMock<MockCrypto> crypto; StrictMock<MockCrypto> crypto;
WVDrmPlugin plugin(&cdm, &crypto); WVDrmPlugin plugin(&cdm, &crypto);
EXPECT_CALL(cdm, CancelKeyRequest(cdmSessionId)) EXPECT_CALL(cdm, RemoveKeys(cdmSessionId))
.Times(1); .Times(1);
status_t res = plugin.removeKeys(sessionId); status_t res = plugin.removeKeys(sessionId);