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/mojo/services/mojo_cdm.h" | 5 #include "media/mojo/services/mojo_cdm.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 24 matching lines...) Expand all Loading... |
35 const GURL& security_origin, | 35 const GURL& security_origin, |
36 const media::CdmConfig& cdm_config, | 36 const media::CdmConfig& cdm_config, |
37 interfaces::ContentDecryptionModulePtr remote_cdm, | 37 interfaces::ContentDecryptionModulePtr remote_cdm, |
38 const media::SessionMessageCB& session_message_cb, | 38 const media::SessionMessageCB& session_message_cb, |
39 const media::SessionClosedCB& session_closed_cb, | 39 const media::SessionClosedCB& session_closed_cb, |
40 const media::LegacySessionErrorCB& legacy_session_error_cb, | 40 const media::LegacySessionErrorCB& legacy_session_error_cb, |
41 const media::SessionKeysChangeCB& session_keys_change_cb, | 41 const media::SessionKeysChangeCB& session_keys_change_cb, |
42 const media::SessionExpirationUpdateCB& session_expiration_update_cb, | 42 const media::SessionExpirationUpdateCB& session_expiration_update_cb, |
43 const media::CdmCreatedCB& cdm_created_cb) { | 43 const media::CdmCreatedCB& cdm_created_cb) { |
44 scoped_refptr<MojoCdm> mojo_cdm( | 44 scoped_refptr<MojoCdm> mojo_cdm( |
45 new MojoCdm(remote_cdm.Pass(), session_message_cb, session_closed_cb, | 45 new MojoCdm(std::move(remote_cdm), session_message_cb, session_closed_cb, |
46 legacy_session_error_cb, session_keys_change_cb, | 46 legacy_session_error_cb, session_keys_change_cb, |
47 session_expiration_update_cb)); | 47 session_expiration_update_cb)); |
48 | 48 |
49 // |mojo_cdm| ownership is passed to the promise. | 49 // |mojo_cdm| ownership is passed to the promise. |
50 scoped_ptr<CdmInitializedPromise> promise( | 50 scoped_ptr<CdmInitializedPromise> promise( |
51 new CdmInitializedPromise(cdm_created_cb, mojo_cdm)); | 51 new CdmInitializedPromise(cdm_created_cb, mojo_cdm)); |
52 | 52 |
53 mojo_cdm->InitializeCdm(key_system, security_origin, cdm_config, | 53 mojo_cdm->InitializeCdm(key_system, security_origin, cdm_config, |
54 promise.Pass()); | 54 std::move(promise)); |
55 } | 55 } |
56 | 56 |
57 MojoCdm::MojoCdm(interfaces::ContentDecryptionModulePtr remote_cdm, | 57 MojoCdm::MojoCdm(interfaces::ContentDecryptionModulePtr remote_cdm, |
58 const SessionMessageCB& session_message_cb, | 58 const SessionMessageCB& session_message_cb, |
59 const SessionClosedCB& session_closed_cb, | 59 const SessionClosedCB& session_closed_cb, |
60 const LegacySessionErrorCB& legacy_session_error_cb, | 60 const LegacySessionErrorCB& legacy_session_error_cb, |
61 const SessionKeysChangeCB& session_keys_change_cb, | 61 const SessionKeysChangeCB& session_keys_change_cb, |
62 const SessionExpirationUpdateCB& session_expiration_update_cb) | 62 const SessionExpirationUpdateCB& session_expiration_update_cb) |
63 : remote_cdm_(remote_cdm.Pass()), | 63 : remote_cdm_(std::move(remote_cdm)), |
64 binding_(this), | 64 binding_(this), |
65 cdm_id_(CdmContext::kInvalidCdmId), | 65 cdm_id_(CdmContext::kInvalidCdmId), |
66 session_message_cb_(session_message_cb), | 66 session_message_cb_(session_message_cb), |
67 session_closed_cb_(session_closed_cb), | 67 session_closed_cb_(session_closed_cb), |
68 legacy_session_error_cb_(legacy_session_error_cb), | 68 legacy_session_error_cb_(legacy_session_error_cb), |
69 session_keys_change_cb_(session_keys_change_cb), | 69 session_keys_change_cb_(session_keys_change_cb), |
70 session_expiration_update_cb_(session_expiration_update_cb), | 70 session_expiration_update_cb_(session_expiration_update_cb), |
71 weak_factory_(this) { | 71 weak_factory_(this) { |
72 DVLOG(1) << __FUNCTION__; | 72 DVLOG(1) << __FUNCTION__; |
73 DCHECK(!session_message_cb_.is_null()); | 73 DCHECK(!session_message_cb_.is_null()); |
74 DCHECK(!session_closed_cb_.is_null()); | 74 DCHECK(!session_closed_cb_.is_null()); |
75 DCHECK(!legacy_session_error_cb_.is_null()); | 75 DCHECK(!legacy_session_error_cb_.is_null()); |
76 DCHECK(!session_keys_change_cb_.is_null()); | 76 DCHECK(!session_keys_change_cb_.is_null()); |
77 DCHECK(!session_expiration_update_cb_.is_null()); | 77 DCHECK(!session_expiration_update_cb_.is_null()); |
78 | 78 |
79 interfaces::ContentDecryptionModuleClientPtr client_ptr; | 79 interfaces::ContentDecryptionModuleClientPtr client_ptr; |
80 binding_.Bind(GetProxy(&client_ptr)); | 80 binding_.Bind(GetProxy(&client_ptr)); |
81 remote_cdm_->SetClient(client_ptr.Pass()); | 81 remote_cdm_->SetClient(std::move(client_ptr)); |
82 } | 82 } |
83 | 83 |
84 MojoCdm::~MojoCdm() { | 84 MojoCdm::~MojoCdm() { |
85 DVLOG(1) << __FUNCTION__; | 85 DVLOG(1) << __FUNCTION__; |
86 } | 86 } |
87 | 87 |
88 void MojoCdm::InitializeCdm(const std::string& key_system, | 88 void MojoCdm::InitializeCdm(const std::string& key_system, |
89 const GURL& security_origin, | 89 const GURL& security_origin, |
90 const media::CdmConfig& cdm_config, | 90 const media::CdmConfig& cdm_config, |
91 scoped_ptr<CdmInitializedPromise> promise) { | 91 scoped_ptr<CdmInitializedPromise> promise) { |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
222 if (has_additional_usable_key && decryptor_) | 222 if (has_additional_usable_key && decryptor_) |
223 decryptor_->OnKeyAdded(); | 223 decryptor_->OnKeyAdded(); |
224 | 224 |
225 media::CdmKeysInfo key_data; | 225 media::CdmKeysInfo key_data; |
226 key_data.reserve(keys_info.size()); | 226 key_data.reserve(keys_info.size()); |
227 for (size_t i = 0; i < keys_info.size(); ++i) { | 227 for (size_t i = 0; i < keys_info.size(); ++i) { |
228 key_data.push_back( | 228 key_data.push_back( |
229 keys_info[i].To<scoped_ptr<media::CdmKeyInformation>>().release()); | 229 keys_info[i].To<scoped_ptr<media::CdmKeyInformation>>().release()); |
230 } | 230 } |
231 session_keys_change_cb_.Run(session_id, has_additional_usable_key, | 231 session_keys_change_cb_.Run(session_id, has_additional_usable_key, |
232 key_data.Pass()); | 232 std::move(key_data)); |
233 } | 233 } |
234 | 234 |
235 void MojoCdm::OnSessionExpirationUpdate(const mojo::String& session_id, | 235 void MojoCdm::OnSessionExpirationUpdate(const mojo::String& session_id, |
236 double new_expiry_time_sec) { | 236 double new_expiry_time_sec) { |
237 DVLOG(2) << __FUNCTION__; | 237 DVLOG(2) << __FUNCTION__; |
238 session_expiration_update_cb_.Run( | 238 session_expiration_update_cb_.Run( |
239 session_id, base::Time::FromDoubleT(new_expiry_time_sec)); | 239 session_id, base::Time::FromDoubleT(new_expiry_time_sec)); |
240 } | 240 } |
241 | 241 |
242 void MojoCdm::OnCdmInitialized(scoped_ptr<CdmInitializedPromise> promise, | 242 void MojoCdm::OnCdmInitialized(scoped_ptr<CdmInitializedPromise> promise, |
243 interfaces::CdmPromiseResultPtr result, | 243 interfaces::CdmPromiseResultPtr result, |
244 int cdm_id, | 244 int cdm_id, |
245 interfaces::DecryptorPtr decryptor) { | 245 interfaces::DecryptorPtr decryptor) { |
246 DVLOG(2) << __FUNCTION__ << " cdm_id: " << cdm_id; | 246 DVLOG(2) << __FUNCTION__ << " cdm_id: " << cdm_id; |
247 if (!result->success) { | 247 if (!result->success) { |
248 RejectPromise(promise.Pass(), result.Pass()); | 248 RejectPromise(std::move(promise), std::move(result)); |
249 return; | 249 return; |
250 } | 250 } |
251 | 251 |
252 DCHECK_NE(CdmContext::kInvalidCdmId, cdm_id); | 252 DCHECK_NE(CdmContext::kInvalidCdmId, cdm_id); |
253 cdm_id_ = cdm_id; | 253 cdm_id_ = cdm_id; |
254 decryptor_ptr_ = std::move(decryptor); | 254 decryptor_ptr_ = std::move(decryptor); |
255 promise->resolve(); | 255 promise->resolve(); |
256 } | 256 } |
257 | 257 |
258 } // namespace media | 258 } // namespace media |
OLD | NEW |