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/encrypted_media_player_support.h" | 5 #include "media/blink/encrypted_media_player_support.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/callback_helpers.h" | 10 #include "base/callback_helpers.h" |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
108 // Most WebM files use KeyId of 16 bytes. CENC init data is always >16 bytes. | 108 // Most WebM files use KeyId of 16 bytes. CENC init data is always >16 bytes. |
109 if (init_data_length == 16) | 109 if (init_data_length == 16) |
110 return "webm"; | 110 return "webm"; |
111 | 111 |
112 return "cenc"; | 112 return "cenc"; |
113 } | 113 } |
114 | 114 |
115 EncryptedMediaPlayerSupport::EncryptedMediaPlayerSupport( | 115 EncryptedMediaPlayerSupport::EncryptedMediaPlayerSupport( |
116 scoped_ptr<CdmFactory> cdm_factory, | 116 scoped_ptr<CdmFactory> cdm_factory, |
117 blink::WebMediaPlayerClient* client, | 117 blink::WebMediaPlayerClient* client, |
| 118 MediaPermission* media_permission, |
118 const SetCdmContextCB& set_cdm_context_cb) | 119 const SetCdmContextCB& set_cdm_context_cb) |
119 : cdm_factory_(cdm_factory.Pass()), | 120 : cdm_factory_(cdm_factory.Pass()), |
120 client_(client), | 121 client_(client), |
| 122 media_permission_(media_permission), |
121 set_cdm_context_cb_(set_cdm_context_cb) { | 123 set_cdm_context_cb_(set_cdm_context_cb) { |
122 } | 124 } |
123 | 125 |
124 EncryptedMediaPlayerSupport::~EncryptedMediaPlayerSupport() { | 126 EncryptedMediaPlayerSupport::~EncryptedMediaPlayerSupport() { |
125 } | 127 } |
126 | 128 |
127 WebMediaPlayer::MediaKeyException | 129 WebMediaPlayer::MediaKeyException |
128 EncryptedMediaPlayerSupport::GenerateKeyRequest( | 130 EncryptedMediaPlayerSupport::GenerateKeyRequest( |
129 blink::WebLocalFrame* frame, | 131 blink::WebLocalFrame* frame, |
130 const WebString& key_system, | 132 const WebString& key_system, |
(...skipping 18 matching lines...) Expand all Loading... |
149 const std::string& key_system, | 151 const std::string& key_system, |
150 const unsigned char* init_data, | 152 const unsigned char* init_data, |
151 unsigned init_data_length) { | 153 unsigned init_data_length) { |
152 if (!IsConcreteSupportedKeySystem(key_system)) | 154 if (!IsConcreteSupportedKeySystem(key_system)) |
153 return WebMediaPlayer::MediaKeyExceptionKeySystemNotSupported; | 155 return WebMediaPlayer::MediaKeyExceptionKeySystemNotSupported; |
154 | 156 |
155 // We do not support run-time switching between key systems for now. | 157 // We do not support run-time switching between key systems for now. |
156 if (current_key_system_.empty()) { | 158 if (current_key_system_.empty()) { |
157 if (!proxy_decryptor_) { | 159 if (!proxy_decryptor_) { |
158 proxy_decryptor_.reset(new ProxyDecryptor( | 160 proxy_decryptor_.reset(new ProxyDecryptor( |
| 161 media_permission_, |
159 BIND_TO_RENDER_LOOP(&EncryptedMediaPlayerSupport::OnKeyAdded), | 162 BIND_TO_RENDER_LOOP(&EncryptedMediaPlayerSupport::OnKeyAdded), |
160 BIND_TO_RENDER_LOOP(&EncryptedMediaPlayerSupport::OnKeyError), | 163 BIND_TO_RENDER_LOOP(&EncryptedMediaPlayerSupport::OnKeyError), |
161 BIND_TO_RENDER_LOOP(&EncryptedMediaPlayerSupport::OnKeyMessage))); | 164 BIND_TO_RENDER_LOOP(&EncryptedMediaPlayerSupport::OnKeyMessage))); |
162 } | 165 } |
163 | 166 |
164 GURL security_origin(frame->document().securityOrigin().toString()); | 167 GURL security_origin(frame->document().securityOrigin().toString()); |
165 | 168 |
166 if (!proxy_decryptor_->InitializeCDM(cdm_factory_.get(), key_system, | 169 if (!proxy_decryptor_->InitializeCDM(cdm_factory_.get(), key_system, |
167 security_origin)) { | 170 security_origin)) { |
168 return WebMediaPlayer::MediaKeyExceptionKeySystemNotSupported; | 171 return WebMediaPlayer::MediaKeyExceptionKeySystemNotSupported; |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
323 | 326 |
324 client_->keyMessage( | 327 client_->keyMessage( |
325 WebString::fromUTF8(GetPrefixedKeySystemName(current_key_system_)), | 328 WebString::fromUTF8(GetPrefixedKeySystemName(current_key_system_)), |
326 WebString::fromUTF8(session_id), | 329 WebString::fromUTF8(session_id), |
327 message.empty() ? NULL : &message[0], | 330 message.empty() ? NULL : &message[0], |
328 base::saturated_cast<unsigned int>(message.size()), | 331 base::saturated_cast<unsigned int>(message.size()), |
329 destination_url); | 332 destination_url); |
330 } | 333 } |
331 | 334 |
332 } // namespace media | 335 } // namespace media |
OLD | NEW |