Chromium Code Reviews| 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 |