Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(842)

Unified Diff: media/blink/webcontentdecryptionmodulesession_impl.cc

Issue 2831963003: EME: Allow temporary sessions to be removed for ClearKey only. (Closed)
Patch Set: rebase Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/blink/webcontentdecryptionmodulesession_impl.h ('k') | media/cdm/aes_decryptor.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/blink/webcontentdecryptionmodulesession_impl.cc
diff --git a/media/blink/webcontentdecryptionmodulesession_impl.cc b/media/blink/webcontentdecryptionmodulesession_impl.cc
index c7512325e7c445587b9b4a1d06ccf264f05fcd6f..7460c72850ecc7684be73e998093651facfee6b1 100644
--- a/media/blink/webcontentdecryptionmodulesession_impl.cc
+++ b/media/blink/webcontentdecryptionmodulesession_impl.cc
@@ -252,6 +252,7 @@ WebContentDecryptionModuleSessionImpl::WebContentDecryptionModuleSessionImpl(
: adapter_(adapter),
has_close_been_called_(false),
is_closed_(false),
+ is_persistent_session_(false),
weak_ptr_factory_(this) {}
WebContentDecryptionModuleSessionImpl::
@@ -357,8 +358,11 @@ void WebContentDecryptionModuleSessionImpl::InitializeNewSession(
// 10.8 Let cdm be the CDM instance represented by this object's cdm
// instance value.
// 10.9 Use the cdm to execute the following steps:
+ CdmSessionType cdm_session_type = convertSessionType(session_type);
+ is_persistent_session_ =
+ cdm_session_type != CdmSessionType::TEMPORARY_SESSION;
adapter_->InitializeNewSession(
- eme_init_data_type, sanitized_init_data, convertSessionType(session_type),
+ eme_init_data_type, sanitized_init_data, cdm_session_type,
std::unique_ptr<NewSessionCdmPromise>(new NewSessionCdmResultPromise(
result, adapter_->GetKeySystemUMAPrefix(), kGenerateRequestUMAName,
base::Bind(
@@ -391,6 +395,7 @@ void WebContentDecryptionModuleSessionImpl::Load(
// TODO(jrummell): Now that there are 2 types of persistent sessions, the
// session type should be passed from blink. Type should also be passed in the
// constructor (and removed from initializeNewSession()).
+ is_persistent_session_ = true;
adapter_->LoadSession(
CdmSessionType::PERSISTENT_LICENSE_SESSION, sanitized_session_id,
std::unique_ptr<NewSessionCdmPromise>(new NewSessionCdmResultPromise(
@@ -459,6 +464,16 @@ void WebContentDecryptionModuleSessionImpl::Remove(
blink::WebContentDecryptionModuleResult result) {
DCHECK(!session_id_.empty());
DCHECK(thread_checker_.CalledOnValidThread());
+
+ // TODO(http://crbug.com/616166). Once all supported CDMs allow remove() on
+ // temporary sessions, remove this code.
+ if (!is_persistent_session_ && !IsClearKey(adapter_->GetKeySystem())) {
+ result.CompleteWithError(
+ blink::kWebContentDecryptionModuleExceptionTypeError, 0,
+ "remove() on temporary sessions is not supported by this key system.");
+ return;
+ }
+
adapter_->RemoveSession(
session_id_,
std::unique_ptr<SimpleCdmPromise>(new CdmResultPromise<>(
« no previous file with comments | « media/blink/webcontentdecryptionmodulesession_impl.h ('k') | media/cdm/aes_decryptor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698