Add Encrypted Media Extensions events and errors to HTMLMediaElement
https://bugs.webkit.org/show_bug.cgi?id=82974

Patch by David Dorwin <ddorwin@chromium.org> on 2012-04-12
Reviewed by Adam Barth.

The new events and errors are behind the ENABLE(ENCRYPTED_MEDIA) feature define.
Implementation is based on v0.1 of the draft proposal at
http://dvcs.w3.org/hg/html-media/raw-file/tip/encrypted-media/encrypted-media.html#events.

Source/WebCore:

Tests: fast/events/constructors/media-key-event-constructor.html
       media/encrypted-media/encrypted-media-constants.html
       media/encrypted-media/encrypted-media-events.html

* WebCore.gypi:
* bindings/v8/Dictionary.cpp:
(WebCore::Dictionary::get):
(WebCore):
* bindings/v8/Dictionary.h:
(WebCore):
(Dictionary):
* dom/EventNames.h:
(WebCore):
* dom/EventNames.in:
* html/HTMLAttributeNames.in:
* html/HTMLMediaElement.cpp:
(WebCore):
(WebCore::HTMLMediaElement::mediaPlayerKeyAdded):
(WebCore::HTMLMediaElement::mediaPlayerKeyError):
(WebCore::HTMLMediaElement::mediaPlayerKeyMessage):
(WebCore::HTMLMediaElement::mediaPlayerKeyNeeded):
* html/HTMLMediaElement.h:
(HTMLMediaElement):
* html/HTMLMediaElement.idl:
* html/MediaError.h:
* html/MediaError.idl:
* html/MediaKeyError.h: Added.
(WebCore):
(MediaKeyError):
(WebCore::MediaKeyError::create):
(WebCore::MediaKeyError::code):
(WebCore::MediaKeyError::MediaKeyError):
* html/MediaKeyError.idl: Added.
* html/MediaKeyEvent.cpp: Added.
(WebCore):
(WebCore::MediaKeyEventInit::MediaKeyEventInit):
(WebCore::MediaKeyEvent::MediaKeyEvent):
(WebCore::MediaKeyEvent::~MediaKeyEvent):
(WebCore::MediaKeyEvent::interfaceName):
* html/MediaKeyEvent.h: Added.
(WebCore):
(MediaKeyEventInit):
(MediaKeyEvent):
(WebCore::MediaKeyEvent::create):
(WebCore::MediaKeyEvent::keySystem):
(WebCore::MediaKeyEvent::sessionId):
(WebCore::MediaKeyEvent::initData):
(WebCore::MediaKeyEvent::message):
(WebCore::MediaKeyEvent::defaultURL):
(WebCore::MediaKeyEvent::errorCode):
(WebCore::MediaKeyEvent::systemCode):
* html/MediaKeyEvent.idl: Added.
* page/DOMWindow.idl:
* platform/graphics/MediaPlayer.cpp:
(WebCore):
(WebCore::MediaPlayer::keyAdded):
(WebCore::MediaPlayer::keyError):
(WebCore::MediaPlayer::keyMessage):
(WebCore::MediaPlayer::keyNeeded):
* platform/graphics/MediaPlayer.h:
(MediaPlayerClient):
(WebCore::MediaPlayerClient::mediaPlayerKeyAdded):
(WebCore::MediaPlayerClient::mediaPlayerKeyError):
(WebCore::MediaPlayerClient::mediaPlayerKeyMessage):
(WebCore::MediaPlayerClient::mediaPlayerKeyNeeded):
(MediaPlayer):

Source/WebKit/chromium:

* public/WebMediaPlayerClient.h:
* src/AssertMatchingEnums.cpp:
* src/WebMediaPlayerClientImpl.cpp:
(WebKit::WebMediaPlayerClientImpl::keyAdded):
(WebKit):
(WebKit::WebMediaPlayerClientImpl::keyError):
(WebKit::WebMediaPlayerClientImpl::keyMessage):
(WebKit::WebMediaPlayerClientImpl::keyNeeded):
* src/WebMediaPlayerClientImpl.h:
(WebMediaPlayerClientImpl):

LayoutTests:

* fast/events/constructors/media-key-event-constructor-expected.txt: Added.
* fast/events/constructors/media-key-event-constructor.html: Added.
* fast/js/resources/js-test-pre.js:
(shouldBeZero):
(shouldBeEmptyString):
* media/encrypted-media/encrypted-media-constants-expected.txt: Added.
* media/encrypted-media/encrypted-media-constants.html: Added.
* media/encrypted-media/encrypted-media-events-expected.txt: Added.
* media/encrypted-media/encrypted-media-events.html: Added.
* media/video-test.js:
(testExpected):
(testArraysEqual):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@114067 268f45cc-cd09-0410-ab3c-d52691b4dbfc
34 files changed