Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(71)

Side by Side Diff: Source/modules/encryptedmedia/HTMLMediaElementEncryptedMedia.cpp

Issue 606653006: bindings: Adds DOMArrayBuffer, etc. as thin wrappers for ArrayBuffer, etc. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fixed Win GPU tests (DOMDataView). Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 "bindings/core/v8/ExceptionState.h" 8 #include "bindings/core/v8/ExceptionState.h"
9 #include "bindings/core/v8/ScriptPromise.h" 9 #include "bindings/core/v8/ScriptPromise.h"
10 #include "bindings/core/v8/ScriptPromiseResolver.h" 10 #include "bindings/core/v8/ScriptPromiseResolver.h"
11 #include "bindings/core/v8/ScriptState.h" 11 #include "bindings/core/v8/ScriptState.h"
12 #include "core/dom/DOMException.h" 12 #include "core/dom/DOMException.h"
13 #include "core/dom/DOMTypedArray.h"
13 #include "core/dom/ExceptionCode.h" 14 #include "core/dom/ExceptionCode.h"
14 #include "core/html/HTMLMediaElement.h" 15 #include "core/html/HTMLMediaElement.h"
15 #include "core/html/MediaKeyError.h" 16 #include "core/html/MediaKeyError.h"
16 #include "core/html/MediaKeyEvent.h" 17 #include "core/html/MediaKeyEvent.h"
18 #include "modules/EventModulesNames.h"
17 #include "modules/encryptedmedia/MediaKeyNeededEvent.h" 19 #include "modules/encryptedmedia/MediaKeyNeededEvent.h"
18 #include "modules/encryptedmedia/MediaKeys.h" 20 #include "modules/encryptedmedia/MediaKeys.h"
19 #include "modules/encryptedmedia/SimpleContentDecryptionModuleResult.h" 21 #include "modules/encryptedmedia/SimpleContentDecryptionModuleResult.h"
20 #include "platform/ContentDecryptionModuleResult.h" 22 #include "platform/ContentDecryptionModuleResult.h"
21 #include "platform/Logging.h" 23 #include "platform/Logging.h"
22 #include "platform/RuntimeEnabledFeatures.h" 24 #include "platform/RuntimeEnabledFeatures.h"
23 #include "wtf/Functional.h" 25 #include "wtf/Functional.h"
24 #include "wtf/Uint8Array.h"
25 26
26 namespace blink { 27 namespace blink {
27 28
28 static void throwExceptionIfMediaKeyExceptionOccurred(const String& keySystem, c onst String& sessionId, WebMediaPlayer::MediaKeyException exception, ExceptionSt ate& exceptionState) 29 static void throwExceptionIfMediaKeyExceptionOccurred(const String& keySystem, c onst String& sessionId, WebMediaPlayer::MediaKeyException exception, ExceptionSt ate& exceptionState)
29 { 30 {
30 switch (exception) { 31 switch (exception) {
31 case WebMediaPlayer::MediaKeyExceptionNoError: 32 case WebMediaPlayer::MediaKeyExceptionNoError:
32 return; 33 return;
33 case WebMediaPlayer::MediaKeyExceptionInvalidPlayerState: 34 case WebMediaPlayer::MediaKeyExceptionInvalidPlayerState:
34 exceptionState.throwDOMException(InvalidStateError, "The player is in an invalid state."); 35 exceptionState.throwDOMException(InvalidStateError, "The player is in an invalid state.");
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 285
285 // 2. Let promise be a new promise. Remaining steps done in handler. 286 // 2. Let promise be a new promise. Remaining steps done in handler.
286 return SetMediaKeysHandler::create(scriptState, element, mediaKeys); 287 return SetMediaKeysHandler::create(scriptState, element, mediaKeys);
287 } 288 }
288 289
289 // Create a MediaKeyNeededEvent for WD EME. 290 // Create a MediaKeyNeededEvent for WD EME.
290 static PassRefPtrWillBeRawPtr<Event> createNeedKeyEvent(const String& contentTyp e, const unsigned char* initData, unsigned initDataLength) 291 static PassRefPtrWillBeRawPtr<Event> createNeedKeyEvent(const String& contentTyp e, const unsigned char* initData, unsigned initDataLength)
291 { 292 {
292 MediaKeyNeededEventInit initializer; 293 MediaKeyNeededEventInit initializer;
293 initializer.contentType = contentType; 294 initializer.contentType = contentType;
294 initializer.initData = Uint8Array::create(initData, initDataLength); 295 initializer.initData = DOMUint8Array::create(initData, initDataLength);
295 initializer.bubbles = false; 296 initializer.bubbles = false;
296 initializer.cancelable = false; 297 initializer.cancelable = false;
297 298
298 return MediaKeyNeededEvent::create(EventTypeNames::needkey, initializer); 299 return MediaKeyNeededEvent::create(EventTypeNames::needkey, initializer);
299 } 300 }
300 301
301 // Create a 'needkey' MediaKeyEvent for v0.1b EME. 302 // Create a 'needkey' MediaKeyEvent for v0.1b EME.
302 static PassRefPtrWillBeRawPtr<Event> createWebkitNeedKeyEvent(const String& cont entType, const unsigned char* initData, unsigned initDataLength) 303 static PassRefPtrWillBeRawPtr<Event> createWebkitNeedKeyEvent(const String& cont entType, const unsigned char* initData, unsigned initDataLength)
303 { 304 {
304 MediaKeyEventInit webkitInitializer; 305 MediaKeyEventInit webkitInitializer;
305 webkitInitializer.keySystem = String(); 306 webkitInitializer.keySystem = String();
306 webkitInitializer.sessionId = String(); 307 webkitInitializer.sessionId = String();
307 webkitInitializer.initData = Uint8Array::create(initData, initDataLength); 308 webkitInitializer.initData = DOMUint8Array::create(initData, initDataLength) ;
308 webkitInitializer.bubbles = false; 309 webkitInitializer.bubbles = false;
309 webkitInitializer.cancelable = false; 310 webkitInitializer.cancelable = false;
310 311
311 return MediaKeyEvent::create(EventTypeNames::webkitneedkey, webkitInitialize r); 312 return MediaKeyEvent::create(EventTypeNames::webkitneedkey, webkitInitialize r);
312 } 313 }
313 314
314 void HTMLMediaElementEncryptedMedia::webkitGenerateKeyRequest(HTMLMediaElement& element, const String& keySystem, PassRefPtr<Uint8Array> initData, ExceptionStat e& exceptionState) 315 void HTMLMediaElementEncryptedMedia::webkitGenerateKeyRequest(HTMLMediaElement& element, const String& keySystem, PassRefPtr<DOMUint8Array> initData, ExceptionS tate& exceptionState)
315 { 316 {
316 HTMLMediaElementEncryptedMedia::from(element).generateKeyRequest(element.web MediaPlayer(), keySystem, initData, exceptionState); 317 HTMLMediaElementEncryptedMedia::from(element).generateKeyRequest(element.web MediaPlayer(), keySystem, initData, exceptionState);
317 } 318 }
318 319
319 void HTMLMediaElementEncryptedMedia::generateKeyRequest(WebMediaPlayer* webMedia Player, const String& keySystem, PassRefPtr<Uint8Array> initData, ExceptionState & exceptionState) 320 void HTMLMediaElementEncryptedMedia::generateKeyRequest(WebMediaPlayer* webMedia Player, const String& keySystem, PassRefPtr<DOMUint8Array> initData, ExceptionSt ate& exceptionState)
320 { 321 {
321 WTF_LOG(Media, "HTMLMediaElementEncryptedMedia::webkitGenerateKeyRequest"); 322 WTF_LOG(Media, "HTMLMediaElementEncryptedMedia::webkitGenerateKeyRequest");
322 323
323 if (!setEmeMode(EmeModePrefixed)) { 324 if (!setEmeMode(EmeModePrefixed)) {
324 exceptionState.throwDOMException(InvalidStateError, "Mixed use of EME pr efixed and unprefixed API not allowed."); 325 exceptionState.throwDOMException(InvalidStateError, "Mixed use of EME pr efixed and unprefixed API not allowed.");
325 return; 326 return;
326 } 327 }
327 328
328 if (keySystem.isEmpty()) { 329 if (keySystem.isEmpty()) {
329 exceptionState.throwDOMException(SyntaxError, "The key system provided i s empty."); 330 exceptionState.throwDOMException(SyntaxError, "The key system provided i s empty.");
(...skipping 11 matching lines...) Expand all
341 initDataPointer = initData->data(); 342 initDataPointer = initData->data();
342 initDataLength = initData->length(); 343 initDataLength = initData->length();
343 } 344 }
344 345
345 WebMediaPlayer::MediaKeyException result = webMediaPlayer->generateKeyReques t(keySystem, initDataPointer, initDataLength); 346 WebMediaPlayer::MediaKeyException result = webMediaPlayer->generateKeyReques t(keySystem, initDataPointer, initDataLength);
346 throwExceptionIfMediaKeyExceptionOccurred(keySystem, String(), result, excep tionState); 347 throwExceptionIfMediaKeyExceptionOccurred(keySystem, String(), result, excep tionState);
347 } 348 }
348 349
349 void HTMLMediaElementEncryptedMedia::webkitGenerateKeyRequest(HTMLMediaElement& mediaElement, const String& keySystem, ExceptionState& exceptionState) 350 void HTMLMediaElementEncryptedMedia::webkitGenerateKeyRequest(HTMLMediaElement& mediaElement, const String& keySystem, ExceptionState& exceptionState)
350 { 351 {
351 webkitGenerateKeyRequest(mediaElement, keySystem, Uint8Array::create(0), exc eptionState); 352 webkitGenerateKeyRequest(mediaElement, keySystem, DOMUint8Array::create(0), exceptionState);
352 } 353 }
353 354
354 void HTMLMediaElementEncryptedMedia::webkitAddKey(HTMLMediaElement& element, con st String& keySystem, PassRefPtr<Uint8Array> key, PassRefPtr<Uint8Array> initDat a, const String& sessionId, ExceptionState& exceptionState) 355 void HTMLMediaElementEncryptedMedia::webkitAddKey(HTMLMediaElement& element, con st String& keySystem, PassRefPtr<DOMUint8Array> key, PassRefPtr<DOMUint8Array> i nitData, const String& sessionId, ExceptionState& exceptionState)
355 { 356 {
356 HTMLMediaElementEncryptedMedia::from(element).addKey(element.webMediaPlayer( ), keySystem, key, initData, sessionId, exceptionState); 357 HTMLMediaElementEncryptedMedia::from(element).addKey(element.webMediaPlayer( ), keySystem, key, initData, sessionId, exceptionState);
357 } 358 }
358 359
359 void HTMLMediaElementEncryptedMedia::addKey(WebMediaPlayer* webMediaPlayer, cons t String& keySystem, PassRefPtr<Uint8Array> key, PassRefPtr<Uint8Array> initData , const String& sessionId, ExceptionState& exceptionState) 360 void HTMLMediaElementEncryptedMedia::addKey(WebMediaPlayer* webMediaPlayer, cons t String& keySystem, PassRefPtr<DOMUint8Array> key, PassRefPtr<DOMUint8Array> in itData, const String& sessionId, ExceptionState& exceptionState)
360 { 361 {
361 WTF_LOG(Media, "HTMLMediaElementEncryptedMedia::webkitAddKey"); 362 WTF_LOG(Media, "HTMLMediaElementEncryptedMedia::webkitAddKey");
362 363
363 if (!setEmeMode(EmeModePrefixed)) { 364 if (!setEmeMode(EmeModePrefixed)) {
364 exceptionState.throwDOMException(InvalidStateError, "Mixed use of EME pr efixed and unprefixed API not allowed."); 365 exceptionState.throwDOMException(InvalidStateError, "Mixed use of EME pr efixed and unprefixed API not allowed.");
365 return; 366 return;
366 } 367 }
367 368
368 if (keySystem.isEmpty()) { 369 if (keySystem.isEmpty()) {
369 exceptionState.throwDOMException(SyntaxError, "The key system provided i s empty."); 370 exceptionState.throwDOMException(SyntaxError, "The key system provided i s empty.");
(...skipping 19 matching lines...) Expand all
389 unsigned initDataLength = 0; 390 unsigned initDataLength = 0;
390 if (initData) { 391 if (initData) {
391 initDataPointer = initData->data(); 392 initDataPointer = initData->data();
392 initDataLength = initData->length(); 393 initDataLength = initData->length();
393 } 394 }
394 395
395 WebMediaPlayer::MediaKeyException result = webMediaPlayer->addKey(keySystem, key->data(), key->length(), initDataPointer, initDataLength, sessionId); 396 WebMediaPlayer::MediaKeyException result = webMediaPlayer->addKey(keySystem, key->data(), key->length(), initDataPointer, initDataLength, sessionId);
396 throwExceptionIfMediaKeyExceptionOccurred(keySystem, sessionId, result, exce ptionState); 397 throwExceptionIfMediaKeyExceptionOccurred(keySystem, sessionId, result, exce ptionState);
397 } 398 }
398 399
399 void HTMLMediaElementEncryptedMedia::webkitAddKey(HTMLMediaElement& mediaElement , const String& keySystem, PassRefPtr<Uint8Array> key, ExceptionState& exception State) 400 void HTMLMediaElementEncryptedMedia::webkitAddKey(HTMLMediaElement& mediaElement , const String& keySystem, PassRefPtr<DOMUint8Array> key, ExceptionState& except ionState)
400 { 401 {
401 webkitAddKey(mediaElement, keySystem, key, Uint8Array::create(0), String(), exceptionState); 402 webkitAddKey(mediaElement, keySystem, key, DOMUint8Array::create(0), String( ), exceptionState);
402 } 403 }
403 404
404 void HTMLMediaElementEncryptedMedia::webkitCancelKeyRequest(HTMLMediaElement& el ement, const String& keySystem, const String& sessionId, ExceptionState& excepti onState) 405 void HTMLMediaElementEncryptedMedia::webkitCancelKeyRequest(HTMLMediaElement& el ement, const String& keySystem, const String& sessionId, ExceptionState& excepti onState)
405 { 406 {
406 HTMLMediaElementEncryptedMedia::from(element).cancelKeyRequest(element.webMe diaPlayer(), keySystem, sessionId, exceptionState); 407 HTMLMediaElementEncryptedMedia::from(element).cancelKeyRequest(element.webMe diaPlayer(), keySystem, sessionId, exceptionState);
407 } 408 }
408 409
409 void HTMLMediaElementEncryptedMedia::cancelKeyRequest(WebMediaPlayer* webMediaPl ayer, const String& keySystem, const String& sessionId, ExceptionState& exceptio nState) 410 void HTMLMediaElementEncryptedMedia::cancelKeyRequest(WebMediaPlayer* webMediaPl ayer, const String& keySystem, const String& sessionId, ExceptionState& exceptio nState)
410 { 411 {
411 WTF_LOG(Media, "HTMLMediaElementEncryptedMedia::webkitCancelKeyRequest"); 412 WTF_LOG(Media, "HTMLMediaElementEncryptedMedia::webkitCancelKeyRequest");
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
483 element.scheduleEvent(event.release()); 484 element.scheduleEvent(event.release());
484 } 485 }
485 486
486 void HTMLMediaElementEncryptedMedia::keyMessage(HTMLMediaElement& element, const String& keySystem, const String& sessionId, const unsigned char* message, unsig ned messageLength, const WebURL& defaultURL) 487 void HTMLMediaElementEncryptedMedia::keyMessage(HTMLMediaElement& element, const String& keySystem, const String& sessionId, const unsigned char* message, unsig ned messageLength, const WebURL& defaultURL)
487 { 488 {
488 WTF_LOG(Media, "HTMLMediaElementEncryptedMedia::mediaPlayerKeyMessage: sessi onID=%s", sessionId.utf8().data()); 489 WTF_LOG(Media, "HTMLMediaElementEncryptedMedia::mediaPlayerKeyMessage: sessi onID=%s", sessionId.utf8().data());
489 490
490 MediaKeyEventInit initializer; 491 MediaKeyEventInit initializer;
491 initializer.keySystem = keySystem; 492 initializer.keySystem = keySystem;
492 initializer.sessionId = sessionId; 493 initializer.sessionId = sessionId;
493 initializer.message = Uint8Array::create(message, messageLength); 494 initializer.message = DOMUint8Array::create(message, messageLength);
494 initializer.defaultURL = KURL(defaultURL); 495 initializer.defaultURL = KURL(defaultURL);
495 initializer.bubbles = false; 496 initializer.bubbles = false;
496 initializer.cancelable = false; 497 initializer.cancelable = false;
497 498
498 RefPtrWillBeRawPtr<Event> event = MediaKeyEvent::create(EventTypeNames::webk itkeymessage, initializer); 499 RefPtrWillBeRawPtr<Event> event = MediaKeyEvent::create(EventTypeNames::webk itkeymessage, initializer);
499 event->setTarget(&element); 500 event->setTarget(&element);
500 element.scheduleEvent(event.release()); 501 element.scheduleEvent(event.release());
501 } 502 }
502 503
503 void HTMLMediaElementEncryptedMedia::keyNeeded(HTMLMediaElement& element, const String& contentType, const unsigned char* initData, unsigned initDataLength) 504 void HTMLMediaElementEncryptedMedia::keyNeeded(HTMLMediaElement& element, const String& contentType, const unsigned char* initData, unsigned initDataLength)
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
541 return thisElement.contentDecryptionModule(); 542 return thisElement.contentDecryptionModule();
542 } 543 }
543 544
544 void HTMLMediaElementEncryptedMedia::trace(Visitor* visitor) 545 void HTMLMediaElementEncryptedMedia::trace(Visitor* visitor)
545 { 546 {
546 visitor->trace(m_mediaKeys); 547 visitor->trace(m_mediaKeys);
547 WillBeHeapSupplement<HTMLMediaElement>::trace(visitor); 548 WillBeHeapSupplement<HTMLMediaElement>::trace(visitor);
548 } 549 }
549 550
550 } // namespace blink 551 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698