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

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

Issue 1686483002: Oilpan: Remove most WillBe types from the code base (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 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
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 "modules/encryptedmedia/HTMLMediaElementEncryptedMedia.h" 5 #include "modules/encryptedmedia/HTMLMediaElementEncryptedMedia.h"
6 6
7 #include "bindings/core/v8/ExceptionState.h" 7 #include "bindings/core/v8/ExceptionState.h"
8 #include "bindings/core/v8/ScriptPromise.h" 8 #include "bindings/core/v8/ScriptPromise.h"
9 #include "bindings/core/v8/ScriptPromiseResolver.h" 9 #include "bindings/core/v8/ScriptPromiseResolver.h"
10 #include "bindings/core/v8/ScriptState.h" 10 #include "bindings/core/v8/ScriptState.h"
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 void clearExistingMediaKeys(); 62 void clearExistingMediaKeys();
63 void setNewMediaKeys(); 63 void setNewMediaKeys();
64 64
65 void finish(); 65 void finish();
66 void fail(ExceptionCode, const String& errorMessage); 66 void fail(ExceptionCode, const String& errorMessage);
67 67
68 void clearFailed(ExceptionCode, const String& errorMessage); 68 void clearFailed(ExceptionCode, const String& errorMessage);
69 void setFailed(ExceptionCode, const String& errorMessage); 69 void setFailed(ExceptionCode, const String& errorMessage);
70 70
71 // Keep media element alive until promise is fulfilled 71 // Keep media element alive until promise is fulfilled
72 RefPtrWillBeMember<HTMLMediaElement> m_element; 72 Member<HTMLMediaElement> m_element;
73 Member<MediaKeys> m_newMediaKeys; 73 Member<MediaKeys> m_newMediaKeys;
74 bool m_madeReservation; 74 bool m_madeReservation;
75 Timer<SetMediaKeysHandler> m_timer; 75 Timer<SetMediaKeysHandler> m_timer;
76 }; 76 };
77 77
78 typedef Function<void()> SuccessCallback; 78 typedef Function<void()> SuccessCallback;
79 typedef Function<void(ExceptionCode, const String&)> FailureCallback; 79 typedef Function<void(ExceptionCode, const String&)> FailureCallback;
80 80
81 // Represents the result used when setContentDecryptionModule() is called. 81 // Represents the result used when setContentDecryptionModule() is called.
82 // Calls |success| if result is resolved, |failure| is result is rejected. 82 // Calls |success| if result is resolved, |failure| is result is rejected.
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 #endif 306 #endif
307 } 307 }
308 308
309 const char* HTMLMediaElementEncryptedMedia::supplementName() 309 const char* HTMLMediaElementEncryptedMedia::supplementName()
310 { 310 {
311 return "HTMLMediaElementEncryptedMedia"; 311 return "HTMLMediaElementEncryptedMedia";
312 } 312 }
313 313
314 HTMLMediaElementEncryptedMedia& HTMLMediaElementEncryptedMedia::from(HTMLMediaEl ement& element) 314 HTMLMediaElementEncryptedMedia& HTMLMediaElementEncryptedMedia::from(HTMLMediaEl ement& element)
315 { 315 {
316 HTMLMediaElementEncryptedMedia* supplement = static_cast<HTMLMediaElementEnc ryptedMedia*>(WillBeHeapSupplement<HTMLMediaElement>::from(element, supplementNa me())); 316 HTMLMediaElementEncryptedMedia* supplement = static_cast<HTMLMediaElementEnc ryptedMedia*>(HeapSupplement<HTMLMediaElement>::from(element, supplementName())) ;
317 if (!supplement) { 317 if (!supplement) {
318 supplement = new HTMLMediaElementEncryptedMedia(element); 318 supplement = new HTMLMediaElementEncryptedMedia(element);
319 provideTo(element, supplementName(), adoptPtrWillBeNoop(supplement)); 319 provideTo(element, supplementName(), (supplement));
320 } 320 }
321 return *supplement; 321 return *supplement;
322 } 322 }
323 323
324 bool HTMLMediaElementEncryptedMedia::setEmeMode(EmeMode emeMode) 324 bool HTMLMediaElementEncryptedMedia::setEmeMode(EmeMode emeMode)
325 { 325 {
326 if (m_emeMode != EmeModeNotSelected && m_emeMode != emeMode) 326 if (m_emeMode != EmeModeNotSelected && m_emeMode != emeMode)
327 return false; 327 return false;
328 328
329 m_emeMode = emeMode; 329 m_emeMode = emeMode;
(...skipping 17 matching lines...) Expand all
347 // 1. If mediaKeys and the mediaKeys attribute are the same object, return 347 // 1. If mediaKeys and the mediaKeys attribute are the same object, return
348 // a promise resolved with undefined. 348 // a promise resolved with undefined.
349 if (thisElement.m_mediaKeys == mediaKeys) 349 if (thisElement.m_mediaKeys == mediaKeys)
350 return ScriptPromise::cast(scriptState, v8::Undefined(scriptState->isola te())); 350 return ScriptPromise::cast(scriptState, v8::Undefined(scriptState->isola te()));
351 351
352 // 2. Let promise be a new promise. Remaining steps done in handler. 352 // 2. Let promise be a new promise. Remaining steps done in handler.
353 return SetMediaKeysHandler::create(scriptState, element, mediaKeys); 353 return SetMediaKeysHandler::create(scriptState, element, mediaKeys);
354 } 354 }
355 355
356 // Create a MediaEncryptedEvent for WD EME. 356 // Create a MediaEncryptedEvent for WD EME.
357 static PassRefPtrWillBeRawPtr<Event> createEncryptedEvent(WebEncryptedMediaInitD ataType initDataType, const unsigned char* initData, unsigned initDataLength) 357 static RawPtr<Event> createEncryptedEvent(WebEncryptedMediaInitDataType initData Type, const unsigned char* initData, unsigned initDataLength)
358 { 358 {
359 MediaEncryptedEventInit initializer; 359 MediaEncryptedEventInit initializer;
360 initializer.setInitDataType(EncryptedMediaUtils::convertFromInitDataType(ini tDataType)); 360 initializer.setInitDataType(EncryptedMediaUtils::convertFromInitDataType(ini tDataType));
361 initializer.setInitData(DOMArrayBuffer::create(initData, initDataLength)); 361 initializer.setInitData(DOMArrayBuffer::create(initData, initDataLength));
362 initializer.setBubbles(false); 362 initializer.setBubbles(false);
363 initializer.setCancelable(false); 363 initializer.setCancelable(false);
364 364
365 return MediaEncryptedEvent::create(EventTypeNames::encrypted, initializer); 365 return MediaEncryptedEvent::create(EventTypeNames::encrypted, initializer);
366 } 366 }
367 367
368 // Create a 'needkey' MediaKeyEvent for v0.1b EME. 368 // Create a 'needkey' MediaKeyEvent for v0.1b EME.
369 static PassRefPtrWillBeRawPtr<Event> createWebkitNeedKeyEvent(const unsigned cha r* initData, unsigned initDataLength) 369 static RawPtr<Event> createWebkitNeedKeyEvent(const unsigned char* initData, uns igned initDataLength)
370 { 370 {
371 MediaKeyEventInit webkitInitializer; 371 MediaKeyEventInit webkitInitializer;
372 webkitInitializer.setInitData(DOMUint8Array::create(initData, initDataLength )); 372 webkitInitializer.setInitData(DOMUint8Array::create(initData, initDataLength ));
373 373
374 return MediaKeyEvent::create(EventTypeNames::webkitneedkey, webkitInitialize r); 374 return MediaKeyEvent::create(EventTypeNames::webkitneedkey, webkitInitialize r);
375 } 375 }
376 376
377 void HTMLMediaElementEncryptedMedia::webkitGenerateKeyRequest(HTMLMediaElement& element, const String& keySystem, PassRefPtr<DOMUint8Array> initData, ExceptionS tate& exceptionState) 377 void HTMLMediaElementEncryptedMedia::webkitGenerateKeyRequest(HTMLMediaElement& element, const String& keySystem, PassRefPtr<DOMUint8Array> initData, ExceptionS tate& exceptionState)
378 { 378 {
379 HTMLMediaElementEncryptedMedia::from(element).generateKeyRequest(element.web MediaPlayer(), keySystem, initData, exceptionState); 379 HTMLMediaElementEncryptedMedia::from(element).generateKeyRequest(element.web MediaPlayer(), keySystem, initData, exceptionState);
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
493 } 493 }
494 494
495 void HTMLMediaElementEncryptedMedia::keyAdded(const WebString& keySystem, const WebString& sessionId) 495 void HTMLMediaElementEncryptedMedia::keyAdded(const WebString& keySystem, const WebString& sessionId)
496 { 496 {
497 WTF_LOG(Media, "HTMLMediaElementEncryptedMedia::mediaPlayerKeyAdded"); 497 WTF_LOG(Media, "HTMLMediaElementEncryptedMedia::mediaPlayerKeyAdded");
498 498
499 MediaKeyEventInit initializer; 499 MediaKeyEventInit initializer;
500 initializer.setKeySystem(keySystem); 500 initializer.setKeySystem(keySystem);
501 initializer.setSessionId(sessionId); 501 initializer.setSessionId(sessionId);
502 502
503 RefPtrWillBeRawPtr<Event> event = MediaKeyEvent::create(EventTypeNames::webk itkeyadded, initializer); 503 RawPtr<Event> event = MediaKeyEvent::create(EventTypeNames::webkitkeyadded, initializer);
504 event->setTarget(m_mediaElement); 504 event->setTarget(m_mediaElement);
505 m_mediaElement->scheduleEvent(event.release()); 505 m_mediaElement->scheduleEvent(event.release());
506 } 506 }
507 507
508 void HTMLMediaElementEncryptedMedia::keyError(const WebString& keySystem, const WebString& sessionId, WebMediaPlayerEncryptedMediaClient::MediaKeyErrorCode erro rCode, unsigned short systemCode) 508 void HTMLMediaElementEncryptedMedia::keyError(const WebString& keySystem, const WebString& sessionId, WebMediaPlayerEncryptedMediaClient::MediaKeyErrorCode erro rCode, unsigned short systemCode)
509 { 509 {
510 WTF_LOG(Media, "HTMLMediaElementEncryptedMedia::mediaPlayerKeyError: session ID=%s, errorCode=%d, systemCode=%d", sessionId.utf8().data(), errorCode, systemC ode); 510 WTF_LOG(Media, "HTMLMediaElementEncryptedMedia::mediaPlayerKeyError: session ID=%s, errorCode=%d, systemCode=%d", sessionId.utf8().data(), errorCode, systemC ode);
511 511
512 MediaKeyError::Code mediaKeyErrorCode = MediaKeyError::MEDIA_KEYERR_UNKNOWN; 512 MediaKeyError::Code mediaKeyErrorCode = MediaKeyError::MEDIA_KEYERR_UNKNOWN;
513 switch (errorCode) { 513 switch (errorCode) {
(...skipping 16 matching lines...) Expand all
530 mediaKeyErrorCode = MediaKeyError::MEDIA_KEYERR_DOMAIN; 530 mediaKeyErrorCode = MediaKeyError::MEDIA_KEYERR_DOMAIN;
531 break; 531 break;
532 } 532 }
533 533
534 MediaKeyEventInit initializer; 534 MediaKeyEventInit initializer;
535 initializer.setKeySystem(keySystem); 535 initializer.setKeySystem(keySystem);
536 initializer.setSessionId(sessionId); 536 initializer.setSessionId(sessionId);
537 initializer.setErrorCode(MediaKeyError::create(mediaKeyErrorCode)); 537 initializer.setErrorCode(MediaKeyError::create(mediaKeyErrorCode));
538 initializer.setSystemCode(systemCode); 538 initializer.setSystemCode(systemCode);
539 539
540 RefPtrWillBeRawPtr<Event> event = MediaKeyEvent::create(EventTypeNames::webk itkeyerror, initializer); 540 RawPtr<Event> event = MediaKeyEvent::create(EventTypeNames::webkitkeyerror, initializer);
541 event->setTarget(m_mediaElement); 541 event->setTarget(m_mediaElement);
542 m_mediaElement->scheduleEvent(event.release()); 542 m_mediaElement->scheduleEvent(event.release());
543 } 543 }
544 544
545 void HTMLMediaElementEncryptedMedia::keyMessage(const WebString& keySystem, cons t WebString& sessionId, const unsigned char* message, unsigned messageLength, co nst WebURL& defaultURL) 545 void HTMLMediaElementEncryptedMedia::keyMessage(const WebString& keySystem, cons t WebString& sessionId, const unsigned char* message, unsigned messageLength, co nst WebURL& defaultURL)
546 { 546 {
547 WTF_LOG(Media, "HTMLMediaElementEncryptedMedia::mediaPlayerKeyMessage: sessi onID=%s", sessionId.utf8().data()); 547 WTF_LOG(Media, "HTMLMediaElementEncryptedMedia::mediaPlayerKeyMessage: sessi onID=%s", sessionId.utf8().data());
548 548
549 MediaKeyEventInit initializer; 549 MediaKeyEventInit initializer;
550 initializer.setKeySystem(keySystem); 550 initializer.setKeySystem(keySystem);
551 initializer.setSessionId(sessionId); 551 initializer.setSessionId(sessionId);
552 initializer.setMessage(DOMUint8Array::create(message, messageLength)); 552 initializer.setMessage(DOMUint8Array::create(message, messageLength));
553 initializer.setDefaultURL(KURL(defaultURL)); 553 initializer.setDefaultURL(KURL(defaultURL));
554 554
555 RefPtrWillBeRawPtr<Event> event = MediaKeyEvent::create(EventTypeNames::webk itkeymessage, initializer); 555 RawPtr<Event> event = MediaKeyEvent::create(EventTypeNames::webkitkeymessage , initializer);
556 event->setTarget(m_mediaElement); 556 event->setTarget(m_mediaElement);
557 m_mediaElement->scheduleEvent(event.release()); 557 m_mediaElement->scheduleEvent(event.release());
558 } 558 }
559 559
560 void HTMLMediaElementEncryptedMedia::encrypted(WebEncryptedMediaInitDataType ini tDataType, const unsigned char* initData, unsigned initDataLength) 560 void HTMLMediaElementEncryptedMedia::encrypted(WebEncryptedMediaInitDataType ini tDataType, const unsigned char* initData, unsigned initDataLength)
561 { 561 {
562 WTF_LOG(Media, "HTMLMediaElementEncryptedMedia::encrypted"); 562 WTF_LOG(Media, "HTMLMediaElementEncryptedMedia::encrypted");
563 563
564 if (RuntimeEnabledFeatures::encryptedMediaEnabled()) { 564 if (RuntimeEnabledFeatures::encryptedMediaEnabled()) {
565 // Send event for WD EME. 565 // Send event for WD EME.
566 RefPtrWillBeRawPtr<Event> event; 566 RawPtr<Event> event;
567 if (m_mediaElement->isMediaDataCORSSameOrigin(m_mediaElement->executionC ontext()->securityOrigin())) { 567 if (m_mediaElement->isMediaDataCORSSameOrigin(m_mediaElement->executionC ontext()->securityOrigin())) {
568 event = createEncryptedEvent(initDataType, initData, initDataLength) ; 568 event = createEncryptedEvent(initDataType, initData, initDataLength) ;
569 } else { 569 } else {
570 // Current page is not allowed to see content from the media file, 570 // Current page is not allowed to see content from the media file,
571 // so don't return the initData. However, they still get an event. 571 // so don't return the initData. However, they still get an event.
572 event = createEncryptedEvent(WebEncryptedMediaInitDataType::Unknown, nullptr, 0); 572 event = createEncryptedEvent(WebEncryptedMediaInitDataType::Unknown, nullptr, 0);
573 } 573 }
574 574
575 event->setTarget(m_mediaElement); 575 event->setTarget(m_mediaElement);
576 m_mediaElement->scheduleEvent(event.release()); 576 m_mediaElement->scheduleEvent(event.release());
577 } 577 }
578 578
579 if (RuntimeEnabledFeatures::prefixedEncryptedMediaEnabled()) { 579 if (RuntimeEnabledFeatures::prefixedEncryptedMediaEnabled()) {
580 // Send event for v0.1b EME. 580 // Send event for v0.1b EME.
581 RefPtrWillBeRawPtr<Event> event = createWebkitNeedKeyEvent(initData, ini tDataLength); 581 RawPtr<Event> event = createWebkitNeedKeyEvent(initData, initDataLength) ;
582 event->setTarget(m_mediaElement); 582 event->setTarget(m_mediaElement);
583 m_mediaElement->scheduleEvent(event.release()); 583 m_mediaElement->scheduleEvent(event.release());
584 } 584 }
585 } 585 }
586 586
587 void HTMLMediaElementEncryptedMedia::didBlockPlaybackWaitingForKey() 587 void HTMLMediaElementEncryptedMedia::didBlockPlaybackWaitingForKey()
588 { 588 {
589 WTF_LOG(Media, "HTMLMediaElementEncryptedMedia::didBlockPlaybackWaitingForKe y"); 589 WTF_LOG(Media, "HTMLMediaElementEncryptedMedia::didBlockPlaybackWaitingForKe y");
590 590
591 // From https://w3c.github.io/encrypted-media/#queue-waitingforkey: 591 // From https://w3c.github.io/encrypted-media/#queue-waitingforkey:
592 // It should only be called when the HTMLMediaElement object is potentially 592 // It should only be called when the HTMLMediaElement object is potentially
593 // playing and its readyState is equal to HAVE_FUTURE_DATA or greater. 593 // playing and its readyState is equal to HAVE_FUTURE_DATA or greater.
594 // FIXME: Is this really required? 594 // FIXME: Is this really required?
595 595
596 // 1. Let the media element be the specified HTMLMediaElement object. 596 // 1. Let the media element be the specified HTMLMediaElement object.
597 // 2. If the media element's waiting for key value is false, queue a task 597 // 2. If the media element's waiting for key value is false, queue a task
598 // to fire a simple event named waitingforkey at the media element. 598 // to fire a simple event named waitingforkey at the media element.
599 if (!m_isWaitingForKey) { 599 if (!m_isWaitingForKey) {
600 RefPtrWillBeRawPtr<Event> event = Event::create(EventTypeNames::waitingf orkey); 600 RawPtr<Event> event = Event::create(EventTypeNames::waitingforkey);
601 event->setTarget(m_mediaElement); 601 event->setTarget(m_mediaElement);
602 m_mediaElement->scheduleEvent(event.release()); 602 m_mediaElement->scheduleEvent(event.release());
603 } 603 }
604 604
605 // 3. Set the media element's waiting for key value to true. 605 // 3. Set the media element's waiting for key value to true.
606 m_isWaitingForKey = true; 606 m_isWaitingForKey = true;
607 607
608 // 4. Suspend playback. 608 // 4. Suspend playback.
609 // (Already done on the Chromium side by the decryptors.) 609 // (Already done on the Chromium side by the decryptors.)
610 } 610 }
(...skipping 10 matching lines...) Expand all
621 621
622 WebContentDecryptionModule* HTMLMediaElementEncryptedMedia::contentDecryptionMod ule() 622 WebContentDecryptionModule* HTMLMediaElementEncryptedMedia::contentDecryptionMod ule()
623 { 623 {
624 return m_mediaKeys ? m_mediaKeys->contentDecryptionModule() : 0; 624 return m_mediaKeys ? m_mediaKeys->contentDecryptionModule() : 0;
625 } 625 }
626 626
627 DEFINE_TRACE(HTMLMediaElementEncryptedMedia) 627 DEFINE_TRACE(HTMLMediaElementEncryptedMedia)
628 { 628 {
629 visitor->trace(m_mediaElement); 629 visitor->trace(m_mediaElement);
630 visitor->trace(m_mediaKeys); 630 visitor->trace(m_mediaKeys);
631 WillBeHeapSupplement<HTMLMediaElement>::trace(visitor); 631 HeapSupplement<HTMLMediaElement>::trace(visitor);
632 } 632 }
633 633
634 } // namespace blink 634 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698