From 2ae1f717f318f449f4fb7b54739c9e22692a268f Mon Sep 17 00:00:00 2001 From: "John \"Juce\" Bruce" Date: Wed, 4 Mar 2015 12:22:59 -0800 Subject: [PATCH] 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 --- libwvdrmengine/cdm/core/include/cdm_engine.h | 2 +- libwvdrmengine/cdm/core/include/cdm_session.h | 10 +++++++--- libwvdrmengine/cdm/core/src/cdm_engine.cpp | 8 ++++---- libwvdrmengine/cdm/core/src/cdm_session.cpp | 11 +++++------ .../cdm/include/wv_content_decryption_module.h | 2 +- .../cdm/src/wv_content_decryption_module.cpp | 4 ++-- libwvdrmengine/cdm/test/request_license_test.cpp | 2 +- libwvdrmengine/mediadrm/src/WVDrmPlugin.cpp | 2 +- libwvdrmengine/mediadrm/test/WVDrmPlugin_test.cpp | 6 +++--- 9 files changed, 25 insertions(+), 22 deletions(-) diff --git a/libwvdrmengine/cdm/core/include/cdm_engine.h b/libwvdrmengine/cdm/core/include/cdm_engine.h index 4da639ee..d7b8bbc6 100644 --- a/libwvdrmengine/cdm/core/include/cdm_engine.h +++ b/libwvdrmengine/cdm/core/include/cdm_engine.h @@ -56,7 +56,7 @@ class CdmEngine { virtual CdmResponseType RestoreKey(const CdmSessionId& session_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. virtual CdmResponseType GenerateRenewalRequest(const CdmSessionId& session_id, diff --git a/libwvdrmengine/cdm/core/include/cdm_session.h b/libwvdrmengine/cdm/core/include/cdm_session.h index 64ff516d..1635ec6a 100644 --- a/libwvdrmengine/cdm/core/include/cdm_session.h +++ b/libwvdrmengine/cdm/core/include/cdm_session.h @@ -42,9 +42,6 @@ class CdmSession { virtual CdmResponseType AddKey(const CdmKeyResponse& key_response, CdmKeySetId* key_set_id); - // CancelKeyRequest() - Cancel session. - virtual CdmResponseType CancelKeyRequest(); - // Query session status virtual CdmResponseType QueryStatus(CdmQueryMap* key_info); @@ -100,6 +97,13 @@ class CdmSession { 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(); private: diff --git a/libwvdrmengine/cdm/core/src/cdm_engine.cpp b/libwvdrmengine/cdm/core/src/cdm_engine.cpp index c470b704..cf1d1c9a 100644 --- a/libwvdrmengine/cdm/core/src/cdm_engine.cpp +++ b/libwvdrmengine/cdm/core/src/cdm_engine.cpp @@ -326,17 +326,17 @@ CdmResponseType CdmEngine::RestoreKey( return sts; } -CdmResponseType CdmEngine::CancelKeyRequest(const CdmSessionId& session_id) { - LOGI("CdmEngine::CancelKeyRequest"); +CdmResponseType CdmEngine::RemoveKeys(const CdmSessionId& session_id) { + LOGI("CdmEngine::RemoveKeys"); CdmSessionMap::iterator iter = sessions_.find(session_id); if (iter == sessions_.end()) { - LOGE("CdmEngine::CancelKeyRequest: session_id not found = %s", + LOGE("CdmEngine::RemoveKeys: session_id not found = %s", session_id.c_str()); return KEY_ERROR; } - iter->second->CancelKeyRequest(); + iter->second->ReleaseCrypto(); return NO_ERROR; } diff --git a/libwvdrmengine/cdm/core/src/cdm_session.cpp b/libwvdrmengine/cdm/core/src/cdm_session.cpp index 6924d0c7..acfc2847 100644 --- a/libwvdrmengine/cdm/core/src/cdm_session.cpp +++ b/libwvdrmengine/cdm/core/src/cdm_session.cpp @@ -335,12 +335,6 @@ CdmResponseType CdmSession::QueryKeyControlInfo(CdmQueryMap* key_info) { return NO_ERROR; } -// CancelKeyRequest() - Cancel session. -CdmResponseType CdmSession::CancelKeyRequest() { - crypto_session_->Close(); - return NO_ERROR; -} - // Decrypt() - Accept encrypted buffer and return decrypted data. CdmResponseType CdmSession::Decrypt(const CdmDecryptionParameters& params) { if (crypto_session_.get() == NULL || !crypto_session_->IsOpen()) @@ -632,4 +626,9 @@ CdmResponseType CdmSession::UpdateUsageInformation() { return crypto_session_->UpdateUsageInformation(); } +CdmResponseType CdmSession::ReleaseCrypto() { + crypto_session_->Close(); + return NO_ERROR; +} + } // namespace wvcdm diff --git a/libwvdrmengine/cdm/include/wv_content_decryption_module.h b/libwvdrmengine/cdm/include/wv_content_decryption_module.h index 90f31027..42744209 100644 --- a/libwvdrmengine/cdm/include/wv_content_decryption_module.h +++ b/libwvdrmengine/cdm/include/wv_content_decryption_module.h @@ -53,7 +53,7 @@ class WvContentDecryptionModule : public TimerHandler { const CdmKeySetId& key_set_id); // Cancel session - virtual CdmResponseType CancelKeyRequest(const CdmSessionId& session_id); + virtual CdmResponseType RemoveKeys(const CdmSessionId& session_id); // Query system information virtual CdmResponseType QueryStatus(CdmQueryMap* key_info); diff --git a/libwvdrmengine/cdm/src/wv_content_decryption_module.cpp b/libwvdrmengine/cdm/src/wv_content_decryption_module.cpp index cd7b2436..c5fd34a1 100644 --- a/libwvdrmengine/cdm/src/wv_content_decryption_module.cpp +++ b/libwvdrmengine/cdm/src/wv_content_decryption_module.cpp @@ -113,9 +113,9 @@ CdmResponseType WvContentDecryptionModule::RestoreKey( return sts; } -CdmResponseType WvContentDecryptionModule::CancelKeyRequest( +CdmResponseType WvContentDecryptionModule::RemoveKeys( const CdmSessionId& session_id) { - return cdm_engine_->CancelKeyRequest(session_id); + return cdm_engine_->RemoveKeys(session_id); } CdmResponseType WvContentDecryptionModule::QueryStatus(CdmQueryMap* key_info) { diff --git a/libwvdrmengine/cdm/test/request_license_test.cpp b/libwvdrmengine/cdm/test/request_license_test.cpp index 0f8dc0e7..95ddf7db 100644 --- a/libwvdrmengine/cdm/test/request_license_test.cpp +++ b/libwvdrmengine/cdm/test/request_license_test.cpp @@ -1196,7 +1196,7 @@ TEST_F(WvCdmRequestLicenseTest, RemoveKeys) { ASSERT_EQ(NO_ERROR, decryptor_.OpenSession(g_key_system, NULL, &session_id_)); GenerateKeyRequest(g_key_id, kLicenseTypeStreaming); 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_)); } diff --git a/libwvdrmengine/mediadrm/src/WVDrmPlugin.cpp b/libwvdrmengine/mediadrm/src/WVDrmPlugin.cpp index fd7aefa3..73e251d8 100644 --- a/libwvdrmengine/mediadrm/src/WVDrmPlugin.cpp +++ b/libwvdrmengine/mediadrm/src/WVDrmPlugin.cpp @@ -282,7 +282,7 @@ status_t WVDrmPlugin::provideKeyResponse( status_t WVDrmPlugin::removeKeys(const Vector& sessionId) { CdmSessionId cdmSessionId(sessionId.begin(), sessionId.end()); - CdmResponseType res = mCDM->CancelKeyRequest(cdmSessionId); + CdmResponseType res = mCDM->RemoveKeys(cdmSessionId); return mapAndNotifyOfCdmResponseType(sessionId, res); } diff --git a/libwvdrmengine/mediadrm/test/WVDrmPlugin_test.cpp b/libwvdrmengine/mediadrm/test/WVDrmPlugin_test.cpp index e640401d..d1400494 100644 --- a/libwvdrmengine/mediadrm/test/WVDrmPlugin_test.cpp +++ b/libwvdrmengine/mediadrm/test/WVDrmPlugin_test.cpp @@ -45,7 +45,7 @@ class MockCDM : public WvContentDecryptionModule { const CdmKeyResponse&, CdmKeySetId*)); - MOCK_METHOD1(CancelKeyRequest, CdmResponseType(const CdmSessionId&)); + MOCK_METHOD1(RemoveKeys, CdmResponseType(const CdmSessionId&)); MOCK_METHOD2(RestoreKey, CdmResponseType(const CdmSessionId&, const CdmKeySetId&)); @@ -439,12 +439,12 @@ TEST_F(WVDrmPluginTest, HandlesPrivacyCertCaseOfAddKey) { ASSERT_EQ(OK, res); } -TEST_F(WVDrmPluginTest, CancelsKeyRequests) { +TEST_F(WVDrmPluginTest, RemovesKeys) { StrictMock cdm; StrictMock crypto; WVDrmPlugin plugin(&cdm, &crypto); - EXPECT_CALL(cdm, CancelKeyRequest(cdmSessionId)) + EXPECT_CALL(cdm, RemoveKeys(cdmSessionId)) .Times(1); status_t res = plugin.removeKeys(sessionId);