| 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 |