| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "media/blink/cdm_session_adapter.h" | 5 #include "media/blink/cdm_session_adapter.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/logging.h" | 8 #include "base/logging.h" |
| 9 #include "base/memory/weak_ptr.h" | 9 #include "base/memory/weak_ptr.h" |
| 10 #include "base/stl_util.h" | 10 #include "base/stl_util.h" |
| (...skipping 11 matching lines...) Expand all Loading... |
| 22 const char kDot[] = "."; | 22 const char kDot[] = "."; |
| 23 | 23 |
| 24 CdmSessionAdapter::CdmSessionAdapter() : weak_ptr_factory_(this) { | 24 CdmSessionAdapter::CdmSessionAdapter() : weak_ptr_factory_(this) { |
| 25 } | 25 } |
| 26 | 26 |
| 27 CdmSessionAdapter::~CdmSessionAdapter() {} | 27 CdmSessionAdapter::~CdmSessionAdapter() {} |
| 28 | 28 |
| 29 bool CdmSessionAdapter::Initialize(CdmFactory* cdm_factory, | 29 bool CdmSessionAdapter::Initialize(CdmFactory* cdm_factory, |
| 30 const std::string& key_system, | 30 const std::string& key_system, |
| 31 const GURL& security_origin) { | 31 const GURL& security_origin) { |
| 32 key_system_ = key_system; |
| 32 key_system_uma_prefix_ = | 33 key_system_uma_prefix_ = |
| 33 kMediaEME + GetKeySystemNameForUMA(key_system) + kDot; | 34 kMediaEME + GetKeySystemNameForUMA(key_system) + kDot; |
| 34 | 35 |
| 35 base::WeakPtr<CdmSessionAdapter> weak_this = weak_ptr_factory_.GetWeakPtr(); | 36 base::WeakPtr<CdmSessionAdapter> weak_this = weak_ptr_factory_.GetWeakPtr(); |
| 36 media_keys_ = cdm_factory->Create( | 37 media_keys_ = cdm_factory->Create( |
| 37 key_system, security_origin, | 38 key_system, security_origin, |
| 38 base::Bind(&CdmSessionAdapter::OnSessionMessage, weak_this), | 39 base::Bind(&CdmSessionAdapter::OnSessionMessage, weak_this), |
| 39 base::Bind(&CdmSessionAdapter::OnSessionClosed, weak_this), | 40 base::Bind(&CdmSessionAdapter::OnSessionClosed, weak_this), |
| 40 base::Bind(&CdmSessionAdapter::OnSessionError, weak_this), | 41 base::Bind(&CdmSessionAdapter::OnSessionError, weak_this), |
| 41 base::Bind(&CdmSessionAdapter::OnSessionKeysChange, weak_this), | 42 base::Bind(&CdmSessionAdapter::OnSessionKeysChange, weak_this), |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 103 | 104 |
| 104 void CdmSessionAdapter::RemoveSession(const std::string& session_id, | 105 void CdmSessionAdapter::RemoveSession(const std::string& session_id, |
| 105 scoped_ptr<SimpleCdmPromise> promise) { | 106 scoped_ptr<SimpleCdmPromise> promise) { |
| 106 media_keys_->RemoveSession(session_id, promise.Pass()); | 107 media_keys_->RemoveSession(session_id, promise.Pass()); |
| 107 } | 108 } |
| 108 | 109 |
| 109 CdmContext* CdmSessionAdapter::GetCdmContext() { | 110 CdmContext* CdmSessionAdapter::GetCdmContext() { |
| 110 return media_keys_->GetCdmContext(); | 111 return media_keys_->GetCdmContext(); |
| 111 } | 112 } |
| 112 | 113 |
| 114 const std::string& CdmSessionAdapter::GetKeySystem() const { |
| 115 return key_system_; |
| 116 } |
| 117 |
| 113 const std::string& CdmSessionAdapter::GetKeySystemUMAPrefix() const { | 118 const std::string& CdmSessionAdapter::GetKeySystemUMAPrefix() const { |
| 114 return key_system_uma_prefix_; | 119 return key_system_uma_prefix_; |
| 115 } | 120 } |
| 116 | 121 |
| 117 void CdmSessionAdapter::OnSessionMessage( | 122 void CdmSessionAdapter::OnSessionMessage( |
| 118 const std::string& session_id, | 123 const std::string& session_id, |
| 119 MediaKeys::MessageType message_type, | 124 MediaKeys::MessageType message_type, |
| 120 const std::vector<uint8>& message, | 125 const std::vector<uint8>& message, |
| 121 const GURL& /* legacy_destination_url */) { | 126 const GURL& /* legacy_destination_url */) { |
| 122 WebContentDecryptionModuleSessionImpl* session = GetSession(session_id); | 127 WebContentDecryptionModuleSessionImpl* session = GetSession(session_id); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 166 WebContentDecryptionModuleSessionImpl* CdmSessionAdapter::GetSession( | 171 WebContentDecryptionModuleSessionImpl* CdmSessionAdapter::GetSession( |
| 167 const std::string& session_id) { | 172 const std::string& session_id) { |
| 168 // Since session objects may get garbage collected, it is possible that there | 173 // Since session objects may get garbage collected, it is possible that there |
| 169 // are events coming back from the CDM and the session has been unregistered. | 174 // are events coming back from the CDM and the session has been unregistered. |
| 170 // We can not tell if the CDM is firing events at sessions that never existed. | 175 // We can not tell if the CDM is firing events at sessions that never existed. |
| 171 SessionMap::iterator session = sessions_.find(session_id); | 176 SessionMap::iterator session = sessions_.find(session_id); |
| 172 return (session != sessions_.end()) ? session->second.get() : NULL; | 177 return (session != sessions_.end()) ? session->second.get() : NULL; |
| 173 } | 178 } |
| 174 | 179 |
| 175 } // namespace media | 180 } // namespace media |
| OLD | NEW |