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 "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" |
(...skipping 497 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
508 event->setTarget(&element); | 508 event->setTarget(&element); |
509 element.scheduleEvent(event.release()); | 509 element.scheduleEvent(event.release()); |
510 } | 510 } |
511 | 511 |
512 void HTMLMediaElementEncryptedMedia::encrypted(HTMLMediaElement& element, const
String& initDataType, const unsigned char* initData, unsigned initDataLength) | 512 void HTMLMediaElementEncryptedMedia::encrypted(HTMLMediaElement& element, const
String& initDataType, const unsigned char* initData, unsigned initDataLength) |
513 { | 513 { |
514 WTF_LOG(Media, "HTMLMediaElementEncryptedMedia::encrypted: initDataType=%s",
initDataType.utf8().data()); | 514 WTF_LOG(Media, "HTMLMediaElementEncryptedMedia::encrypted: initDataType=%s",
initDataType.utf8().data()); |
515 | 515 |
516 if (RuntimeEnabledFeatures::encryptedMediaEnabled()) { | 516 if (RuntimeEnabledFeatures::encryptedMediaEnabled()) { |
517 // Send event for WD EME. | 517 // Send event for WD EME. |
518 // FIXME: Check origin before providing initData. http://crbug.com/41823
3. | 518 RefPtrWillBeRawPtr<Event> event; |
519 RefPtrWillBeRawPtr<Event> event = createEncryptedEvent(initDataType, ini
tData, initDataLength); | 519 if (element.isMediaDataCORSSameOrigin(element.executionContext()->securi
tyOrigin())) { |
| 520 event = createEncryptedEvent(initDataType, initData, initDataLength)
; |
| 521 } else { |
| 522 // Current page is not allowed to see content from the media file, |
| 523 // so don't return the initData. However, they still get an event. |
| 524 event = createEncryptedEvent(emptyString(), nullptr, 0); |
| 525 } |
| 526 |
520 event->setTarget(&element); | 527 event->setTarget(&element); |
521 element.scheduleEvent(event.release()); | 528 element.scheduleEvent(event.release()); |
522 } | 529 } |
523 | 530 |
524 if (RuntimeEnabledFeatures::prefixedEncryptedMediaEnabled()) { | 531 if (RuntimeEnabledFeatures::prefixedEncryptedMediaEnabled()) { |
525 // Send event for v0.1b EME. | 532 // Send event for v0.1b EME. |
526 RefPtrWillBeRawPtr<Event> event = createWebkitNeedKeyEvent(initData, ini
tDataLength); | 533 RefPtrWillBeRawPtr<Event> event = createWebkitNeedKeyEvent(initData, ini
tDataLength); |
527 event->setTarget(&element); | 534 event->setTarget(&element); |
528 element.scheduleEvent(event.release()); | 535 element.scheduleEvent(event.release()); |
529 } | 536 } |
(...skipping 21 matching lines...) Expand all Loading... |
551 return thisElement.contentDecryptionModule(); | 558 return thisElement.contentDecryptionModule(); |
552 } | 559 } |
553 | 560 |
554 void HTMLMediaElementEncryptedMedia::trace(Visitor* visitor) | 561 void HTMLMediaElementEncryptedMedia::trace(Visitor* visitor) |
555 { | 562 { |
556 visitor->trace(m_mediaKeys); | 563 visitor->trace(m_mediaKeys); |
557 WillBeHeapSupplement<HTMLMediaElement>::trace(visitor); | 564 WillBeHeapSupplement<HTMLMediaElement>::trace(visitor); |
558 } | 565 } |
559 | 566 |
560 } // namespace blink | 567 } // namespace blink |
OLD | NEW |