Index: Source/core/html/HTMLMediaElement.cpp |
diff --git a/Source/core/html/HTMLMediaElement.cpp b/Source/core/html/HTMLMediaElement.cpp |
index 2503550f60f4cfecdf2ca5ee238b38cfb907506b..260fd245c8a3f013eeb758de05d29fcba0ee68da 100644 |
--- a/Source/core/html/HTMLMediaElement.cpp |
+++ b/Source/core/html/HTMLMediaElement.cpp |
@@ -1710,46 +1710,47 @@ void HTMLMediaElement::mediaPlayerKeyMessage(const String& keySystem, const Stri |
m_asyncEventQueue->enqueueEvent(event.release()); |
} |
-bool HTMLMediaElement::mediaPlayerKeyNeeded(const String& keySystem, const String& sessionId, const unsigned char* initData, unsigned initDataLength) |
-{ |
- if (!hasEventListeners(EventTypeNames::webkitneedkey)) { |
- m_error = MediaError::create(MediaError::MEDIA_ERR_ENCRYPTED); |
- scheduleEvent(EventTypeNames::error); |
- return false; |
+bool HTMLMediaElement::mediaPlayerKeyNeeded(const String& mimeType, const unsigned char* initData, unsigned initDataLength) |
acolwell GONE FROM CHROMIUM
2014/01/11 01:11:25
nit: s/mimeType/contentType/
jrummell
2014/01/11 01:56:56
Done.
|
+{ |
+ bool result = false; |
+ |
+ // Send event for prefixed EME. |
+ // FIXME: Remove once prefixed EME is removed. |
+ if (hasEventListeners(EventTypeNames::webkitneedkey)) { |
+ MediaKeyEventInit initializer; |
+ initializer.keySystem = String(); |
+ initializer.sessionId = String(); |
+ initializer.initData = Uint8Array::create(initData, initDataLength); |
+ initializer.bubbles = false; |
+ initializer.cancelable = false; |
+ |
+ RefPtr<Event> event = MediaKeyEvent::create(EventTypeNames::webkitneedkey, initializer); |
+ event->setTarget(this); |
+ m_asyncEventQueue->enqueueEvent(event.release()); |
+ result = true; |
} |
- MediaKeyEventInit initializer; |
- initializer.keySystem = keySystem; |
- initializer.sessionId = sessionId; |
- initializer.initData = Uint8Array::create(initData, initDataLength); |
- initializer.bubbles = false; |
- initializer.cancelable = false; |
- |
- RefPtr<Event> event = MediaKeyEvent::create(EventTypeNames::webkitneedkey, initializer); |
- event->setTarget(this); |
- m_asyncEventQueue->enqueueEvent(event.release()); |
- return true; |
-} |
+ // Send event for non-prefixed EME. |
+ if (hasEventListeners(EventTypeNames::needkey)) { |
acolwell GONE FROM CHROMIUM
2014/01/11 01:11:25
Do we really want to dispatch to both events? ISTM
jrummell
2014/01/11 01:56:56
Good idea. Reordered so unprefixed event is prefer
|
+ MediaKeyNeededEventInit initializer; |
+ initializer.contentType = mimeType; |
+ initializer.initData = Uint8Array::create(initData, initDataLength); |
+ initializer.bubbles = false; |
+ initializer.cancelable = false; |
-bool HTMLMediaElement::mediaPlayerKeyNeeded(Uint8Array* initData) |
-{ |
- // FIXME: This should be using the unprefixed event name ("needkey"). |
- if (!hasEventListeners("webkitneedkey")) { |
- m_error = MediaError::create(MediaError::MEDIA_ERR_ENCRYPTED); |
- scheduleEvent(EventTypeNames::error); |
- return false; |
+ RefPtr<Event> event = MediaKeyNeededEvent::create(EventTypeNames::needkey, initializer); |
+ event->setTarget(this); |
+ m_asyncEventQueue->enqueueEvent(event.release()); |
+ result = true; |
acolwell GONE FROM CHROMIUM
2014/01/11 01:11:25
If you take my suggestion above then you should be
jrummell
2014/01/11 01:56:56
Done.
|
} |
- MediaKeyNeededEventInit initializer; |
- initializer.initData = initData; |
- initializer.bubbles = false; |
- initializer.cancelable = false; |
- |
- RefPtr<Event> event = MediaKeyNeededEvent::create(EventTypeNames::webkitneedkey, initializer); |
- event->setTarget(this); |
- m_asyncEventQueue->enqueueEvent(event.release()); |
+ if (result) |
+ return true; |
- return true; |
+ // Unable to send an event, so send an error. |
+ m_error = MediaError::create(MediaError::MEDIA_ERR_ENCRYPTED); |
+ scheduleEvent(EventTypeNames::error); |
+ return false; |
} |
blink::WebContentDecryptionModule* HTMLMediaElement::contentDecryptionModule() |