Index: content/renderer/media/crypto/proxy_decryptor.cc |
diff --git a/content/renderer/media/crypto/proxy_decryptor.cc b/content/renderer/media/crypto/proxy_decryptor.cc |
index 28cd421e85ff099858007c541c025fd594b92bc0..b4e65e4ce759ea3ec4bd7f9e423925382b8055a1 100644 |
--- a/content/renderer/media/crypto/proxy_decryptor.cc |
+++ b/content/renderer/media/crypto/proxy_decryptor.cc |
@@ -102,21 +102,22 @@ bool ProxyDecryptor::GenerateKeyRequest(const std::string& content_type, |
const char kPrefixedApiPersistentSessionHeader[] = "PERSISTENT|"; |
const char kPrefixedApiLoadSessionHeader[] = "LOAD_SESSION|"; |
- bool loadSession = |
+ bool is_load_session = |
HasHeader(init_data, init_data_length, kPrefixedApiLoadSessionHeader); |
- bool persistent = HasHeader( |
+ bool is_create_persistent = HasHeader( |
init_data, init_data_length, kPrefixedApiPersistentSessionHeader); |
scoped_ptr<media::NewSessionCdmPromise> promise( |
new media::NewSessionCdmPromise( |
base::Bind(&ProxyDecryptor::SetSessionId, |
weak_ptr_factory_.GetWeakPtr(), |
- persistent || loadSession), |
+ is_create_persistent, |
+ is_load_session), |
base::Bind(&ProxyDecryptor::OnSessionError, |
weak_ptr_factory_.GetWeakPtr(), |
std::string()))); // No session id until created. |
- if (loadSession) { |
+ if (is_load_session) { |
media_keys_->LoadSession( |
std::string(reinterpret_cast<const char*>( |
init_data + strlen(kPrefixedApiLoadSessionHeader)), |
@@ -126,8 +127,8 @@ bool ProxyDecryptor::GenerateKeyRequest(const std::string& content_type, |
} |
media::MediaKeys::SessionType session_type = |
- persistent ? media::MediaKeys::PERSISTENT_SESSION |
- : media::MediaKeys::TEMPORARY_SESSION; |
+ is_create_persistent ? media::MediaKeys::PERSISTENT_SESSION |
+ : media::MediaKeys::TEMPORARY_SESSION; |
media_keys_->CreateSession( |
content_type, init_data, init_data_length, session_type, promise.Pass()); |
return true; |
@@ -286,9 +287,16 @@ void ProxyDecryptor::OnSessionError(const std::string& web_session_id, |
key_error_cb_.Run(web_session_id, error_code, system_code); |
} |
-void ProxyDecryptor::SetSessionId(bool persistent, |
+void ProxyDecryptor::SetSessionId(bool is_new_persistent_session, |
+ bool is_loaded_session, |
const std::string& web_session_id) { |
+ // Loaded sessions are considered persistent. |
+ bool persistent = is_new_persistent_session || is_loaded_session; |
ddorwin
2014/08/11 20:34:15
is_
jrummell
2014/08/13 21:18:06
Done.
|
active_sessions_.insert(std::make_pair(web_session_id, persistent)); |
+ |
+ // For LoadSession(), generate the SessionReady event. |
+ if (is_loaded_session) |
+ OnSessionReady(web_session_id); |
} |
} // namespace content |