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 "content/renderer/media/cdm/proxy_media_keys.h" | 5 #include "content/renderer/media/cdm/proxy_media_keys.h" |
6 | 6 |
| 7 #include <utility> |
7 #include <vector> | 8 #include <vector> |
8 | 9 |
9 #include "base/logging.h" | 10 #include "base/logging.h" |
10 #include "base/stl_util.h" | 11 #include "base/stl_util.h" |
11 #include "content/renderer/media/cdm/renderer_cdm_manager.h" | 12 #include "content/renderer/media/cdm/renderer_cdm_manager.h" |
12 #include "media/base/cdm_initialized_promise.h" | 13 #include "media/base/cdm_initialized_promise.h" |
13 #include "media/base/cdm_key_information.h" | 14 #include "media/base/cdm_key_information.h" |
14 #include "media/base/cdm_promise.h" | 15 #include "media/base/cdm_promise.h" |
15 #include "media/base/key_systems.h" | 16 #include "media/base/key_systems.h" |
16 | 17 |
(...skipping 13 matching lines...) Expand all Loading... |
30 DCHECK(manager); | 31 DCHECK(manager); |
31 scoped_refptr<ProxyMediaKeys> proxy_media_keys(new ProxyMediaKeys( | 32 scoped_refptr<ProxyMediaKeys> proxy_media_keys(new ProxyMediaKeys( |
32 manager, session_message_cb, session_closed_cb, legacy_session_error_cb, | 33 manager, session_message_cb, session_closed_cb, legacy_session_error_cb, |
33 session_keys_change_cb, session_expiration_update_cb)); | 34 session_keys_change_cb, session_expiration_update_cb)); |
34 | 35 |
35 // ProxyMediaKeys ownership passed to the promise. | 36 // ProxyMediaKeys ownership passed to the promise. |
36 scoped_ptr<media::CdmInitializedPromise> promise( | 37 scoped_ptr<media::CdmInitializedPromise> promise( |
37 new media::CdmInitializedPromise(cdm_created_cb, proxy_media_keys)); | 38 new media::CdmInitializedPromise(cdm_created_cb, proxy_media_keys)); |
38 | 39 |
39 proxy_media_keys->InitializeCdm(key_system, security_origin, | 40 proxy_media_keys->InitializeCdm(key_system, security_origin, |
40 use_hw_secure_codecs, promise.Pass()); | 41 use_hw_secure_codecs, std::move(promise)); |
41 } | 42 } |
42 | 43 |
43 void ProxyMediaKeys::SetServerCertificate( | 44 void ProxyMediaKeys::SetServerCertificate( |
44 const std::vector<uint8_t>& certificate, | 45 const std::vector<uint8_t>& certificate, |
45 scoped_ptr<media::SimpleCdmPromise> promise) { | 46 scoped_ptr<media::SimpleCdmPromise> promise) { |
46 uint32_t promise_id = cdm_promise_adapter_.SavePromise(promise.Pass()); | 47 uint32_t promise_id = cdm_promise_adapter_.SavePromise(std::move(promise)); |
47 manager_->SetServerCertificate(cdm_id_, promise_id, certificate); | 48 manager_->SetServerCertificate(cdm_id_, promise_id, certificate); |
48 } | 49 } |
49 | 50 |
50 void ProxyMediaKeys::CreateSessionAndGenerateRequest( | 51 void ProxyMediaKeys::CreateSessionAndGenerateRequest( |
51 SessionType session_type, | 52 SessionType session_type, |
52 media::EmeInitDataType init_data_type, | 53 media::EmeInitDataType init_data_type, |
53 const std::vector<uint8_t>& init_data, | 54 const std::vector<uint8_t>& init_data, |
54 scoped_ptr<media::NewSessionCdmPromise> promise) { | 55 scoped_ptr<media::NewSessionCdmPromise> promise) { |
55 CdmHostMsg_CreateSession_InitDataType create_session_init_data_type = | 56 CdmHostMsg_CreateSession_InitDataType create_session_init_data_type = |
56 INIT_DATA_TYPE_WEBM; | 57 INIT_DATA_TYPE_WEBM; |
57 switch (init_data_type) { | 58 switch (init_data_type) { |
58 case media::EmeInitDataType::CENC: | 59 case media::EmeInitDataType::CENC: |
59 create_session_init_data_type = INIT_DATA_TYPE_CENC; | 60 create_session_init_data_type = INIT_DATA_TYPE_CENC; |
60 break; | 61 break; |
61 case media::EmeInitDataType::WEBM: | 62 case media::EmeInitDataType::WEBM: |
62 create_session_init_data_type = INIT_DATA_TYPE_WEBM; | 63 create_session_init_data_type = INIT_DATA_TYPE_WEBM; |
63 break; | 64 break; |
64 case media::EmeInitDataType::KEYIDS: | 65 case media::EmeInitDataType::KEYIDS: |
65 case media::EmeInitDataType::UNKNOWN: | 66 case media::EmeInitDataType::UNKNOWN: |
66 DLOG(ERROR) << "Unsupported EME CreateSession init data type"; | 67 DLOG(ERROR) << "Unsupported EME CreateSession init data type"; |
67 promise->reject(NOT_SUPPORTED_ERROR, 0, | 68 promise->reject(NOT_SUPPORTED_ERROR, 0, |
68 "Unsupported EME CreateSession init data type"); | 69 "Unsupported EME CreateSession init data type"); |
69 return; | 70 return; |
70 } | 71 } |
71 | 72 |
72 uint32_t promise_id = cdm_promise_adapter_.SavePromise(promise.Pass()); | 73 uint32_t promise_id = cdm_promise_adapter_.SavePromise(std::move(promise)); |
73 manager_->CreateSessionAndGenerateRequest(cdm_id_, promise_id, session_type, | 74 manager_->CreateSessionAndGenerateRequest(cdm_id_, promise_id, session_type, |
74 create_session_init_data_type, | 75 create_session_init_data_type, |
75 init_data); | 76 init_data); |
76 } | 77 } |
77 | 78 |
78 void ProxyMediaKeys::LoadSession( | 79 void ProxyMediaKeys::LoadSession( |
79 SessionType session_type, | 80 SessionType session_type, |
80 const std::string& session_id, | 81 const std::string& session_id, |
81 scoped_ptr<media::NewSessionCdmPromise> promise) { | 82 scoped_ptr<media::NewSessionCdmPromise> promise) { |
82 uint32_t promise_id = cdm_promise_adapter_.SavePromise(promise.Pass()); | 83 uint32_t promise_id = cdm_promise_adapter_.SavePromise(std::move(promise)); |
83 manager_->LoadSession(cdm_id_, promise_id, session_type, session_id); | 84 manager_->LoadSession(cdm_id_, promise_id, session_type, session_id); |
84 } | 85 } |
85 | 86 |
86 void ProxyMediaKeys::UpdateSession( | 87 void ProxyMediaKeys::UpdateSession( |
87 const std::string& session_id, | 88 const std::string& session_id, |
88 const std::vector<uint8_t>& response, | 89 const std::vector<uint8_t>& response, |
89 scoped_ptr<media::SimpleCdmPromise> promise) { | 90 scoped_ptr<media::SimpleCdmPromise> promise) { |
90 uint32_t promise_id = cdm_promise_adapter_.SavePromise(promise.Pass()); | 91 uint32_t promise_id = cdm_promise_adapter_.SavePromise(std::move(promise)); |
91 manager_->UpdateSession(cdm_id_, promise_id, session_id, response); | 92 manager_->UpdateSession(cdm_id_, promise_id, session_id, response); |
92 } | 93 } |
93 | 94 |
94 void ProxyMediaKeys::CloseSession(const std::string& session_id, | 95 void ProxyMediaKeys::CloseSession(const std::string& session_id, |
95 scoped_ptr<media::SimpleCdmPromise> promise) { | 96 scoped_ptr<media::SimpleCdmPromise> promise) { |
96 uint32_t promise_id = cdm_promise_adapter_.SavePromise(promise.Pass()); | 97 uint32_t promise_id = cdm_promise_adapter_.SavePromise(std::move(promise)); |
97 manager_->CloseSession(cdm_id_, promise_id, session_id); | 98 manager_->CloseSession(cdm_id_, promise_id, session_id); |
98 } | 99 } |
99 | 100 |
100 void ProxyMediaKeys::RemoveSession( | 101 void ProxyMediaKeys::RemoveSession( |
101 const std::string& session_id, | 102 const std::string& session_id, |
102 scoped_ptr<media::SimpleCdmPromise> promise) { | 103 scoped_ptr<media::SimpleCdmPromise> promise) { |
103 uint32_t promise_id = cdm_promise_adapter_.SavePromise(promise.Pass()); | 104 uint32_t promise_id = cdm_promise_adapter_.SavePromise(std::move(promise)); |
104 manager_->RemoveSession(cdm_id_, promise_id, session_id); | 105 manager_->RemoveSession(cdm_id_, promise_id, session_id); |
105 } | 106 } |
106 | 107 |
107 media::CdmContext* ProxyMediaKeys::GetCdmContext() { | 108 media::CdmContext* ProxyMediaKeys::GetCdmContext() { |
108 return this; | 109 return this; |
109 } | 110 } |
110 | 111 |
111 media::Decryptor* ProxyMediaKeys::GetDecryptor() { | 112 media::Decryptor* ProxyMediaKeys::GetDecryptor() { |
112 return nullptr; | 113 return nullptr; |
113 } | 114 } |
(...skipping 20 matching lines...) Expand all Loading... |
134 uint32_t system_code, | 135 uint32_t system_code, |
135 const std::string& error_message) { | 136 const std::string& error_message) { |
136 legacy_session_error_cb_.Run(session_id, exception, system_code, | 137 legacy_session_error_cb_.Run(session_id, exception, system_code, |
137 error_message); | 138 error_message); |
138 } | 139 } |
139 | 140 |
140 void ProxyMediaKeys::OnSessionKeysChange(const std::string& session_id, | 141 void ProxyMediaKeys::OnSessionKeysChange(const std::string& session_id, |
141 bool has_additional_usable_key, | 142 bool has_additional_usable_key, |
142 media::CdmKeysInfo keys_info) { | 143 media::CdmKeysInfo keys_info) { |
143 session_keys_change_cb_.Run(session_id, has_additional_usable_key, | 144 session_keys_change_cb_.Run(session_id, has_additional_usable_key, |
144 keys_info.Pass()); | 145 std::move(keys_info)); |
145 } | 146 } |
146 | 147 |
147 void ProxyMediaKeys::OnSessionExpirationUpdate( | 148 void ProxyMediaKeys::OnSessionExpirationUpdate( |
148 const std::string& session_id, | 149 const std::string& session_id, |
149 const base::Time& new_expiry_time) { | 150 const base::Time& new_expiry_time) { |
150 session_expiration_update_cb_.Run(session_id, new_expiry_time); | 151 session_expiration_update_cb_.Run(session_id, new_expiry_time); |
151 } | 152 } |
152 | 153 |
153 void ProxyMediaKeys::OnPromiseResolved(uint32_t promise_id) { | 154 void ProxyMediaKeys::OnPromiseResolved(uint32_t promise_id) { |
154 cdm_promise_adapter_.ResolvePromise(promise_id); | 155 cdm_promise_adapter_.ResolvePromise(promise_id); |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
188 manager_->DestroyCdm(cdm_id_); | 189 manager_->DestroyCdm(cdm_id_); |
189 manager_->UnregisterMediaKeys(cdm_id_); | 190 manager_->UnregisterMediaKeys(cdm_id_); |
190 cdm_promise_adapter_.Clear(); | 191 cdm_promise_adapter_.Clear(); |
191 } | 192 } |
192 | 193 |
193 void ProxyMediaKeys::InitializeCdm( | 194 void ProxyMediaKeys::InitializeCdm( |
194 const std::string& key_system, | 195 const std::string& key_system, |
195 const GURL& security_origin, | 196 const GURL& security_origin, |
196 bool use_hw_secure_codecs, | 197 bool use_hw_secure_codecs, |
197 scoped_ptr<media::SimpleCdmPromise> promise) { | 198 scoped_ptr<media::SimpleCdmPromise> promise) { |
198 uint32_t promise_id = cdm_promise_adapter_.SavePromise(promise.Pass()); | 199 uint32_t promise_id = cdm_promise_adapter_.SavePromise(std::move(promise)); |
199 manager_->InitializeCdm(cdm_id_, promise_id, this, key_system, | 200 manager_->InitializeCdm(cdm_id_, promise_id, this, key_system, |
200 security_origin, use_hw_secure_codecs); | 201 security_origin, use_hw_secure_codecs); |
201 } | 202 } |
202 | 203 |
203 } // namespace content | 204 } // namespace content |
OLD | NEW |