Add keySystem attribute to canPlayType() for Encrypted Media Extensions
https://bugs.webkit.org/show_bug.cgi?id=82973

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

The new attribute is 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#extensions.

Source/Platform:

* chromium/public/WebMimeRegistry.h:
(WebKit::WebMimeRegistry::supportsMediaMIMEType):

Source/WebCore:

Tests: media/encrypted-media/encrypted-media-can-play-type-webm.html
       media/encrypted-media/encrypted-media-can-play-type.html

* dom/DOMImplementation.cpp:
(WebCore::DOMImplementation::createDocument):
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::canPlayType):
(WebCore::HTMLMediaElement::selectMediaResource):
(WebCore::HTMLMediaElement::loadNextSourceChild):
(WebCore::HTMLMediaElement::loadResource):
(WebCore::HTMLMediaElement::havePotentialSourceChild):
(WebCore::HTMLMediaElement::selectNextSourceChild):
(WebCore::HTMLMediaElement::getPluginProxyParams):
* html/HTMLMediaElement.h:
(HTMLMediaElement):
* html/HTMLMediaElement.idl:
* platform/graphics/MediaPlayer.cpp:
(WebCore):
(WebCore::bestMediaEngineForTypeAndCodecs):
(WebCore::MediaPlayer::load):
(WebCore::MediaPlayer::loadWithNextMediaEngine):
(WebCore::MediaPlayer::supportsType):
(WebCore::MediaPlayer::networkStateChanged):
* platform/graphics/MediaPlayer.h:
(MediaPlayer):
(WebCore):

Source/WebKit/chromium:

* src/WebMediaPlayerClientImpl.cpp:
(WebKit::WebMediaPlayerClientImpl::supportsType):
* src/WebMediaPlayerClientImpl.h:
(WebMediaPlayerClientImpl):

LayoutTests:

* media/encrypted-media/encrypted-media-can-play-type-expected.txt: Added.
* media/encrypted-media/encrypted-media-can-play-type-webm-expected.txt: Added.
* media/encrypted-media/encrypted-media-can-play-type-webm.html: Added.
* media/encrypted-media/encrypted-media-can-play-type.html: Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@113914 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/html/HTMLMediaElement.idl b/Source/WebCore/html/HTMLMediaElement.idl
index 4e06b56..b27a6e9 100644
--- a/Source/WebCore/html/HTMLMediaElement.idl
+++ b/Source/WebCore/html/HTMLMediaElement.idl
@@ -46,7 +46,11 @@
     readonly attribute TimeRanges buffered;
     void load() 
         raises (DOMException);
+#if defined(ENABLE_ENCRYPTED_MEDIA) && ENABLE_ENCRYPTED_MEDIA
+    DOMString canPlayType(in [Optional=DefaultIsUndefined] DOMString type, in [Optional=DefaultIsNullString, TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem);
+#else
     DOMString canPlayType(in [Optional=DefaultIsUndefined] DOMString type);
+#endif
 
     // ready state
     const unsigned short HAVE_NOTHING = 0;