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 "config.h" | 5 #include "config.h" |
6 #include "modules/encryptedmedia/HTMLMediaElementEncryptedMedia.h" | 6 #include "modules/encryptedmedia/HTMLMediaElementEncryptedMedia.h" |
7 | 7 |
8 #include "RuntimeEnabledFeatures.h" | 8 #include "RuntimeEnabledFeatures.h" |
9 #include "bindings/v8/ExceptionState.h" | 9 #include "bindings/v8/ExceptionState.h" |
10 #include "core/dom/ExceptionCode.h" | 10 #include "core/dom/ExceptionCode.h" |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
105 WTF_LOG(Media, "HTMLMediaElementEncryptedMedia::setMediaKeys"); | 105 WTF_LOG(Media, "HTMLMediaElementEncryptedMedia::setMediaKeys"); |
106 HTMLMediaElementEncryptedMedia& thisElement = HTMLMediaElementEncryptedMedia
::from(element); | 106 HTMLMediaElementEncryptedMedia& thisElement = HTMLMediaElementEncryptedMedia
::from(element); |
107 | 107 |
108 if (!thisElement.setEmeMode(EmeModeUnprefixed, exceptionState)) | 108 if (!thisElement.setEmeMode(EmeModeUnprefixed, exceptionState)) |
109 return; | 109 return; |
110 | 110 |
111 thisElement.setMediaKeysInternal(element, mediaKeys); | 111 thisElement.setMediaKeysInternal(element, mediaKeys); |
112 } | 112 } |
113 | 113 |
114 // Create a MediaKeyNeededEvent for WD EME. | 114 // Create a MediaKeyNeededEvent for WD EME. |
115 static PassRefPtr<Event> createNeedKeyEvent(const String& contentType, const uns
igned char* initData, unsigned initDataLength) | 115 static PassRefPtrWillBeRawPtr<Event> createNeedKeyEvent(const String& contentTyp
e, const unsigned char* initData, unsigned initDataLength) |
116 { | 116 { |
117 MediaKeyNeededEventInit initializer; | 117 MediaKeyNeededEventInit initializer; |
118 initializer.contentType = contentType; | 118 initializer.contentType = contentType; |
119 initializer.initData = Uint8Array::create(initData, initDataLength); | 119 initializer.initData = Uint8Array::create(initData, initDataLength); |
120 initializer.bubbles = false; | 120 initializer.bubbles = false; |
121 initializer.cancelable = false; | 121 initializer.cancelable = false; |
122 | 122 |
123 return MediaKeyNeededEvent::create(EventTypeNames::needkey, initializer); | 123 return MediaKeyNeededEvent::create(EventTypeNames::needkey, initializer); |
124 } | 124 } |
125 | 125 |
126 // Create a 'needkey' MediaKeyEvent for v0.1b EME. | 126 // Create a 'needkey' MediaKeyEvent for v0.1b EME. |
127 static PassRefPtr<Event> createWebkitNeedKeyEvent(const String& contentType, con
st unsigned char* initData, unsigned initDataLength) | 127 static PassRefPtrWillBeRawPtr<Event> createWebkitNeedKeyEvent(const String& cont
entType, const unsigned char* initData, unsigned initDataLength) |
128 { | 128 { |
129 MediaKeyEventInit webkitInitializer; | 129 MediaKeyEventInit webkitInitializer; |
130 webkitInitializer.keySystem = String(); | 130 webkitInitializer.keySystem = String(); |
131 webkitInitializer.sessionId = String(); | 131 webkitInitializer.sessionId = String(); |
132 webkitInitializer.initData = Uint8Array::create(initData, initDataLength); | 132 webkitInitializer.initData = Uint8Array::create(initData, initDataLength); |
133 webkitInitializer.bubbles = false; | 133 webkitInitializer.bubbles = false; |
134 webkitInitializer.cancelable = false; | 134 webkitInitializer.cancelable = false; |
135 | 135 |
136 return MediaKeyEvent::create(EventTypeNames::webkitneedkey, webkitInitialize
r); | 136 return MediaKeyEvent::create(EventTypeNames::webkitneedkey, webkitInitialize
r); |
137 } | 137 } |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
251 void HTMLMediaElementEncryptedMedia::keyAdded(HTMLMediaElement& element, const S
tring& keySystem, const String& sessionId) | 251 void HTMLMediaElementEncryptedMedia::keyAdded(HTMLMediaElement& element, const S
tring& keySystem, const String& sessionId) |
252 { | 252 { |
253 WTF_LOG(Media, "HTMLMediaElementEncryptedMedia::mediaPlayerKeyAdded"); | 253 WTF_LOG(Media, "HTMLMediaElementEncryptedMedia::mediaPlayerKeyAdded"); |
254 | 254 |
255 MediaKeyEventInit initializer; | 255 MediaKeyEventInit initializer; |
256 initializer.keySystem = keySystem; | 256 initializer.keySystem = keySystem; |
257 initializer.sessionId = sessionId; | 257 initializer.sessionId = sessionId; |
258 initializer.bubbles = false; | 258 initializer.bubbles = false; |
259 initializer.cancelable = false; | 259 initializer.cancelable = false; |
260 | 260 |
261 RefPtr<Event> event = MediaKeyEvent::create(EventTypeNames::webkitkeyadded,
initializer); | 261 RefPtrWillBeRawPtr<Event> event = MediaKeyEvent::create(EventTypeNames::webk
itkeyadded, initializer); |
262 event->setTarget(&element); | 262 event->setTarget(&element); |
263 element.scheduleEvent(event.release()); | 263 element.scheduleEvent(event.release()); |
264 } | 264 } |
265 | 265 |
266 void HTMLMediaElementEncryptedMedia::keyError(HTMLMediaElement& element, const S
tring& keySystem, const String& sessionId, blink::WebMediaPlayerClient::MediaKey
ErrorCode errorCode, unsigned short systemCode) | 266 void HTMLMediaElementEncryptedMedia::keyError(HTMLMediaElement& element, const S
tring& keySystem, const String& sessionId, blink::WebMediaPlayerClient::MediaKey
ErrorCode errorCode, unsigned short systemCode) |
267 { | 267 { |
268 WTF_LOG(Media, "HTMLMediaElementEncryptedMedia::mediaPlayerKeyError: session
ID=%s, errorCode=%d, systemCode=%d", sessionId.utf8().data(), errorCode, systemC
ode); | 268 WTF_LOG(Media, "HTMLMediaElementEncryptedMedia::mediaPlayerKeyError: session
ID=%s, errorCode=%d, systemCode=%d", sessionId.utf8().data(), errorCode, systemC
ode); |
269 | 269 |
270 MediaKeyError::Code mediaKeyErrorCode = MediaKeyError::MEDIA_KEYERR_UNKNOWN; | 270 MediaKeyError::Code mediaKeyErrorCode = MediaKeyError::MEDIA_KEYERR_UNKNOWN; |
271 switch (errorCode) { | 271 switch (errorCode) { |
(...skipping 18 matching lines...) Expand all Loading... |
290 } | 290 } |
291 | 291 |
292 MediaKeyEventInit initializer; | 292 MediaKeyEventInit initializer; |
293 initializer.keySystem = keySystem; | 293 initializer.keySystem = keySystem; |
294 initializer.sessionId = sessionId; | 294 initializer.sessionId = sessionId; |
295 initializer.errorCode = MediaKeyError::create(mediaKeyErrorCode); | 295 initializer.errorCode = MediaKeyError::create(mediaKeyErrorCode); |
296 initializer.systemCode = systemCode; | 296 initializer.systemCode = systemCode; |
297 initializer.bubbles = false; | 297 initializer.bubbles = false; |
298 initializer.cancelable = false; | 298 initializer.cancelable = false; |
299 | 299 |
300 RefPtr<Event> event = MediaKeyEvent::create(EventTypeNames::webkitkeyerror,
initializer); | 300 RefPtrWillBeRawPtr<Event> event = MediaKeyEvent::create(EventTypeNames::webk
itkeyerror, initializer); |
301 event->setTarget(&element); | 301 event->setTarget(&element); |
302 element.scheduleEvent(event.release()); | 302 element.scheduleEvent(event.release()); |
303 } | 303 } |
304 | 304 |
305 void HTMLMediaElementEncryptedMedia::keyMessage(HTMLMediaElement& element, const
String& keySystem, const String& sessionId, const unsigned char* message, unsig
ned messageLength, const blink::WebURL& defaultURL) | 305 void HTMLMediaElementEncryptedMedia::keyMessage(HTMLMediaElement& element, const
String& keySystem, const String& sessionId, const unsigned char* message, unsig
ned messageLength, const blink::WebURL& defaultURL) |
306 { | 306 { |
307 WTF_LOG(Media, "HTMLMediaElementEncryptedMedia::mediaPlayerKeyMessage: sessi
onID=%s", sessionId.utf8().data()); | 307 WTF_LOG(Media, "HTMLMediaElementEncryptedMedia::mediaPlayerKeyMessage: sessi
onID=%s", sessionId.utf8().data()); |
308 | 308 |
309 MediaKeyEventInit initializer; | 309 MediaKeyEventInit initializer; |
310 initializer.keySystem = keySystem; | 310 initializer.keySystem = keySystem; |
311 initializer.sessionId = sessionId; | 311 initializer.sessionId = sessionId; |
312 initializer.message = Uint8Array::create(message, messageLength); | 312 initializer.message = Uint8Array::create(message, messageLength); |
313 initializer.defaultURL = KURL(defaultURL); | 313 initializer.defaultURL = KURL(defaultURL); |
314 initializer.bubbles = false; | 314 initializer.bubbles = false; |
315 initializer.cancelable = false; | 315 initializer.cancelable = false; |
316 | 316 |
317 RefPtr<Event> event = MediaKeyEvent::create(EventTypeNames::webkitkeymessage
, initializer); | 317 RefPtrWillBeRawPtr<Event> event = MediaKeyEvent::create(EventTypeNames::webk
itkeymessage, initializer); |
318 event->setTarget(&element); | 318 event->setTarget(&element); |
319 element.scheduleEvent(event.release()); | 319 element.scheduleEvent(event.release()); |
320 } | 320 } |
321 | 321 |
322 void HTMLMediaElementEncryptedMedia::keyNeeded(HTMLMediaElement& element, const
String& contentType, const unsigned char* initData, unsigned initDataLength) | 322 void HTMLMediaElementEncryptedMedia::keyNeeded(HTMLMediaElement& element, const
String& contentType, const unsigned char* initData, unsigned initDataLength) |
323 { | 323 { |
324 WTF_LOG(Media, "HTMLMediaElementEncryptedMedia::mediaPlayerKeyNeeded: conten
tType=%s", contentType.utf8().data()); | 324 WTF_LOG(Media, "HTMLMediaElementEncryptedMedia::mediaPlayerKeyNeeded: conten
tType=%s", contentType.utf8().data()); |
325 | 325 |
326 if (RuntimeEnabledFeatures::encryptedMediaEnabled()) { | 326 if (RuntimeEnabledFeatures::encryptedMediaEnabled()) { |
327 // Send event for WD EME. | 327 // Send event for WD EME. |
328 RefPtr<Event> event = createNeedKeyEvent(contentType, initData, initData
Length); | 328 RefPtrWillBeRawPtr<Event> event = createNeedKeyEvent(contentType, initDa
ta, initDataLength); |
329 event->setTarget(&element); | 329 event->setTarget(&element); |
330 element.scheduleEvent(event.release()); | 330 element.scheduleEvent(event.release()); |
331 } | 331 } |
332 | 332 |
333 if (RuntimeEnabledFeatures::prefixedEncryptedMediaEnabled()) { | 333 if (RuntimeEnabledFeatures::prefixedEncryptedMediaEnabled()) { |
334 // Send event for v0.1b EME. | 334 // Send event for v0.1b EME. |
335 RefPtr<Event> event = createWebkitNeedKeyEvent(contentType, initData, in
itDataLength); | 335 RefPtrWillBeRawPtr<Event> event = createWebkitNeedKeyEvent(contentType,
initData, initDataLength); |
336 event->setTarget(&element); | 336 event->setTarget(&element); |
337 element.scheduleEvent(event.release()); | 337 element.scheduleEvent(event.release()); |
338 } | 338 } |
339 } | 339 } |
340 | 340 |
341 void HTMLMediaElementEncryptedMedia::playerDestroyed(HTMLMediaElement& element) | 341 void HTMLMediaElementEncryptedMedia::playerDestroyed(HTMLMediaElement& element) |
342 { | 342 { |
343 HTMLMediaElementEncryptedMedia& thisElement = HTMLMediaElementEncryptedMedia
::from(element); | 343 HTMLMediaElementEncryptedMedia& thisElement = HTMLMediaElementEncryptedMedia
::from(element); |
344 thisElement.setMediaKeysInternal(element, 0); | 344 thisElement.setMediaKeysInternal(element, 0); |
345 } | 345 } |
346 | 346 |
347 blink::WebContentDecryptionModule* HTMLMediaElementEncryptedMedia::contentDecryp
tionModule(HTMLMediaElement& element) | 347 blink::WebContentDecryptionModule* HTMLMediaElementEncryptedMedia::contentDecryp
tionModule(HTMLMediaElement& element) |
348 { | 348 { |
349 HTMLMediaElementEncryptedMedia& thisElement = HTMLMediaElementEncryptedMedia
::from(element); | 349 HTMLMediaElementEncryptedMedia& thisElement = HTMLMediaElementEncryptedMedia
::from(element); |
350 return thisElement.contentDecryptionModule(); | 350 return thisElement.contentDecryptionModule(); |
351 } | 351 } |
352 | 352 |
353 } // namespace WebCore | 353 } // namespace WebCore |
OLD | NEW |