Title: [128166] trunk
Revision
128166
Author
[email protected]
Date
2012-09-11 03:29:23 -0700 (Tue, 11 Sep 2012)

Log Message

MediaStream API: add RTCPeerConnection::onnegotiationneeded
https://bugs.webkit.org/show_bug.cgi?id=96097

Reviewed by Adam Barth.

Source/Platform:

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

Source/WebCore:

This patch adds the last callback to RTCPeerConnection: onnegotiationneeded.
This is called whenever the state in the RTCPeerConnection changes and that
change needs to be sent to the other side.

Test: fast/mediastream/RTCPeerConnection-onnegotiationneeded.html

* Modules/mediastream/RTCPeerConnection.cpp:
(WebCore::RTCPeerConnection::negotiationNeeded):
(WebCore):
* Modules/mediastream/RTCPeerConnection.h:
(RTCPeerConnection):
* Modules/mediastream/RTCPeerConnection.idl:
* dom/EventNames.h:
(WebCore):
* platform/mediastream/RTCPeerConnectionHandlerClient.h:
(RTCPeerConnectionHandlerClient):
* platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.cpp:
(WebCore::RTCPeerConnectionHandlerChromium::negotiationNeeded):
(WebCore):
* platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.h:
(RTCPeerConnectionHandlerChromium):

Tools:

* DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
(MockWebRTCPeerConnectionHandler::addStream):
(MockWebRTCPeerConnectionHandler::removeStream):

LayoutTests:

* fast/mediastream/RTCPeerConnection-onnegotiationneeded-expected.txt: Added.
* fast/mediastream/RTCPeerConnection-onnegotiationneeded.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (128165 => 128166)


--- trunk/LayoutTests/ChangeLog	2012-09-11 10:11:59 UTC (rev 128165)
+++ trunk/LayoutTests/ChangeLog	2012-09-11 10:29:23 UTC (rev 128166)
@@ -1,3 +1,13 @@
+2012-09-11  Tommy Widenflycht  <[email protected]>
+
+        MediaStream API: add RTCPeerConnection::onnegotiationneeded
+        https://bugs.webkit.org/show_bug.cgi?id=96097
+
+        Reviewed by Adam Barth.
+
+        * fast/mediastream/RTCPeerConnection-onnegotiationneeded-expected.txt: Added.
+        * fast/mediastream/RTCPeerConnection-onnegotiationneeded.html: Added.
+
 2012-09-11  Christophe Dumez  <[email protected]>
 
         WTR needs an implementation of applicationCacheDiskUsageForOrigin

Added: trunk/LayoutTests/fast/mediastream/RTCPeerConnection-onnegotiationneeded-expected.txt (0 => 128166)


--- trunk/LayoutTests/fast/mediastream/RTCPeerConnection-onnegotiationneeded-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/mediastream/RTCPeerConnection-onnegotiationneeded-expected.txt	2012-09-11 10:29:23 UTC (rev 128166)
@@ -0,0 +1,11 @@
+Tests RTCPeerConnection onnegotiationneeded.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS Got a stream.
+PASS onNegotationNeeded was called.
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Added: trunk/LayoutTests/fast/mediastream/RTCPeerConnection-onnegotiationneeded.html (0 => 128166)


--- trunk/LayoutTests/fast/mediastream/RTCPeerConnection-onnegotiationneeded.html	                        (rev 0)
+++ trunk/LayoutTests/fast/mediastream/RTCPeerConnection-onnegotiationneeded.html	2012-09-11 10:29:23 UTC (rev 128166)
@@ -0,0 +1,50 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src=""
+</head>
+<body>
+<script>
+description("Tests RTCPeerConnection onnegotiationneeded.");
+
+var stream = null;
+var pc = null;
+
+function error() {
+    testFailed('Stream generation failed.');
+    finishJSTest();
+}
+
+function getUserMedia(dictionary, callback) {
+    try {
+        navigator.webkitGetUserMedia(dictionary, callback, error);
+    } catch (e) {
+        testFailed('webkitGetUserMedia threw exception :' + e);
+        finishJSTest();
+    }
+}
+
+function onNegotationNeeded(event) {
+    testPassed('onNegotationNeeded was called.');
+
+    finishJSTest();
+}
+
+function gotStream(s) {
+    testPassed('Got a stream.');
+    stream = s;
+
+    pc = new webkitRTCPeerConnection(null, null);
+    pc._onnegotationneeded_ = onNegotationNeeded;
+
+    pc.addStream(stream);
+}
+
+getUserMedia({audio:true, video:true}, gotStream);
+
+window.jsTestIsAsync = true;
+window.successfullyParsed = true;
+</script>
+<script src=""
+</body>
+</html>

Modified: trunk/Source/Platform/ChangeLog (128165 => 128166)


--- trunk/Source/Platform/ChangeLog	2012-09-11 10:11:59 UTC (rev 128165)
+++ trunk/Source/Platform/ChangeLog	2012-09-11 10:29:23 UTC (rev 128166)
@@ -1,3 +1,13 @@
+2012-09-11  Tommy Widenflycht  <[email protected]>
+
+        MediaStream API: add RTCPeerConnection::onnegotiationneeded
+        https://bugs.webkit.org/show_bug.cgi?id=96097
+
+        Reviewed by Adam Barth.
+
+        * chromium/public/WebRTCPeerConnectionHandlerClient.h:
+        (WebRTCPeerConnectionHandlerClient):
+
 2012-09-10  Adrienne Walker  <[email protected]>
 
         [chromium] Fix deadlock between WebMediaPlayerClientImpl dtor and PutCurrentFrame

Modified: trunk/Source/Platform/chromium/public/WebRTCPeerConnectionHandlerClient.h (128165 => 128166)


--- trunk/Source/Platform/chromium/public/WebRTCPeerConnectionHandlerClient.h	2012-09-11 10:11:59 UTC (rev 128165)
+++ trunk/Source/Platform/chromium/public/WebRTCPeerConnectionHandlerClient.h	2012-09-11 10:29:23 UTC (rev 128166)
@@ -58,6 +58,7 @@
 
     virtual ~WebRTCPeerConnectionHandlerClient() { }
 
+    virtual void negotiationNeeded() = 0;
     virtual void didGenerateICECandidate(const WebRTCICECandidate&) = 0;
     virtual void didChangeReadyState(ReadyState) = 0;
     virtual void didChangeICEState(ICEState) = 0;

Modified: trunk/Source/WebCore/ChangeLog (128165 => 128166)


--- trunk/Source/WebCore/ChangeLog	2012-09-11 10:11:59 UTC (rev 128165)
+++ trunk/Source/WebCore/ChangeLog	2012-09-11 10:29:23 UTC (rev 128166)
@@ -1,3 +1,32 @@
+2012-09-11  Tommy Widenflycht  <[email protected]>
+
+        MediaStream API: add RTCPeerConnection::onnegotiationneeded
+        https://bugs.webkit.org/show_bug.cgi?id=96097
+
+        Reviewed by Adam Barth.
+
+        This patch adds the last callback to RTCPeerConnection: onnegotiationneeded.
+        This is called whenever the state in the RTCPeerConnection changes and that
+        change needs to be sent to the other side.
+
+        Test: fast/mediastream/RTCPeerConnection-onnegotiationneeded.html
+
+        * Modules/mediastream/RTCPeerConnection.cpp:
+        (WebCore::RTCPeerConnection::negotiationNeeded):
+        (WebCore):
+        * Modules/mediastream/RTCPeerConnection.h:
+        (RTCPeerConnection):
+        * Modules/mediastream/RTCPeerConnection.idl:
+        * dom/EventNames.h:
+        (WebCore):
+        * platform/mediastream/RTCPeerConnectionHandlerClient.h:
+        (RTCPeerConnectionHandlerClient):
+        * platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.cpp:
+        (WebCore::RTCPeerConnectionHandlerChromium::negotiationNeeded):
+        (WebCore):
+        * platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.h:
+        (RTCPeerConnectionHandlerChromium):
+
 2012-09-11  Kent Tamura  <[email protected]>
 
         Sort an Xcode project file.

Modified: trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp (128165 => 128166)


--- trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp	2012-09-11 10:11:59 UTC (rev 128165)
+++ trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp	2012-09-11 10:29:23 UTC (rev 128166)
@@ -391,6 +391,11 @@
     stop();
 }
 
+void RTCPeerConnection::negotiationNeeded()
+{
+    dispatchEvent(Event::create(eventNames().negotationneededEvent, false, false));
+}
+
 void RTCPeerConnection::didGenerateIceCandidate(PassRefPtr<RTCIceCandidateDescriptor> iceCandidateDescriptor)
 {
     ASSERT(scriptExecutionContext()->isContextThread());

Modified: trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.h (128165 => 128166)


--- trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.h	2012-09-11 10:11:59 UTC (rev 128165)
+++ trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.h	2012-09-11 10:29:23 UTC (rev 128166)
@@ -86,6 +86,7 @@
 
     void close(ExceptionCode&);
 
+    DEFINE_ATTRIBUTE_EVENT_LISTENER(negotationneeded);
     DEFINE_ATTRIBUTE_EVENT_LISTENER(icecandidate);
     DEFINE_ATTRIBUTE_EVENT_LISTENER(open);
     DEFINE_ATTRIBUTE_EVENT_LISTENER(statechange);
@@ -94,6 +95,7 @@
     DEFINE_ATTRIBUTE_EVENT_LISTENER(icechange);
 
     // RTCPeerConnectionHandlerClient
+    virtual void negotiationNeeded() OVERRIDE;
     virtual void didGenerateIceCandidate(PassRefPtr<RTCIceCandidateDescriptor>) OVERRIDE;
     virtual void didChangeReadyState(ReadyState) OVERRIDE;
     virtual void didChangeIceState(IceState) OVERRIDE;

Modified: trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.idl (128165 => 128166)


--- trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.idl	2012-09-11 10:11:59 UTC (rev 128165)
+++ trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.idl	2012-09-11 10:29:23 UTC (rev 128166)
@@ -75,6 +75,7 @@
         void close()
             raises(DOMException);
 
+        attribute EventListener onnegotationneeded;
         attribute EventListener onicecandidate;
         attribute EventListener onopen;
         attribute EventListener onstatechange;

Modified: trunk/Source/WebCore/dom/EventNames.h (128165 => 128166)


--- trunk/Source/WebCore/dom/EventNames.h	2012-09-11 10:11:59 UTC (rev 128165)
+++ trunk/Source/WebCore/dom/EventNames.h	2012-09-11 10:29:23 UTC (rev 128166)
@@ -229,6 +229,7 @@
     macro(unmute) \
     macro(icechange) \
     macro(icecandidate) \
+    macro(negotationneeded) \
     \
     macro(show) \
     \

Modified: trunk/Source/WebCore/platform/mediastream/RTCPeerConnectionHandlerClient.h (128165 => 128166)


--- trunk/Source/WebCore/platform/mediastream/RTCPeerConnectionHandlerClient.h	2012-09-11 10:11:59 UTC (rev 128165)
+++ trunk/Source/WebCore/platform/mediastream/RTCPeerConnectionHandlerClient.h	2012-09-11 10:29:23 UTC (rev 128166)
@@ -63,6 +63,7 @@
 
     virtual ~RTCPeerConnectionHandlerClient() { }
 
+    virtual void negotiationNeeded() = 0;
     virtual void didGenerateIceCandidate(PassRefPtr<RTCIceCandidateDescriptor>) = 0;
     virtual void didChangeReadyState(ReadyState) = 0;
     virtual void didChangeIceState(IceState) = 0;

Modified: trunk/Source/WebCore/platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.cpp (128165 => 128166)


--- trunk/Source/WebCore/platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.cpp	2012-09-11 10:11:59 UTC (rev 128165)
+++ trunk/Source/WebCore/platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.cpp	2012-09-11 10:29:23 UTC (rev 128166)
@@ -164,6 +164,11 @@
     m_webHandler->stop();
 }
 
+void RTCPeerConnectionHandlerChromium::negotiationNeeded()
+{
+    m_client->negotiationNeeded();
+}
+
 void RTCPeerConnectionHandlerChromium::didGenerateICECandidate(const WebKit::WebRTCICECandidate& iceCandidate)
 {
     m_client->didGenerateIceCandidate(iceCandidate);

Modified: trunk/Source/WebCore/platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.h (128165 => 128166)


--- trunk/Source/WebCore/platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.h	2012-09-11 10:11:59 UTC (rev 128165)
+++ trunk/Source/WebCore/platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.h	2012-09-11 10:29:23 UTC (rev 128166)
@@ -67,6 +67,7 @@
     virtual void stop() OVERRIDE;
 
     // WebKit::WebRTCPeerConnectionHandlerClient implementation.
+    virtual void negotiationNeeded() OVERRIDE;
     virtual void didGenerateICECandidate(const WebKit::WebRTCICECandidate&) OVERRIDE;
     virtual void didChangeReadyState(WebKit::WebRTCPeerConnectionHandlerClient::ReadyState) OVERRIDE;
     virtual void didChangeICEState(WebKit::WebRTCPeerConnectionHandlerClient::ICEState) OVERRIDE;

Modified: trunk/Tools/ChangeLog (128165 => 128166)


--- trunk/Tools/ChangeLog	2012-09-11 10:11:59 UTC (rev 128165)
+++ trunk/Tools/ChangeLog	2012-09-11 10:29:23 UTC (rev 128166)
@@ -1,3 +1,14 @@
+2012-09-11  Tommy Widenflycht  <[email protected]>
+
+        MediaStream API: add RTCPeerConnection::onnegotiationneeded
+        https://bugs.webkit.org/show_bug.cgi?id=96097
+
+        Reviewed by Adam Barth.
+
+        * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
+        (MockWebRTCPeerConnectionHandler::addStream):
+        (MockWebRTCPeerConnectionHandler::removeStream):
+
 2012-09-11  Peter Beverloo  <[email protected]>
 
         Recognize the "--chromium-android" argument in run-webkit-tests

Modified: trunk/Tools/DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp (128165 => 128166)


--- trunk/Tools/DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp	2012-09-11 10:11:59 UTC (rev 128165)
+++ trunk/Tools/DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp	2012-09-11 10:29:23 UTC (rev 128166)
@@ -213,12 +213,14 @@
 bool MockWebRTCPeerConnectionHandler::addStream(const WebMediaStreamDescriptor& stream, const WebMediaConstraints&)
 {
     m_client->didAddRemoteStream(stream);
+    m_client->negotiationNeeded();
     return true;
 }
 
 void MockWebRTCPeerConnectionHandler::removeStream(const WebMediaStreamDescriptor& stream)
 {
     m_client->didRemoveRemoteStream(stream);
+    m_client->negotiationNeeded();
 }
 
 void MockWebRTCPeerConnectionHandler::stop()
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to