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

Side by Side Diff: media/mojo/services/mojo_cdm_service.cc

Issue 2411573002: media: Use new wrapper types for media mojo interfaces (Closed)
Patch Set: comments addressed Created 4 years, 2 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 unified diff | Download patch
« no previous file with comments | « media/mojo/services/mojo_cdm_service.h ('k') | media/mojo/services/mojo_decryptor_service.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/mojo/services/mojo_cdm_service.h" 5 #include "media/mojo/services/mojo_cdm_service.h"
6 6
7 #include <map> 7 #include <map>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 g_cdm_manager.Get().UnregisterCdm(cdm_id_); 94 g_cdm_manager.Get().UnregisterCdm(cdm_id_);
95 95
96 if (context_) 96 if (context_)
97 context_->UnregisterCdm(cdm_id_); 97 context_->UnregisterCdm(cdm_id_);
98 } 98 }
99 99
100 void MojoCdmService::SetClient(mojom::ContentDecryptionModuleClientPtr client) { 100 void MojoCdmService::SetClient(mojom::ContentDecryptionModuleClientPtr client) {
101 client_ = std::move(client); 101 client_ = std::move(client);
102 } 102 }
103 103
104 void MojoCdmService::Initialize(const mojo::String& key_system, 104 void MojoCdmService::Initialize(const std::string& key_system,
105 const mojo::String& security_origin, 105 const std::string& security_origin,
106 mojom::CdmConfigPtr cdm_config, 106 mojom::CdmConfigPtr cdm_config,
107 const InitializeCallback& callback) { 107 const InitializeCallback& callback) {
108 DVLOG(1) << __FUNCTION__ << ": " << key_system; 108 DVLOG(1) << __FUNCTION__ << ": " << key_system;
109 DCHECK(!cdm_); 109 DCHECK(!cdm_);
110 110
111 auto weak_this = weak_factory_.GetWeakPtr(); 111 auto weak_this = weak_factory_.GetWeakPtr();
112 cdm_factory_->Create( 112 cdm_factory_->Create(
113 key_system, GURL(security_origin.get()), cdm_config.To<CdmConfig>(), 113 key_system, GURL(security_origin), cdm_config.To<CdmConfig>(),
114 base::Bind(&MojoCdmService::OnSessionMessage, weak_this), 114 base::Bind(&MojoCdmService::OnSessionMessage, weak_this),
115 base::Bind(&MojoCdmService::OnSessionClosed, weak_this), 115 base::Bind(&MojoCdmService::OnSessionClosed, weak_this),
116 base::Bind(&MojoCdmService::OnSessionKeysChange, weak_this), 116 base::Bind(&MojoCdmService::OnSessionKeysChange, weak_this),
117 base::Bind(&MojoCdmService::OnSessionExpirationUpdate, weak_this), 117 base::Bind(&MojoCdmService::OnSessionExpirationUpdate, weak_this),
118 base::Bind(&MojoCdmService::OnCdmCreated, weak_this, callback)); 118 base::Bind(&MojoCdmService::OnCdmCreated, weak_this, callback));
119 } 119 }
120 120
121 void MojoCdmService::SetServerCertificate( 121 void MojoCdmService::SetServerCertificate(
122 mojo::Array<uint8_t> certificate_data, 122 const std::vector<uint8_t>& certificate_data,
123 const SetServerCertificateCallback& callback) { 123 const SetServerCertificateCallback& callback) {
124 DVLOG(2) << __FUNCTION__; 124 DVLOG(2) << __FUNCTION__;
125 cdm_->SetServerCertificate(certificate_data.storage(), 125 cdm_->SetServerCertificate(certificate_data,
126 base::MakeUnique<SimpleMojoCdmPromise>(callback)); 126 base::MakeUnique<SimpleMojoCdmPromise>(callback));
127 } 127 }
128 128
129 void MojoCdmService::CreateSessionAndGenerateRequest( 129 void MojoCdmService::CreateSessionAndGenerateRequest(
130 mojom::ContentDecryptionModule::SessionType session_type, 130 mojom::ContentDecryptionModule::SessionType session_type,
131 mojom::ContentDecryptionModule::InitDataType init_data_type, 131 mojom::ContentDecryptionModule::InitDataType init_data_type,
132 mojo::Array<uint8_t> init_data, 132 const std::vector<uint8_t>& init_data,
133 const CreateSessionAndGenerateRequestCallback& callback) { 133 const CreateSessionAndGenerateRequestCallback& callback) {
134 DVLOG(2) << __FUNCTION__; 134 DVLOG(2) << __FUNCTION__;
135 cdm_->CreateSessionAndGenerateRequest( 135 cdm_->CreateSessionAndGenerateRequest(
136 static_cast<MediaKeys::SessionType>(session_type), 136 static_cast<MediaKeys::SessionType>(session_type),
137 static_cast<EmeInitDataType>(init_data_type), init_data.storage(), 137 static_cast<EmeInitDataType>(init_data_type), init_data,
138 base::MakeUnique<NewSessionMojoCdmPromise>(callback)); 138 base::MakeUnique<NewSessionMojoCdmPromise>(callback));
139 } 139 }
140 140
141 void MojoCdmService::LoadSession( 141 void MojoCdmService::LoadSession(
142 mojom::ContentDecryptionModule::SessionType session_type, 142 mojom::ContentDecryptionModule::SessionType session_type,
143 const mojo::String& session_id, 143 const std::string& session_id,
144 const LoadSessionCallback& callback) { 144 const LoadSessionCallback& callback) {
145 DVLOG(2) << __FUNCTION__; 145 DVLOG(2) << __FUNCTION__;
146 cdm_->LoadSession(static_cast<MediaKeys::SessionType>(session_type), 146 cdm_->LoadSession(static_cast<MediaKeys::SessionType>(session_type),
147 session_id.To<std::string>(), 147 session_id,
148 base::MakeUnique<NewSessionMojoCdmPromise>(callback)); 148 base::MakeUnique<NewSessionMojoCdmPromise>(callback));
149 } 149 }
150 150
151 void MojoCdmService::UpdateSession(const mojo::String& session_id, 151 void MojoCdmService::UpdateSession(const std::string& session_id,
152 mojo::Array<uint8_t> response, 152 const std::vector<uint8_t>& response,
153 const UpdateSessionCallback& callback) { 153 const UpdateSessionCallback& callback) {
154 DVLOG(2) << __FUNCTION__; 154 DVLOG(2) << __FUNCTION__;
155 cdm_->UpdateSession( 155 cdm_->UpdateSession(
156 session_id.To<std::string>(), response.storage(), 156 session_id, response,
157 std::unique_ptr<SimpleCdmPromise>(new SimpleMojoCdmPromise(callback))); 157 std::unique_ptr<SimpleCdmPromise>(new SimpleMojoCdmPromise(callback)));
158 } 158 }
159 159
160 void MojoCdmService::CloseSession(const mojo::String& session_id, 160 void MojoCdmService::CloseSession(const std::string& session_id,
161 const CloseSessionCallback& callback) { 161 const CloseSessionCallback& callback) {
162 DVLOG(2) << __FUNCTION__; 162 DVLOG(2) << __FUNCTION__;
163 cdm_->CloseSession(session_id.To<std::string>(), 163 cdm_->CloseSession(session_id,
164 base::MakeUnique<SimpleMojoCdmPromise>(callback)); 164 base::MakeUnique<SimpleMojoCdmPromise>(callback));
165 } 165 }
166 166
167 void MojoCdmService::RemoveSession(const mojo::String& session_id, 167 void MojoCdmService::RemoveSession(const std::string& session_id,
168 const RemoveSessionCallback& callback) { 168 const RemoveSessionCallback& callback) {
169 DVLOG(2) << __FUNCTION__; 169 DVLOG(2) << __FUNCTION__;
170 cdm_->RemoveSession(session_id.To<std::string>(), 170 cdm_->RemoveSession(session_id,
171 base::MakeUnique<SimpleMojoCdmPromise>(callback)); 171 base::MakeUnique<SimpleMojoCdmPromise>(callback));
172 } 172 }
173 173
174 scoped_refptr<MediaKeys> MojoCdmService::GetCdm() { 174 scoped_refptr<MediaKeys> MojoCdmService::GetCdm() {
175 return cdm_; 175 return cdm_;
176 } 176 }
177 177
178 void MojoCdmService::OnCdmCreated(const InitializeCallback& callback, 178 void MojoCdmService::OnCdmCreated(const InitializeCallback& callback,
179 const scoped_refptr<MediaKeys>& cdm, 179 const scoped_refptr<MediaKeys>& cdm,
180 const std::string& error_message) { 180 const std::string& error_message) {
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
212 DVLOG(1) << __FUNCTION__ << ": CDM successfully created with ID " << cdm_id_; 212 DVLOG(1) << __FUNCTION__ << ": CDM successfully created with ID " << cdm_id_;
213 cdm_promise_result->success = true; 213 cdm_promise_result->success = true;
214 callback.Run(std::move(cdm_promise_result), cdm_id_, 214 callback.Run(std::move(cdm_promise_result), cdm_id_,
215 std::move(decryptor_service)); 215 std::move(decryptor_service));
216 } 216 }
217 217
218 void MojoCdmService::OnSessionMessage(const std::string& session_id, 218 void MojoCdmService::OnSessionMessage(const std::string& session_id,
219 MediaKeys::MessageType message_type, 219 MediaKeys::MessageType message_type,
220 const std::vector<uint8_t>& message) { 220 const std::vector<uint8_t>& message) {
221 DVLOG(2) << __FUNCTION__ << "(" << message_type << ")"; 221 DVLOG(2) << __FUNCTION__ << "(" << message_type << ")";
222 client_->OnSessionMessage(session_id, 222 client_->OnSessionMessage(
223 static_cast<mojom::CdmMessageType>(message_type), 223 session_id, static_cast<mojom::CdmMessageType>(message_type), message);
224 mojo::Array<uint8_t>::From(message));
225 } 224 }
226 225
227 void MojoCdmService::OnSessionKeysChange(const std::string& session_id, 226 void MojoCdmService::OnSessionKeysChange(const std::string& session_id,
228 bool has_additional_usable_key, 227 bool has_additional_usable_key,
229 CdmKeysInfo keys_info) { 228 CdmKeysInfo keys_info) {
230 DVLOG(2) << __FUNCTION__ 229 DVLOG(2) << __FUNCTION__
231 << " has_additional_usable_key=" << has_additional_usable_key; 230 << " has_additional_usable_key=" << has_additional_usable_key;
232 231
233 mojo::Array<mojom::CdmKeyInformationPtr> keys_data; 232 std::vector<mojom::CdmKeyInformationPtr> keys_data;
234 for (auto* key : keys_info) 233 for (auto* key : keys_info)
235 keys_data.push_back(mojom::CdmKeyInformation::From(*key)); 234 keys_data.push_back(mojom::CdmKeyInformation::From(*key));
236 client_->OnSessionKeysChange(session_id, has_additional_usable_key, 235 client_->OnSessionKeysChange(session_id, has_additional_usable_key,
237 std::move(keys_data)); 236 std::move(keys_data));
238 } 237 }
239 238
240 void MojoCdmService::OnSessionExpirationUpdate( 239 void MojoCdmService::OnSessionExpirationUpdate(
241 const std::string& session_id, 240 const std::string& session_id,
242 const base::Time& new_expiry_time_sec) { 241 const base::Time& new_expiry_time_sec) {
243 DVLOG(2) << __FUNCTION__ << " expiry=" << new_expiry_time_sec; 242 DVLOG(2) << __FUNCTION__ << " expiry=" << new_expiry_time_sec;
244 client_->OnSessionExpirationUpdate(session_id, 243 client_->OnSessionExpirationUpdate(session_id,
245 new_expiry_time_sec.ToDoubleT()); 244 new_expiry_time_sec.ToDoubleT());
246 } 245 }
247 246
248 void MojoCdmService::OnSessionClosed(const std::string& session_id) { 247 void MojoCdmService::OnSessionClosed(const std::string& session_id) {
249 DVLOG(2) << __FUNCTION__; 248 DVLOG(2) << __FUNCTION__;
250 client_->OnSessionClosed(session_id); 249 client_->OnSessionClosed(session_id);
251 } 250 }
252 251
253 void MojoCdmService::OnDecryptorConnectionError() { 252 void MojoCdmService::OnDecryptorConnectionError() {
254 DVLOG(2) << __FUNCTION__; 253 DVLOG(2) << __FUNCTION__;
255 254
256 // MojoDecryptorService has lost connectivity to it's client, so it can be 255 // MojoDecryptorService has lost connectivity to it's client, so it can be
257 // freed. 256 // freed.
258 decryptor_.reset(); 257 decryptor_.reset();
259 } 258 }
260 259
261 } // namespace media 260 } // namespace media
OLDNEW
« no previous file with comments | « media/mojo/services/mojo_cdm_service.h ('k') | media/mojo/services/mojo_decryptor_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698