Title: [144748] trunk
Revision
144748
Author
[email protected]
Date
2013-03-05 03:34:38 -0800 (Tue, 05 Mar 2013)

Log Message

MediaStream API: Add the getStreamById method on RTCPeerConnection
https://bugs.webkit.org/show_bug.cgi?id=111311

Reviewed by Adam Barth.

Source/Platform:

Added an initial initialize method which doesn't take an id;
the id will be generated for you.

* chromium/public/WebMediaStream.h:
(WebMediaStream):

Source/WebCore:

Adding the missing method on RTCPeerConnection defined here:
http://dev.w3.org/2011/webrtc/editor/webrtc.html#widl-RTCPeerConnection-getStreamById-MediaStream-DOMString-streamId

Existing tests have been extended to cover patch.

* Modules/mediastream/RTCPeerConnection.cpp:
(WebCore::RTCPeerConnection::getStreamById):
(WebCore):
* Modules/mediastream/RTCPeerConnection.h:
(RTCPeerConnection):
* Modules/mediastream/RTCPeerConnection.idl:
* platform/chromium/support/WebMediaStream.cpp:
(WebKit::WebMediaStream::initialize):
(WebKit):
* platform/mediastream/MediaStreamSource.cpp:
(WebCore::MediaStreamSource::setReadyState):

Tools:

Changing mocks to be more realistic.

* DumpRenderTree/chromium/TestRunner/src/MockWebRTCPeerConnectionHandler.cpp:
(WebTestRunner::MockWebRTCPeerConnectionHandler::addStream):
(WebTestRunner::MockWebRTCPeerConnectionHandler::removeStream):
* DumpRenderTree/chromium/TestRunner/src/WebUserMediaClientMock.cpp:
(WebTestRunner::WebUserMediaClientMock::requestUserMedia):

LayoutTests:

* fast/mediastream/MediaStream-add-remove-tracks.html:
* fast/mediastream/RTCPeerConnection-AddRemoveStream-expected.txt:
* fast/mediastream/RTCPeerConnection-AddRemoveStream.html:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (144747 => 144748)


--- trunk/LayoutTests/ChangeLog	2013-03-05 11:31:28 UTC (rev 144747)
+++ trunk/LayoutTests/ChangeLog	2013-03-05 11:34:38 UTC (rev 144748)
@@ -1,3 +1,14 @@
+2013-03-05  Tommy Widenflycht  <[email protected]>
+
+        MediaStream API: Add the getStreamById method on RTCPeerConnection
+        https://bugs.webkit.org/show_bug.cgi?id=111311
+
+        Reviewed by Adam Barth.
+
+        * fast/mediastream/MediaStream-add-remove-tracks.html:
+        * fast/mediastream/RTCPeerConnection-AddRemoveStream-expected.txt:
+        * fast/mediastream/RTCPeerConnection-AddRemoveStream.html:
+
 2013-03-05  Antoine Quint  <[email protected]>
 
         Web Inspector: allow retrieval of composited layers in a given DOM subtree

Modified: trunk/LayoutTests/fast/mediastream/MediaStream-add-remove-tracks.html (144747 => 144748)


--- trunk/LayoutTests/fast/mediastream/MediaStream-add-remove-tracks.html	2013-03-05 11:31:28 UTC (rev 144747)
+++ trunk/LayoutTests/fast/mediastream/MediaStream-add-remove-tracks.html	2013-03-05 11:34:38 UTC (rev 144748)
@@ -83,7 +83,7 @@
 
     // (re-)add tracks
     tryAddTrack(stream1, audioTrack);
-    tryAddTrack(stream1, videoTrack);    
+    tryAddTrack(stream1, videoTrack);
 
     // verify added tracks
     shouldBe('stream1.getAudioTracks().length', '1');

Modified: trunk/LayoutTests/fast/mediastream/RTCPeerConnection-AddRemoveStream-expected.txt (144747 => 144748)


--- trunk/LayoutTests/fast/mediastream/RTCPeerConnection-AddRemoveStream-expected.txt	2013-03-05 11:31:28 UTC (rev 144747)
+++ trunk/LayoutTests/fast/mediastream/RTCPeerConnection-AddRemoveStream-expected.txt	2013-03-05 11:34:38 UTC (rev 144748)
@@ -5,7 +5,10 @@
 
 PASS Got a stream.
 PASS Got another stream.
+PASS stream.id === stream2.id is false
 PASS onAddStream was called.
+PASS pc.getStreamById(stream.id) is stream
+PASS pc.getStreamById(stream2.id) is null
 PASS pc.getLocalStreams().length is 1
 PASS pc.getLocalStreams().length is 1
 PASS onRemoveStream was called.

Modified: trunk/LayoutTests/fast/mediastream/RTCPeerConnection-AddRemoveStream.html (144747 => 144748)


--- trunk/LayoutTests/fast/mediastream/RTCPeerConnection-AddRemoveStream.html	2013-03-05 11:31:28 UTC (rev 144747)
+++ trunk/LayoutTests/fast/mediastream/RTCPeerConnection-AddRemoveStream.html	2013-03-05 11:34:38 UTC (rev 144748)
@@ -25,8 +25,8 @@
     }
 }
 
-function onErroneousRemoveStream() {
-    testFailed('onErroneousRemoveStream was called.');
+function onErroneousNegotiationNeeded() {
+    testFailed('onErroneousNegotiationNeeded was called.');
     finishJSTest();
 }
 
@@ -38,23 +38,19 @@
     finishJSTest();
 }
 
-function onErroneousAddStream() {
-    testFailed('onErroneousAddStream was called.');
-    finishJSTest();
-}
-
 function onAddStream(event) {
     testPassed('onAddStream was called.');
 
-    pc._onaddstream_ = onErroneousAddStream;
+    shouldBe('pc.getStreamById(stream.id)', 'stream');
+    shouldBe('pc.getStreamById(stream2.id)', 'null');
+
+    pc._onnegotiationneeded_ = onErroneousNegotiationNeeded;
     pc.addStream(stream);
     shouldBe('pc.getLocalStreams().length', '1');
-
-    pc._onremovestream_ = onErroneousRemoveStream;
     pc.removeStream(stream2);
     shouldBe('pc.getLocalStreams().length', '1');
 
-    pc._onremovestream_ = onRemoveStream;
+    pc._onnegotiationneeded_ = onRemoveStream;
     pc.removeStream(stream);
 }
 
@@ -62,9 +58,10 @@
     testPassed('Got another stream.');
     stream2 = s;
 
-    pc = new webkitRTCPeerConnection(null, null);
+    shouldBeFalse("stream.id === stream2.id");
 
-    pc._onaddstream_ = onAddStream;
+    pc = new webkitRTCPeerConnection(null, null);
+    pc._onnegotiationneeded_ = onAddStream;
     pc.addStream(stream);
 }
 

Modified: trunk/LayoutTests/platform/chromium/TestExpectations (144747 => 144748)


--- trunk/LayoutTests/platform/chromium/TestExpectations	2013-03-05 11:31:28 UTC (rev 144747)
+++ trunk/LayoutTests/platform/chromium/TestExpectations	2013-03-05 11:34:38 UTC (rev 144748)
@@ -4412,7 +4412,4 @@
 
 # These test are failing since r144519
 webkit.org/b/109769 [ Mac ] fast/events/touch/gesture/touch-gesture-noscroll-body-yhidden.html [ Failure ]
-webkit.org/b/109769 [ Mac ] fast/events/touch/gesture/touch-gesture-noscroll-body-propagated.html [ Failure ] 
-
-# New crashing test since r144610
-webkit.org/b/111410 [ Debug ] fast/mediastream/MediaStream-add-remove-tracks.html [ Crash ]
+webkit.org/b/109769 [ Mac ] fast/events/touch/gesture/touch-gesture-noscroll-body-propagated.html [ Failure ]

Modified: trunk/Source/Platform/ChangeLog (144747 => 144748)


--- trunk/Source/Platform/ChangeLog	2013-03-05 11:31:28 UTC (rev 144747)
+++ trunk/Source/Platform/ChangeLog	2013-03-05 11:34:38 UTC (rev 144748)
@@ -1,3 +1,16 @@
+2013-03-05  Tommy Widenflycht  <[email protected]>
+
+        MediaStream API: Add the getStreamById method on RTCPeerConnection
+        https://bugs.webkit.org/show_bug.cgi?id=111311
+
+        Reviewed by Adam Barth.
+
+        Added an initial initialize method which doesn't take an id;
+        the id will be generated for you.
+
+        * chromium/public/WebMediaStream.h:
+        (WebMediaStream):
+
 2013-03-04  Chris Rogers  <[email protected]>
 
         Add audio hardware support for multi-channel by implementing AudioDestinationNode.maxChannelCount

Modified: trunk/Source/Platform/chromium/public/WebMediaStream.h (144747 => 144748)


--- trunk/Source/Platform/chromium/public/WebMediaStream.h	2013-03-05 11:31:28 UTC (rev 144747)
+++ trunk/Source/Platform/chromium/public/WebMediaStream.h	2013-03-05 11:34:38 UTC (rev 144748)
@@ -62,6 +62,7 @@
     // DEPRECATED
     WEBKIT_EXPORT void initialize(const WebString& label, const WebVector<WebMediaStreamSource>& audioSources, const WebVector<WebMediaStreamSource>& videoSources);
 
+    WEBKIT_EXPORT void initialize(const WebVector<WebMediaStreamTrack>& audioTracks, const WebVector<WebMediaStreamTrack>& videoTracks);
     WEBKIT_EXPORT void initialize(const WebString& label, const WebVector<WebMediaStreamTrack>& audioTracks, const WebVector<WebMediaStreamTrack>& videoTracks);
 
     WEBKIT_EXPORT void reset();

Modified: trunk/Source/WebCore/ChangeLog (144747 => 144748)


--- trunk/Source/WebCore/ChangeLog	2013-03-05 11:31:28 UTC (rev 144747)
+++ trunk/Source/WebCore/ChangeLog	2013-03-05 11:34:38 UTC (rev 144748)
@@ -1,3 +1,27 @@
+2013-03-05  Tommy Widenflycht  <[email protected]>
+
+        MediaStream API: Add the getStreamById method on RTCPeerConnection
+        https://bugs.webkit.org/show_bug.cgi?id=111311
+
+        Reviewed by Adam Barth.
+
+        Adding the missing method on RTCPeerConnection defined here:
+        http://dev.w3.org/2011/webrtc/editor/webrtc.html#widl-RTCPeerConnection-getStreamById-MediaStream-DOMString-streamId
+
+        Existing tests have been extended to cover patch.
+
+        * Modules/mediastream/RTCPeerConnection.cpp:
+        (WebCore::RTCPeerConnection::getStreamById):
+        (WebCore):
+        * Modules/mediastream/RTCPeerConnection.h:
+        (RTCPeerConnection):
+        * Modules/mediastream/RTCPeerConnection.idl:
+        * platform/chromium/support/WebMediaStream.cpp:
+        (WebKit::WebMediaStream::initialize):
+        (WebKit):
+        * platform/mediastream/MediaStreamSource.cpp:
+        (WebCore::MediaStreamSource::setReadyState):
+
 2013-03-05  Antoine Quint  <[email protected]>
 
         Web Inspector: allow retrieval of composited layers in a given DOM subtree

Modified: trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp (144747 => 144748)


--- trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp	2013-03-05 11:31:28 UTC (rev 144747)
+++ trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp	2013-03-05 11:34:38 UTC (rev 144748)
@@ -431,6 +431,21 @@
     return m_remoteStreams;
 }
 
+MediaStream* RTCPeerConnection::getStreamById(const String& streamId)
+{
+    for (MediaStreamVector::iterator iter = m_localStreams.begin(); iter != m_localStreams.end(); ++iter) {
+        if ((*iter)->id() == streamId)
+            return iter->get();
+    }
+
+    for (MediaStreamVector::iterator iter = m_remoteStreams.begin(); iter != m_remoteStreams.end(); ++iter) {
+        if ((*iter)->id() == streamId)
+            return iter->get();
+    }
+
+    return 0;
+}
+
 void RTCPeerConnection::getStats(PassRefPtr<RTCStatsCallback> successCallback, PassRefPtr<MediaStreamTrack> selector)
 {
     RefPtr<RTCStatsRequestImpl> statsRequest = RTCStatsRequestImpl::create(scriptExecutionContext(), successCallback, selector);

Modified: trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.h (144747 => 144748)


--- trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.h	2013-03-05 11:31:28 UTC (rev 144747)
+++ trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.h	2013-03-05 11:34:38 UTC (rev 144748)
@@ -89,6 +89,8 @@
 
     MediaStreamVector getRemoteStreams() const;
 
+    MediaStream* getStreamById(const String& streamId);
+
     void addStream(PassRefPtr<MediaStream>, const Dictionary& mediaConstraints, ExceptionCode&);
 
     void removeStream(PassRefPtr<MediaStream>, ExceptionCode&);

Modified: trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.idl (144747 => 144748)


--- trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.idl	2013-03-05 11:31:28 UTC (rev 144747)
+++ trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.idl	2013-03-05 11:34:38 UTC (rev 144748)
@@ -68,6 +68,7 @@
 
     sequence<MediaStream> getLocalStreams();
     sequence<MediaStream> getRemoteStreams();
+    MediaStream getStreamById(DOMString streamId);
 
     [StrictTypeChecking] void addStream(in MediaStream stream, in [Optional] Dictionary mediaConstraints)
         raises(DOMException);

Modified: trunk/Source/WebCore/platform/chromium/support/WebMediaStream.cpp (144747 => 144748)


--- trunk/Source/WebCore/platform/chromium/support/WebMediaStream.cpp	2013-03-05 11:31:28 UTC (rev 144747)
+++ trunk/Source/WebCore/platform/chromium/support/WebMediaStream.cpp	2013-03-05 11:34:38 UTC (rev 144748)
@@ -31,6 +31,7 @@
 #include "MediaStreamComponent.h"
 #include "MediaStreamDescriptor.h"
 #include "MediaStreamSource.h"
+#include "UUID.h"
 #include <public/WebMediaStreamSource.h>
 #include <public/WebMediaStreamTrack.h>
 #include <public/WebString.h>
@@ -142,6 +143,11 @@
     m_private = MediaStreamDescriptor::create(label, audio, video);
 }
 
+void WebMediaStream::initialize(const WebVector<WebMediaStreamTrack>& audioTracks, const WebVector<WebMediaStreamTrack>& videoTracks)
+{
+    initialize(createCanonicalUUIDString(), audioTracks, videoTracks);
+}
+
 void WebMediaStream::initialize(const WebString& label, const WebVector<WebMediaStreamTrack>& audioTracks, const WebVector<WebMediaStreamTrack>& videoTracks)
 {
     MediaStreamComponentVector audio, video;

Modified: trunk/Source/WebCore/platform/mediastream/MediaStreamSource.cpp (144747 => 144748)


--- trunk/Source/WebCore/platform/mediastream/MediaStreamSource.cpp	2013-03-05 11:31:28 UTC (rev 144747)
+++ trunk/Source/WebCore/platform/mediastream/MediaStreamSource.cpp	2013-03-05 11:34:38 UTC (rev 144748)
@@ -53,8 +53,7 @@
 
 void MediaStreamSource::setReadyState(ReadyState readyState)
 {
-    ASSERT(m_readyState != ReadyStateEnded);
-    if (m_readyState != readyState) {
+    if (m_readyState != ReadyStateEnded && m_readyState != readyState) {
         m_readyState = readyState;
         for (Vector<Observer*>::iterator i = m_observers.begin(); i != m_observers.end(); ++i)
             (*i)->sourceChangedState();

Modified: trunk/Tools/ChangeLog (144747 => 144748)


--- trunk/Tools/ChangeLog	2013-03-05 11:31:28 UTC (rev 144747)
+++ trunk/Tools/ChangeLog	2013-03-05 11:34:38 UTC (rev 144748)
@@ -1,3 +1,18 @@
+2013-03-05  Tommy Widenflycht  <[email protected]>
+
+        MediaStream API: Add the getStreamById method on RTCPeerConnection
+        https://bugs.webkit.org/show_bug.cgi?id=111311
+
+        Reviewed by Adam Barth.
+
+        Changing mocks to be more realistic.
+
+        * DumpRenderTree/chromium/TestRunner/src/MockWebRTCPeerConnectionHandler.cpp:
+        (WebTestRunner::MockWebRTCPeerConnectionHandler::addStream):
+        (WebTestRunner::MockWebRTCPeerConnectionHandler::removeStream):
+        * DumpRenderTree/chromium/TestRunner/src/WebUserMediaClientMock.cpp:
+        (WebTestRunner::WebUserMediaClientMock::requestUserMedia):
+
 2013-03-05  Jochen Eisinger  <[email protected]>
 
         Add content shell bots to garden-o-matic for general failurse

Modified: trunk/Tools/DumpRenderTree/chromium/TestRunner/src/MockWebRTCPeerConnectionHandler.cpp (144747 => 144748)


--- trunk/Tools/DumpRenderTree/chromium/TestRunner/src/MockWebRTCPeerConnectionHandler.cpp	2013-03-05 11:31:28 UTC (rev 144747)
+++ trunk/Tools/DumpRenderTree/chromium/TestRunner/src/MockWebRTCPeerConnectionHandler.cpp	2013-03-05 11:34:38 UTC (rev 144748)
@@ -255,16 +255,14 @@
 
 bool MockWebRTCPeerConnectionHandler::addStream(const WebMediaStream& stream, const WebMediaConstraints&)
 {
-    m_streamCount += 1;
-    m_client->didAddRemoteStream(stream);
+    ++m_streamCount;
     m_client->negotiationNeeded();
     return true;
 }
 
 void MockWebRTCPeerConnectionHandler::removeStream(const WebMediaStream& stream)
 {
-    m_streamCount -= 1;
-    m_client->didRemoveRemoteStream(stream);
+    --m_streamCount;
     m_client->negotiationNeeded();
 }
 

Modified: trunk/Tools/DumpRenderTree/chromium/TestRunner/src/WebUserMediaClientMock.cpp (144747 => 144748)


--- trunk/Tools/DumpRenderTree/chromium/TestRunner/src/WebUserMediaClientMock.cpp	2013-03-05 11:31:28 UTC (rev 144747)
+++ trunk/Tools/DumpRenderTree/chromium/TestRunner/src/WebUserMediaClientMock.cpp	2013-03-05 11:34:38 UTC (rev 144748)
@@ -121,7 +121,7 @@
     }
 
     WebMediaStream stream;
-    stream.initialize("foobar", audioTracks, videoTracks);
+    stream.initialize(audioTracks, videoTracks);
 
     stream.setExtraData(new MockExtraData());
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to