Chromium Code Reviews| 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() |