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;