Title: [129145] trunk
Revision
129145
Author
[email protected]
Date
2012-09-20 11:23:13 -0700 (Thu, 20 Sep 2012)

Log Message

MediaStream API: Extend UserMediaRequest with a ownerDocument method
https://bugs.webkit.org/show_bug.cgi?id=97095

Reviewed by Adam Barth.

Source/WebCore:

Chromium need to know exactly which frame called getUserMedia so that it can
clean away the stream when the frame goes away.
Since that information is available in webkit add an accessor method.

Chromium mock class extended to test the added method.

* Modules/mediastream/UserMediaRequest.cpp:
(WebCore::UserMediaRequest::ownerDocument):
(WebCore):
* Modules/mediastream/UserMediaRequest.h:
(WebCore):
(UserMediaRequest):

Source/WebKit/chromium:

Chromium need to know exactly which frame called getUserMedia so that it can clean
away the stream when the frame goes away.
Since that information is available in webkit add an accessor method.

Also taking the opportunity to remove an unused deprecated method,
and adding asserts in case the object is empty.

* public/WebUserMediaRequest.h:
(WebKit):
(WebUserMediaRequest):
* src/WebUserMediaRequest.cpp:
(WebKit::WebUserMediaRequest::ownerDocument):

Tools:

Extending WebUserMediaClientMock to check that the owning document is valid,
and that the document has a frame.

* DumpRenderTree/chromium/WebUserMediaClientMock.cpp:
(WebKit::WebUserMediaClientMock::requestUserMedia):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (129144 => 129145)


--- trunk/Source/WebCore/ChangeLog	2012-09-20 18:20:26 UTC (rev 129144)
+++ trunk/Source/WebCore/ChangeLog	2012-09-20 18:23:13 UTC (rev 129145)
@@ -1,3 +1,23 @@
+2012-09-20  Tommy Widenflycht  <[email protected]>
+
+        MediaStream API: Extend UserMediaRequest with a ownerDocument method
+        https://bugs.webkit.org/show_bug.cgi?id=97095
+
+        Reviewed by Adam Barth.
+
+        Chromium need to know exactly which frame called getUserMedia so that it can
+        clean away the stream when the frame goes away.
+        Since that information is available in webkit add an accessor method.
+
+        Chromium mock class extended to test the added method.
+
+        * Modules/mediastream/UserMediaRequest.cpp:
+        (WebCore::UserMediaRequest::ownerDocument):
+        (WebCore):
+        * Modules/mediastream/UserMediaRequest.h:
+        (WebCore):
+        (UserMediaRequest):
+
 2012-09-20  Levi Weintraub  <[email protected]>
 
         Prevent reading stale data from InlineTextBoxes

Modified: trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp (129144 => 129145)


--- trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp	2012-09-20 18:20:26 UTC (rev 129144)
+++ trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp	2012-09-20 18:23:13 UTC (rev 129145)
@@ -36,6 +36,7 @@
 #include "UserMediaRequest.h"
 
 #include "Dictionary.h"
+#include "Document.h"
 #include "LocalMediaStream.h"
 #include "MediaStreamCenter.h"
 #include "MediaStreamDescriptor.h"
@@ -69,6 +70,16 @@
 {
 }
 
+Document* UserMediaRequest::ownerDocument()
+{
+    if (m_scriptExecutionContext) {
+        ASSERT(m_scriptExecutionContext->isDocument());
+        return static_cast<Document*>(m_scriptExecutionContext);
+    }
+
+    return 0;
+}
+
 void UserMediaRequest::start()
 {
     MediaStreamCenter::instance().queryMediaStreamSources(this);

Modified: trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.h (129144 => 129145)


--- trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.h	2012-09-20 18:20:26 UTC (rev 129144)
+++ trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.h	2012-09-20 18:23:13 UTC (rev 129145)
@@ -45,6 +45,7 @@
 namespace WebCore {
 
 class Dictionary;
+class Document;
 class MediaStreamDescriptor;
 class UserMediaController;
 
@@ -55,6 +56,7 @@
 
     NavigatorUserMediaSuccessCallback* successCallback() const { return m_successCallback.get(); }
     NavigatorUserMediaErrorCallback* errorCallback() const { return m_errorCallback.get(); }
+    Document* ownerDocument();
 
     void start();
 

Modified: trunk/Source/WebKit/chromium/ChangeLog (129144 => 129145)


--- trunk/Source/WebKit/chromium/ChangeLog	2012-09-20 18:20:26 UTC (rev 129144)
+++ trunk/Source/WebKit/chromium/ChangeLog	2012-09-20 18:23:13 UTC (rev 129145)
@@ -1,3 +1,23 @@
+2012-09-20  Tommy Widenflycht  <[email protected]>
+
+        MediaStream API: Extend UserMediaRequest with a ownerDocument method
+        https://bugs.webkit.org/show_bug.cgi?id=97095
+
+        Reviewed by Adam Barth.
+
+        Chromium need to know exactly which frame called getUserMedia so that it can clean
+        away the stream when the frame goes away.
+        Since that information is available in webkit add an accessor method.
+
+        Also taking the opportunity to remove an unused deprecated method,
+        and adding asserts in case the object is empty.
+
+        * public/WebUserMediaRequest.h:
+        (WebKit):
+        (WebUserMediaRequest):
+        * src/WebUserMediaRequest.cpp:
+        (WebKit::WebUserMediaRequest::ownerDocument):
+
 2012-09-20  Mike West  <[email protected]>
 
         [chromium] Adding the 'google_apis' directory to .gitignore.

Modified: trunk/Source/WebKit/chromium/public/WebUserMediaRequest.h (129144 => 129145)


--- trunk/Source/WebKit/chromium/public/WebUserMediaRequest.h	2012-09-20 18:20:26 UTC (rev 129144)
+++ trunk/Source/WebKit/chromium/public/WebUserMediaRequest.h	2012-09-20 18:23:13 UTC (rev 129145)
@@ -40,7 +40,7 @@
 }
 
 namespace WebKit {
-
+class WebDocument;
 class WebMediaStreamDescriptor;
 class WebMediaStreamSource;
 class WebString;
@@ -67,10 +67,8 @@
     WEBKIT_EXPORT bool video() const;
 
     WEBKIT_EXPORT WebSecurityOrigin securityOrigin() const;
+    WEBKIT_EXPORT WebDocument ownerDocument() const;
 
-    // DEPRECATED
-    WEBKIT_EXPORT void requestSucceeded(const WebVector<WebMediaStreamSource>& audioSources, const WebVector<WebMediaStreamSource>& videoSources);
-
     WEBKIT_EXPORT void requestSucceeded(const WebMediaStreamDescriptor&);
 
     WEBKIT_EXPORT void requestFailed();

Modified: trunk/Source/WebKit/chromium/src/WebUserMediaRequest.cpp (129144 => 129145)


--- trunk/Source/WebKit/chromium/src/WebUserMediaRequest.cpp	2012-09-20 18:20:26 UTC (rev 129144)
+++ trunk/Source/WebKit/chromium/src/WebUserMediaRequest.cpp	2012-09-20 18:23:13 UTC (rev 129145)
@@ -35,12 +35,11 @@
 #include "WebUserMediaRequest.h"
 
 #include "Document.h"
-#include "Frame.h"
 #include "MediaStreamDescriptor.h"
 #include "MediaStreamSource.h"
-#include "Page.h"
 #include "SecurityOrigin.h"
 #include "UserMediaRequest.h"
+#include "WebDocument.h"
 #include "WebSecurityOrigin.h"
 #include "platform/WebMediaStreamDescriptor.h"
 #include "platform/WebMediaStreamSource.h"
@@ -64,50 +63,37 @@
 
 bool WebUserMediaRequest::audio() const
 {
+    ASSERT(!isNull());
     return m_private->audio();
 }
 
 bool WebUserMediaRequest::video() const
 {
+    ASSERT(!isNull());
     return m_private->video();
 }
 
 WebSecurityOrigin WebUserMediaRequest::securityOrigin() const
 {
-    ASSERT(m_private->scriptExecutionContext());
+    ASSERT(!isNull() && m_private->scriptExecutionContext());
     return WebSecurityOrigin(m_private->scriptExecutionContext()->securityOrigin());
 }
 
-void WebUserMediaRequest::requestSucceeded(const WebVector<WebMediaStreamSource>& audioSources, const WebVector<WebMediaStreamSource>& videoSources)
+WebDocument WebUserMediaRequest::ownerDocument() const
 {
-    if (m_private.isNull())
-        return;
-
-    MediaStreamSourceVector audio;
-    for (size_t i = 0; i < audioSources.size(); ++i) {
-        MediaStreamSource* curr = audioSources[i];
-        audio.append(curr);
-    }
-    MediaStreamSourceVector video;
-    for (size_t i = 0; i < videoSources.size(); ++i) {
-        MediaStreamSource* curr = videoSources[i];
-        video.append(curr);
-    }
-
-    m_private->succeed(audio, video);
+    ASSERT(!isNull());
+    return WebDocument(m_private->ownerDocument());
 }
 
 void WebUserMediaRequest::requestSucceeded(const WebMediaStreamDescriptor& streamDescriptor)
 {
-    ASSERT(!streamDescriptor.isNull());
-    if (m_private.isNull())
-        return;
-
+    ASSERT(!isNull() && !streamDescriptor.isNull());
     m_private->succeed(streamDescriptor);
 }
 
 void WebUserMediaRequest::requestFailed()
 {
+    ASSERT(!isNull());
     m_private->fail();
 }
 

Modified: trunk/Tools/ChangeLog (129144 => 129145)


--- trunk/Tools/ChangeLog	2012-09-20 18:20:26 UTC (rev 129144)
+++ trunk/Tools/ChangeLog	2012-09-20 18:23:13 UTC (rev 129145)
@@ -1,3 +1,16 @@
+2012-09-20  Tommy Widenflycht  <[email protected]>
+
+        MediaStream API: Extend UserMediaRequest with a ownerDocument method
+        https://bugs.webkit.org/show_bug.cgi?id=97095
+
+        Reviewed by Adam Barth.
+
+        Extending WebUserMediaClientMock to check that the owning document is valid,
+        and that the document has a frame.
+
+        * DumpRenderTree/chromium/WebUserMediaClientMock.cpp:
+        (WebKit::WebUserMediaClientMock::requestUserMedia):
+
 2012-09-20  Stephen Chenney  <[email protected]>
 
         [Chromium] DRT does not support --dump-all-pixels flag

Modified: trunk/Tools/DumpRenderTree/chromium/WebUserMediaClientMock.cpp (129144 => 129145)


--- trunk/Tools/DumpRenderTree/chromium/WebUserMediaClientMock.cpp	2012-09-20 18:20:26 UTC (rev 129144)
+++ trunk/Tools/DumpRenderTree/chromium/WebUserMediaClientMock.cpp	2012-09-20 18:23:13 UTC (rev 129145)
@@ -33,6 +33,7 @@
 
 #include "WebUserMediaClientMock.h"
 
+#include "WebDocument.h"
 #include "WebMediaStreamRegistry.h"
 #include "WebUserMediaRequest.h"
 #include "platform/WebMediaStreamDescriptor.h"
@@ -57,6 +58,11 @@
     ASSERT(!streamRequest.isNull());
     WebUserMediaRequest request = streamRequest;
 
+    if (request.ownerDocument().isNull() || !request.ownerDocument().frame()) {
+        request.requestFailed();
+        return;
+    }
+
     const size_t zero = 0;
     const size_t _one_ = 1;
     WebVector<WebMediaStreamSource> audioSources(request.audio() ? one : zero);
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to