From 5f227dd85d5407620cd68c17caae6e1949cd06c9 Mon Sep 17 00:00:00 2001 From: Rahul Frias Date: Fri, 22 May 2015 10:23:25 -0700 Subject: [PATCH] Avoid throwing exceptions when sessions are closed [ Merge of http://go/wvgerrit/14404 ] Closing a non-existant (already closed) session results in an exception being thrown though mediaDrm. The mediaDrm plugin will now ignore errors when called though MediaDrm.closeSession. b/21122725 Change-Id: Ib1c48ade4bdb131195ee56ce2af32bf0cd2166da --- libwvdrmengine/mediadrm/src/WVDrmPlugin.cpp | 4 ++-- libwvdrmengine/mediadrm/test/WVDrmPlugin_test.cpp | 13 +++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/libwvdrmengine/mediadrm/src/WVDrmPlugin.cpp b/libwvdrmengine/mediadrm/src/WVDrmPlugin.cpp index 1e15d9af..d0cffb72 100644 --- a/libwvdrmengine/mediadrm/src/WVDrmPlugin.cpp +++ b/libwvdrmengine/mediadrm/src/WVDrmPlugin.cpp @@ -139,9 +139,9 @@ status_t WVDrmPlugin::openSession(Vector& sessionId) { status_t WVDrmPlugin::closeSession(const Vector& sessionId) { CdmSessionId cdmSessionId(sessionId.begin(), sessionId.end()); - CdmResponseType res = mCDM->CloseSession(cdmSessionId); + mCDM->CloseSession(cdmSessionId); mCryptoSessions.erase(cdmSessionId); - return mapAndNotifyOfCdmResponseType(sessionId, res); + return android::OK; } status_t WVDrmPlugin::getKeyRequest( diff --git a/libwvdrmengine/mediadrm/test/WVDrmPlugin_test.cpp b/libwvdrmengine/mediadrm/test/WVDrmPlugin_test.cpp index 31e5bb0a..94d71d55 100644 --- a/libwvdrmengine/mediadrm/test/WVDrmPlugin_test.cpp +++ b/libwvdrmengine/mediadrm/test/WVDrmPlugin_test.cpp @@ -220,6 +220,19 @@ TEST_F(WVDrmPluginTest, ClosesSessions) { ASSERT_EQ(OK, res); } +TEST_F(WVDrmPluginTest, ClosesSessionWithoutReturningError) { + StrictMock cdm; + StrictMock crypto; + WVDrmPlugin plugin(&cdm, &crypto); + + EXPECT_CALL(cdm, CloseSession(cdmSessionId)) + .WillOnce(Return(SESSION_NOT_FOUND_1)); + + status_t res = plugin.closeSession(sessionId); + + ASSERT_EQ(OK, res); +} + TEST_F(WVDrmPluginTest, GeneratesKeyRequests) { StrictMock cdm; StrictMock crypto;