EME v0.1: Report defaultURL in KeyMessage.
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 14 Dec 2012 08:25:00 +0000 (08:25 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 14 Dec 2012 08:25:00 +0000 (08:25 +0000)
https://bugs.webkit.org/show_bug.cgi?id=104284

Patch by David Dorwin <ddorwin@chromium.org> on 2012-12-14
Reviewed by Darin Fisher.

Passes defaultURL down from the media engine to HTMLMediaElement.
Only Valid URLs will be passed.

No test because Clear Key does not provide a defaultURL (in v0.1).

Source/WebCore:

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::mediaPlayerKeyMessage):
* html/HTMLMediaElement.h:
(HTMLMediaElement):
* platform/graphics/MediaPlayer.cpp:
(WebCore::MediaPlayer::keyMessage):
* platform/graphics/MediaPlayer.h:
(WebCore::MediaPlayerClient::mediaPlayerKeyAdded):
(WebCore::MediaPlayerClient::mediaPlayerKeyError):
(WebCore::MediaPlayerClient::mediaPlayerKeyMessage):
(WebCore::MediaPlayerClient::mediaPlayerKeyNeeded):
(MediaPlayer):

Source/WebKit/chromium:

* public/WebMediaPlayerClient.h:
* src/WebMediaPlayerClientImpl.cpp:
(WebKit::WebMediaPlayerClientImpl::keyMessage):
(WebKit):
(WebKit::WebMediaPlayerClient::keyMessage):
* src/WebMediaPlayerClientImpl.h:
(WebMediaPlayerClientImpl):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@137724 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/html/HTMLMediaElement.cpp
Source/WebCore/html/HTMLMediaElement.h
Source/WebCore/platform/graphics/MediaPlayer.cpp
Source/WebCore/platform/graphics/MediaPlayer.h
Source/WebKit/chromium/ChangeLog
Source/WebKit/chromium/public/WebMediaPlayerClient.h
Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp
Source/WebKit/chromium/src/WebMediaPlayerClientImpl.h

index c12dedb..71c5e54 100644 (file)
@@ -1,3 +1,28 @@
+2012-12-14  David Dorwin  <ddorwin@chromium.org>
+
+        EME v0.1: Report defaultURL in KeyMessage.
+        https://bugs.webkit.org/show_bug.cgi?id=104284
+
+        Reviewed by Darin Fisher.
+
+        Passes defaultURL down from the media engine to HTMLMediaElement.
+        Only Valid URLs will be passed.
+
+        No test because Clear Key does not provide a defaultURL (in v0.1).
+
+        * html/HTMLMediaElement.cpp:
+        (WebCore::HTMLMediaElement::mediaPlayerKeyMessage):
+        * html/HTMLMediaElement.h:
+        (HTMLMediaElement):
+        * platform/graphics/MediaPlayer.cpp:
+        (WebCore::MediaPlayer::keyMessage):
+        * platform/graphics/MediaPlayer.h:
+        (WebCore::MediaPlayerClient::mediaPlayerKeyAdded):
+        (WebCore::MediaPlayerClient::mediaPlayerKeyError):
+        (WebCore::MediaPlayerClient::mediaPlayerKeyMessage):
+        (WebCore::MediaPlayerClient::mediaPlayerKeyNeeded):
+        (MediaPlayer):
+
 2012-12-13  Hajime Morrita  <morrita@google.com>
 
         ContentDistributor and ShadowRootContentDistributionData should use RefPtr to hold elements.
index fda1313..5668779 100644 (file)
@@ -1870,12 +1870,13 @@ void HTMLMediaElement::mediaPlayerKeyError(MediaPlayer*, const String& keySystem
     m_asyncEventQueue->enqueueEvent(event.release());
 }
 
-void HTMLMediaElement::mediaPlayerKeyMessage(MediaPlayer*, const String& keySystem, const String& sessionId, const unsigned char* message, unsigned messageLength)
+void HTMLMediaElement::mediaPlayerKeyMessage(MediaPlayer*, const String& keySystem, const String& sessionId, const unsigned char* message, unsigned messageLength, const KURL& defaultURL)
 {
     MediaKeyEventInit initializer;
     initializer.keySystem = keySystem;
     initializer.sessionId = sessionId;
     initializer.message = Uint8Array::create(message, messageLength);
+    initializer.defaultURL = defaultURL; 
     initializer.bubbles = false;
     initializer.cancelable = false;
 
index f454f8c..a9db047 100644 (file)
@@ -428,7 +428,7 @@ private:
 #if ENABLE(ENCRYPTED_MEDIA)
     virtual void mediaPlayerKeyAdded(MediaPlayer*, const String& keySystem, const String& sessionId) OVERRIDE;
     virtual void mediaPlayerKeyError(MediaPlayer*, const String& keySystem, const String& sessionId, MediaPlayerClient::MediaKeyErrorCode, unsigned short systemCode) OVERRIDE;
-    virtual void mediaPlayerKeyMessage(MediaPlayer*, const String& keySystem, const String& sessionId, const unsigned char* message, unsigned messageLength) OVERRIDE;
+    virtual void mediaPlayerKeyMessage(MediaPlayer*, const String& keySystem, const String& sessionId, const unsigned char* message, unsigned messageLength, const KURL& defaultURL) OVERRIDE;
     virtual bool mediaPlayerKeyNeeded(MediaPlayer*, const String& keySystem, const String& sessionId, const unsigned char* initData, unsigned initDataLength) OVERRIDE;
 #endif
 
index 0e19b1f..46cc57e 100644 (file)
@@ -1057,10 +1057,10 @@ void MediaPlayer::keyError(const String& keySystem, const String& sessionId, Med
         m_mediaPlayerClient->mediaPlayerKeyError(this, keySystem, sessionId, errorCode, systemCode);
 }
 
-void MediaPlayer::keyMessage(const String& keySystem, const String& sessionId, const unsigned char* message, unsigned messageLength)
+void MediaPlayer::keyMessage(const String& keySystem, const String& sessionId, const unsigned char* message, unsigned messageLength, const KURL& defaultURL)
 {
     if (m_mediaPlayerClient)
-        m_mediaPlayerClient->mediaPlayerKeyMessage(this, keySystem, sessionId, message, messageLength);
+        m_mediaPlayerClient->mediaPlayerKeyMessage(this, keySystem, sessionId, message, messageLength, defaultURL);
 }
 
 bool MediaPlayer::keyNeeded(const String& keySystem, const String& sessionId, const unsigned char* initData, unsigned initDataLength)
index 77619db..40314fe 100644 (file)
@@ -186,10 +186,10 @@ public:
 
 #if ENABLE(ENCRYPTED_MEDIA)
     enum MediaKeyErrorCode { UnknownError = 1, ClientError, ServiceError, OutputError, HardwareChangeError, DomainError };
-    virtual void mediaPlayerKeyAdded(MediaPlayer*, const String&, const String&) { }
-    virtual void mediaPlayerKeyError(MediaPlayer*, const String&, const String&, MediaKeyErrorCode, unsigned short) { }
-    virtual void mediaPlayerKeyMessage(MediaPlayer*, const String&, const String&, const unsigned char*, unsigned) { }
-    virtual bool mediaPlayerKeyNeeded(MediaPlayer*, const String&, const String&, const unsigned char*, unsigned) { return false; }
+    virtual void mediaPlayerKeyAdded(MediaPlayer*, const String& keySystem, const String& sessionId) { }
+    virtual void mediaPlayerKeyError(MediaPlayer*, const String& keySystem, const String& sessionId, MediaKeyErrorCode, unsigned short systemCode) { }
+    virtual void mediaPlayerKeyMessage(MediaPlayer*, const String& keySystem, const String& sessionId, const unsigned char* message, unsigned messageLength, const KURL& defaultURL) { }
+    virtual bool mediaPlayerKeyNeeded(MediaPlayer*, const String& keySystem, const String& sessionId, const unsigned char* initData, unsigned initDataLength) { return false; }
 #endif
 
     virtual String mediaPlayerReferrer() const { return String(); }
@@ -422,7 +422,7 @@ public:
 #if ENABLE(ENCRYPTED_MEDIA)
     void keyAdded(const String& keySystem, const String& sessionId);
     void keyError(const String& keySystem, const String& sessionId, MediaPlayerClient::MediaKeyErrorCode, unsigned short systemCode);
-    void keyMessage(const String& keySystem, const String& sessionId, const unsigned char* message, unsigned messageLength);
+    void keyMessage(const String& keySystem, const String& sessionId, const unsigned char* message, unsigned messageLength, const KURL& defaultURL);
     bool keyNeeded(const String& keySystem, const String& sessionId, const unsigned char* initData, unsigned initDataLength);
 #endif
 
index fcd55ee..3057c0d 100644 (file)
@@ -1,3 +1,23 @@
+2012-12-14  David Dorwin  <ddorwin@chromium.org>
+
+        EME v0.1: Report defaultURL in KeyMessage.
+        https://bugs.webkit.org/show_bug.cgi?id=104284
+
+        Reviewed by Darin Fisher.
+
+        Passes defaultURL down from the media engine to HTMLMediaElement.
+        Only Valid URLs will be passed.
+
+        No test because Clear Key does not provide a defaultURL (in v0.1).
+
+        * public/WebMediaPlayerClient.h:
+        * src/WebMediaPlayerClientImpl.cpp:
+        (WebKit::WebMediaPlayerClientImpl::keyMessage):
+        (WebKit):
+        (WebKit::WebMediaPlayerClient::keyMessage):
+        * src/WebMediaPlayerClientImpl.h:
+        (WebMediaPlayerClientImpl):
+
 2012-12-13  Tien-Ren Chen  <trchen@chromium.org>
 
         Don't consider container nodes of other disambiguated nodes
index 1d9c64d..4abb0d4 100644 (file)
@@ -73,10 +73,12 @@ public:
     virtual WebMediaPlayer::Preload preload() const = 0;
     virtual void sourceOpened() = 0;
     virtual WebKit::WebURL sourceURL() const = 0;
-    virtual void keyAdded(const WebString&, const WebString&) = 0;
-    virtual void keyError(const WebString&, const WebString&, MediaKeyErrorCode, unsigned short systemCode) = 0;
-    virtual void keyMessage(const WebString&, const WebString&, const unsigned char*, unsigned) = 0;
-    virtual void keyNeeded(const WebString&, const WebString&, const unsigned char* initData, unsigned initDataLength) = 0;
+    virtual void keyAdded(const WebString& keySystem, const WebString& sessionId) = 0;
+    virtual void keyError(const WebString& keySystem, const WebString& sessionId, MediaKeyErrorCode, unsigned short systemCode) = 0;
+    virtual void keyMessage(const WebString& keySystem, const WebString& sessionId, const unsigned char* message, unsigned messageLength, const WebURL& defaultURL) = 0;
+    // FIXME(ddorwin): Remove after rolling WebKit in Chromium and Chromium is updated to use the new signature.
+    virtual void keyMessage(const WebString& keySystem, const WebString& sessionId, const unsigned char* message, unsigned messageLength);
+    virtual void keyNeeded(const WebString& keySystem, const WebString& sessionId, const unsigned char* initData, unsigned initDataLength) = 0;
     // The returned pointer is valid until closeHelperPlugin() is called.
     // Returns 0 if the plugin could not be instantiated.
     virtual WebPlugin* createHelperPlugin(const WebString& pluginType, WebFrame*) = 0;
index e75c739..b0e33dc 100644 (file)
@@ -251,19 +251,26 @@ void WebMediaPlayerClientImpl::keyError(const WebString& keySystem, const WebStr
 #endif
 }
 
-void WebMediaPlayerClientImpl::keyMessage(const WebString& keySystem, const WebString& sessionId, const unsigned char* message, unsigned messageLength)
+void WebMediaPlayerClientImpl::keyMessage(const WebString& keySystem, const WebString& sessionId, const unsigned char* message, unsigned messageLength, const WebURL& defaultURL)
 {
 #if ENABLE(ENCRYPTED_MEDIA)
     ASSERT(m_mediaPlayer);
-    m_mediaPlayer->keyMessage(keySystem, sessionId, message, messageLength);
+    m_mediaPlayer->keyMessage(keySystem, sessionId, message, messageLength, defaultURL);
 #else
     UNUSED_PARAM(keySystem);
     UNUSED_PARAM(sessionId);
     UNUSED_PARAM(message);
     UNUSED_PARAM(messageLength);
+    UNUSED_PARAM(defaultURL);
 #endif
 }
 
+// FIXME(ddorwin): Remove after rolling WebKit in Chromium and Chromium is updated to use the new signature.
+void WebMediaPlayerClient::keyMessage(const WebString& keySystem, const WebString& sessionId, const unsigned char* message, unsigned messageLength)
+{
+    keyMessage(keySystem, sessionId, message, messageLength, WebURL());
+}
+
 void WebMediaPlayerClientImpl::keyNeeded(const WebString& keySystem, const WebString& sessionId, const unsigned char* initData, unsigned initDataLength)
 {
 #if ENABLE(ENCRYPTED_MEDIA)
index 73eb78f..3f70c73 100644 (file)
@@ -88,7 +88,7 @@ public:
     virtual WebKit::WebURL sourceURL() const;
     virtual void keyAdded(const WebString& keySystem, const WebString& sessionId);
     virtual void keyError(const WebString& keySystem, const WebString& sessionId, MediaKeyErrorCode, unsigned short systemCode);
-    virtual void keyMessage(const WebString& keySystem, const WebString& sessionId, const unsigned char* message, unsigned messageLength);
+    virtual void keyMessage(const WebString& keySystem, const WebString& sessionId, const unsigned char* message, unsigned messageLength, const WebURL& defaultURL);
     virtual void keyNeeded(const WebString& keySystem, const WebString& sessionId, const unsigned char* initData, unsigned initDataLength);
     virtual WebPlugin* createHelperPlugin(const WebString& pluginType, WebFrame*);
     virtual void closeHelperPlugin();