Title: [127365] trunk
Revision
127365
Author
[email protected]
Date
2012-09-01 00:54:31 -0700 (Sat, 01 Sep 2012)

Log Message

MediaStream API: Add MediaStream management to RTCPeerConnection
https://bugs.webkit.org/show_bug.cgi?id=95543

Reviewed by Adam Barth.

Source/Platform:

* chromium/public/WebMediaStreamCenter.h:
(WebMediaStreamCenter):
* chromium/public/WebRTCPeerConnectionHandler.h:
(WebKit):
(WebRTCPeerConnectionHandler):
* chromium/public/WebRTCPeerConnectionHandlerClient.h:
(WebKit):
(WebRTCPeerConnectionHandlerClient):

Source/WebCore:

This includes addStream/removeStream to RTCPeerConnection,
as well as didAddRemoteStream/didRemoveRemoteStream to RTCPeerConnectionHandlerClient.

Test: fast/mediastream/RTCPeerConnection-AddRemoveStream.html

* Modules/mediastream/RTCPeerConnection.cpp:
(WebCore::RTCPeerConnection::parseConfiguration):
(WebCore::RTCPeerConnection::RTCPeerConnection):
(WebCore::RTCPeerConnection::addStream):
(WebCore):
(WebCore::RTCPeerConnection::removeStream):
(WebCore::RTCPeerConnection::localStreams):
(WebCore::RTCPeerConnection::remoteStreams):
(WebCore::RTCPeerConnection::didAddRemoteStream):
(WebCore::RTCPeerConnection::didRemoveRemoteStream):
* Modules/mediastream/RTCPeerConnection.h:
(RTCPeerConnection):
* Modules/mediastream/RTCPeerConnection.idl:
* bindings/js/Dictionary.cpp:
(WebCore::Dictionary::getOwnPropertiesAsStringHashMap):
(WebCore::Dictionary::getOwnPropertyNames):
* bindings/v8/Dictionary.cpp:
(WebCore::Dictionary::getOwnPropertiesAsStringHashMap):
(WebCore::Dictionary::getOwnPropertyNames):
* bindings/v8/Dictionary.h:
(Dictionary):
* platform/mediastream/RTCPeerConnectionHandler.cpp:
(RTCPeerConnectionHandlerDummy):
(WebCore::RTCPeerConnectionHandlerDummy::addStream):
(WebCore):
(WebCore::RTCPeerConnectionHandlerDummy::removeStream):
* platform/mediastream/RTCPeerConnectionHandler.h:
(RTCPeerConnectionHandler):
* platform/mediastream/RTCPeerConnectionHandlerClient.h:
(WebCore):
(RTCPeerConnectionHandlerClient):
* platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.cpp:
(WebCore::RTCPeerConnectionHandlerChromium::addStream):
(WebCore):
(WebCore::RTCPeerConnectionHandlerChromium::removeStream):
(WebCore::RTCPeerConnectionHandlerChromium::didAddRemoteStream):
(WebCore::RTCPeerConnectionHandlerChromium::didRemoveRemoteStream):
* platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.h:
(WebKit):
(RTCPeerConnectionHandlerChromium):

Source/WebKit/chromium:

* src/AssertMatchingEnums.cpp:

Tools:

Extending MockWebRTCPeerConnectionHandler to handle addStream/removeStream.

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

LayoutTests:

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

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (127364 => 127365)


--- trunk/LayoutTests/ChangeLog	2012-09-01 07:49:07 UTC (rev 127364)
+++ trunk/LayoutTests/ChangeLog	2012-09-01 07:54:31 UTC (rev 127365)
@@ -1,3 +1,13 @@
+2012-09-01  Tommy Widenflycht  <[email protected]>
+
+        MediaStream API: Add MediaStream management to RTCPeerConnection
+        https://bugs.webkit.org/show_bug.cgi?id=95543
+
+        Reviewed by Adam Barth.
+
+        * fast/mediastream/RTCPeerConnection-AddRemoveStream-expected.txt: Added.
+        * fast/mediastream/RTCPeerConnection-AddRemoveStream.html: Added.
+
 2012-08-31  Jon Lee  <[email protected]>
 
         [Tests] Add a test for all notification events

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


--- trunk/LayoutTests/fast/mediastream/RTCPeerConnection-AddRemoveStream-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/mediastream/RTCPeerConnection-AddRemoveStream-expected.txt	2012-09-01 07:54:31 UTC (rev 127365)
@@ -0,0 +1,12 @@
+Tests RTCPeerConnection [add|remove]Stream.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS Got a stream.
+PASS onAddStream was called.
+PASS onRemoveStream was called.
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

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


--- trunk/LayoutTests/fast/mediastream/RTCPeerConnection-AddRemoveStream.html	                        (rev 0)
+++ trunk/LayoutTests/fast/mediastream/RTCPeerConnection-AddRemoveStream.html	2012-09-01 07:54:31 UTC (rev 127365)
@@ -0,0 +1,57 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src=""
+</head>
+<body>
+<script>
+description("Tests RTCPeerConnection [add|remove]Stream.");
+
+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 onRemoveStream(event) {
+    testPassed('onRemoveStream was called.');
+
+    finishJSTest();
+}
+
+function onAddStream(event) {
+    testPassed('onAddStream was called.');
+
+    pc.removeStream(stream);
+}
+
+function gotStream(s) {
+    testPassed('Got a stream.');
+    stream = s;
+
+    pc = new webkitRTCPeerConnection(null, null);
+    pc._onaddstream_ = onAddStream;
+    pc._onremovestream_ = onRemoveStream;
+
+    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 (127364 => 127365)


--- trunk/Source/Platform/ChangeLog	2012-09-01 07:49:07 UTC (rev 127364)
+++ trunk/Source/Platform/ChangeLog	2012-09-01 07:54:31 UTC (rev 127365)
@@ -1,3 +1,19 @@
+2012-09-01  Tommy Widenflycht  <[email protected]>
+
+        MediaStream API: Add MediaStream management to RTCPeerConnection
+        https://bugs.webkit.org/show_bug.cgi?id=95543
+
+        Reviewed by Adam Barth.
+
+        * chromium/public/WebMediaStreamCenter.h:
+        (WebMediaStreamCenter):
+        * chromium/public/WebRTCPeerConnectionHandler.h:
+        (WebKit):
+        (WebRTCPeerConnectionHandler):
+        * chromium/public/WebRTCPeerConnectionHandlerClient.h:
+        (WebKit):
+        (WebRTCPeerConnectionHandlerClient):
+
 2012-08-30  James Robinson  <[email protected]>
 
         [chromium] Revert WebCompositorSupport to raw ptrs, make dtor protected

Modified: trunk/Source/Platform/chromium/public/WebMediaStreamCenter.h (127364 => 127365)


--- trunk/Source/Platform/chromium/public/WebMediaStreamCenter.h	2012-09-01 07:49:07 UTC (rev 127364)
+++ trunk/Source/Platform/chromium/public/WebMediaStreamCenter.h	2012-09-01 07:54:31 UTC (rev 127365)
@@ -48,11 +48,7 @@
     virtual void didEnableMediaStreamTrack(const WebMediaStreamDescriptor&, const WebMediaStreamComponent&) = 0;
     virtual void didDisableMediaStreamTrack(const WebMediaStreamDescriptor&, const WebMediaStreamComponent&) = 0;
     virtual void didStopLocalMediaStream(const WebMediaStreamDescriptor&) = 0;
-    virtual void didCreateMediaStream(WebMediaStreamDescriptor&) { }
-
-    // DEPRECATED
-    virtual void didConstructMediaStream(const WebMediaStreamDescriptor&) { }
-
+    virtual void didCreateMediaStream(WebMediaStreamDescriptor&) = 0;
     virtual WebString constructSDP(const WebICECandidateDescriptor&) = 0;
     virtual WebString constructSDP(const WebSessionDescriptionDescriptor&) = 0;
 };

Modified: trunk/Source/Platform/chromium/public/WebRTCPeerConnectionHandler.h (127364 => 127365)


--- trunk/Source/Platform/chromium/public/WebRTCPeerConnectionHandler.h	2012-09-01 07:49:07 UTC (rev 127364)
+++ trunk/Source/Platform/chromium/public/WebRTCPeerConnectionHandler.h	2012-09-01 07:54:31 UTC (rev 127365)
@@ -33,6 +33,7 @@
 
 namespace WebKit {
 class WebMediaConstraints;
+class WebMediaStreamDescriptor;
 class WebRTCConfiguration;
 class WebRTCPeerConnectionHandlerClient;
 
@@ -41,6 +42,9 @@
     virtual ~WebRTCPeerConnectionHandler() { }
 
     virtual bool initialize(const WebRTCConfiguration&, const WebMediaConstraints&) = 0;
+
+    virtual bool addStream(const WebMediaStreamDescriptor&, const WebMediaConstraints&) = 0;
+    virtual void removeStream(const WebMediaStreamDescriptor&) = 0;
     virtual void stop() = 0;
 };
 

Modified: trunk/Source/Platform/chromium/public/WebRTCPeerConnectionHandlerClient.h (127364 => 127365)


--- trunk/Source/Platform/chromium/public/WebRTCPeerConnectionHandlerClient.h	2012-09-01 07:49:07 UTC (rev 127364)
+++ trunk/Source/Platform/chromium/public/WebRTCPeerConnectionHandlerClient.h	2012-09-01 07:54:31 UTC (rev 127365)
@@ -32,6 +32,7 @@
 #define WebRTCPeerConnectionHandlerClient_h
 
 namespace WebKit {
+class WebMediaStreamDescriptor;
 
 class WebRTCPeerConnectionHandlerClient {
 public:
@@ -46,6 +47,8 @@
     virtual ~WebRTCPeerConnectionHandlerClient() { }
 
     virtual void didChangeReadyState(ReadyState) = 0;
+    virtual void didAddRemoteStream(const WebMediaStreamDescriptor&) = 0;
+    virtual void didRemoveRemoteStream(const WebMediaStreamDescriptor&) = 0;
 };
 
 } // namespace WebKit

Modified: trunk/Source/WebCore/ChangeLog (127364 => 127365)


--- trunk/Source/WebCore/ChangeLog	2012-09-01 07:49:07 UTC (rev 127364)
+++ trunk/Source/WebCore/ChangeLog	2012-09-01 07:54:31 UTC (rev 127365)
@@ -1,3 +1,56 @@
+2012-09-01  Tommy Widenflycht  <[email protected]>
+
+        MediaStream API: Add MediaStream management to RTCPeerConnection
+        https://bugs.webkit.org/show_bug.cgi?id=95543
+
+        Reviewed by Adam Barth.
+
+        This includes addStream/removeStream to RTCPeerConnection,
+        as well as didAddRemoteStream/didRemoveRemoteStream to RTCPeerConnectionHandlerClient.
+
+        Test: fast/mediastream/RTCPeerConnection-AddRemoveStream.html
+
+        * Modules/mediastream/RTCPeerConnection.cpp:
+        (WebCore::RTCPeerConnection::parseConfiguration):
+        (WebCore::RTCPeerConnection::RTCPeerConnection):
+        (WebCore::RTCPeerConnection::addStream):
+        (WebCore):
+        (WebCore::RTCPeerConnection::removeStream):
+        (WebCore::RTCPeerConnection::localStreams):
+        (WebCore::RTCPeerConnection::remoteStreams):
+        (WebCore::RTCPeerConnection::didAddRemoteStream):
+        (WebCore::RTCPeerConnection::didRemoveRemoteStream):
+        * Modules/mediastream/RTCPeerConnection.h:
+        (RTCPeerConnection):
+        * Modules/mediastream/RTCPeerConnection.idl:
+        * bindings/js/Dictionary.cpp:
+        (WebCore::Dictionary::getOwnPropertiesAsStringHashMap):
+        (WebCore::Dictionary::getOwnPropertyNames):
+        * bindings/v8/Dictionary.cpp:
+        (WebCore::Dictionary::getOwnPropertiesAsStringHashMap):
+        (WebCore::Dictionary::getOwnPropertyNames):
+        * bindings/v8/Dictionary.h:
+        (Dictionary):
+        * platform/mediastream/RTCPeerConnectionHandler.cpp:
+        (RTCPeerConnectionHandlerDummy):
+        (WebCore::RTCPeerConnectionHandlerDummy::addStream):
+        (WebCore):
+        (WebCore::RTCPeerConnectionHandlerDummy::removeStream):
+        * platform/mediastream/RTCPeerConnectionHandler.h:
+        (RTCPeerConnectionHandler):
+        * platform/mediastream/RTCPeerConnectionHandlerClient.h:
+        (WebCore):
+        (RTCPeerConnectionHandlerClient):
+        * platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.cpp:
+        (WebCore::RTCPeerConnectionHandlerChromium::addStream):
+        (WebCore):
+        (WebCore::RTCPeerConnectionHandlerChromium::removeStream):
+        (WebCore::RTCPeerConnectionHandlerChromium::didAddRemoteStream):
+        (WebCore::RTCPeerConnectionHandlerChromium::didRemoveRemoteStream):
+        * platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.h:
+        (WebKit):
+        (RTCPeerConnectionHandlerChromium):
+
 2012-09-01  Kent Tamura  <[email protected]>
 
         Touch a file so that Chromium-win bots correctly re-build for OPENTYPE_VERTICAL

Modified: trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp (127364 => 127365)


--- trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp	2012-09-01 07:49:07 UTC (rev 127364)
+++ trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp	2012-09-01 07:54:31 UTC (rev 127365)
@@ -38,6 +38,7 @@
 #include "Event.h"
 #include "ExceptionCode.h"
 #include "MediaConstraintsImpl.h"
+#include "MediaStreamEvent.h"
 #include "RTCConfiguration.h"
 #include "ScriptExecutionContext.h"
 
@@ -88,6 +89,7 @@
 
         rtcConfiguration->appendServer(RTCIceServer::create(url, credential));
     }
+
     return rtcConfiguration.release();
 }
 
@@ -112,6 +114,8 @@
 RTCPeerConnection::RTCPeerConnection(ScriptExecutionContext* context, PassRefPtr<RTCConfiguration> configuration, PassRefPtr<MediaConstraints> constraints, ExceptionCode& ec)
     : ActiveDOMObject(context, this)
     , m_readyState(ReadyStateNew)
+    , m_localStreams(MediaStreamList::create())
+    , m_remoteStreams(MediaStreamList::create())
 {
     m_peerHandler = RTCPeerConnectionHandler::create(this);
     if (!m_peerHandler || !m_peerHandler->initialize(configuration, constraints))
@@ -141,6 +145,63 @@
     return "";
 }
 
+void RTCPeerConnection::addStream(PassRefPtr<MediaStream> prpStream, const Dictionary& mediaConstraints, ExceptionCode& ec)
+{
+    if (m_readyState == ReadyStateClosing || m_readyState == ReadyStateClosed) {
+        ec = INVALID_STATE_ERR;
+        return;
+    }
+
+    RefPtr<MediaStream> stream = prpStream;
+    if (!stream) {
+        ec =  TYPE_MISMATCH_ERR;
+        return;
+    }
+
+    RefPtr<MediaConstraints> constraints = MediaConstraintsImpl::create(mediaConstraints, ec);
+    if (ec)
+        return;
+
+    if (m_localStreams->contains(stream.get()))
+        return;
+
+    m_localStreams->append(stream);
+
+    bool valid = m_peerHandler->addStream(stream->descriptor(), constraints);
+    if (!valid)
+        ec = SYNTAX_ERR;
+}
+
+void RTCPeerConnection::removeStream(MediaStream* stream, ExceptionCode& ec)
+{
+    if (m_readyState == ReadyStateClosed) {
+        ec = INVALID_STATE_ERR;
+        return;
+    }
+
+    if (!stream) {
+        ec = TYPE_MISMATCH_ERR;
+        return;
+    }
+
+    if (!m_localStreams->contains(stream))
+        return;
+
+    m_localStreams->remove(stream);
+
+    m_peerHandler->removeStream(stream->descriptor());
+}
+
+MediaStreamList* RTCPeerConnection::localStreams() const
+{
+    return m_localStreams.get();
+}
+
+MediaStreamList* RTCPeerConnection::remoteStreams() const
+{
+    return m_remoteStreams.get();
+}
+
 void RTCPeerConnection::close(ExceptionCode& ec)
 {
     if (m_readyState == ReadyStateClosing || m_readyState == ReadyStateClosed) {
@@ -158,6 +219,36 @@
     changeReadyState(newState);
 }
 
+void RTCPeerConnection::didAddRemoteStream(PassRefPtr<MediaStreamDescriptor> streamDescriptor)
+{
+    ASSERT(scriptExecutionContext()->isContextThread());
+
+    if (m_readyState == ReadyStateClosed)
+        return;
+
+    RefPtr<MediaStream> stream = MediaStream::create(scriptExecutionContext(), streamDescriptor);
+    m_remoteStreams->append(stream);
+
+    dispatchEvent(MediaStreamEvent::create(eventNames().addstreamEvent, false, false, stream.release()));
+}
+
+void RTCPeerConnection::didRemoveRemoteStream(MediaStreamDescriptor* streamDescriptor)
+{
+    ASSERT(scriptExecutionContext()->isContextThread());
+    ASSERT(streamDescriptor->owner());
+
+    RefPtr<MediaStream> stream = static_cast<MediaStream*>(streamDescriptor->owner());
+    stream->streamEnded();
+
+    if (m_readyState == ReadyStateClosed)
+        return;
+
+    ASSERT(m_remoteStreams->contains(stream.get()));
+    m_remoteStreams->remove(stream.get());
+
+    dispatchEvent(MediaStreamEvent::create(eventNames().removestreamEvent, false, false, stream.release()));
+}
+
 const AtomicString& RTCPeerConnection::interfaceName() const
 {
     return eventNames().interfaceForRTCPeerConnection;

Modified: trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.h (127364 => 127365)


--- trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.h	2012-09-01 07:49:07 UTC (rev 127364)
+++ trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.h	2012-09-01 07:54:31 UTC (rev 127365)
@@ -37,6 +37,8 @@
 #include "Dictionary.h"
 #include "EventTarget.h"
 #include "ExceptionBase.h"
+#include "MediaStream.h"
+#include "MediaStreamList.h"
 #include "RTCPeerConnectionHandler.h"
 #include "RTCPeerConnectionHandlerClient.h"
 #include <wtf/RefCounted.h>
@@ -53,13 +55,22 @@
 
     String readyState() const;
 
+    MediaStreamList* localStreams() const;
+    MediaStreamList* remoteStreams() const;
+    void addStream(const PassRefPtr<MediaStream>, const Dictionary& mediaConstraints, ExceptionCode&);
+    void removeStream(MediaStream*, ExceptionCode&);
+
     void close(ExceptionCode&);
 
     DEFINE_ATTRIBUTE_EVENT_LISTENER(open);
     DEFINE_ATTRIBUTE_EVENT_LISTENER(statechange);
+    DEFINE_ATTRIBUTE_EVENT_LISTENER(addstream);
+    DEFINE_ATTRIBUTE_EVENT_LISTENER(removestream);
 
     // RTCPeerConnectionHandlerClient
     virtual void didChangeReadyState(ReadyState) OVERRIDE;
+    virtual void didAddRemoteStream(PassRefPtr<MediaStreamDescriptor>) OVERRIDE;
+    virtual void didRemoveRemoteStream(MediaStreamDescriptor*) OVERRIDE;
 
     // EventTarget
     virtual const AtomicString& interfaceName() const OVERRIDE;
@@ -87,6 +98,9 @@
 
     ReadyState m_readyState;
 
+    RefPtr<MediaStreamList> m_localStreams;
+    RefPtr<MediaStreamList> m_remoteStreams;
+
     OwnPtr<RTCPeerConnectionHandler> m_peerHandler;
 };
 

Modified: trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.idl (127364 => 127365)


--- trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.idl	2012-09-01 07:49:07 UTC (rev 127364)
+++ trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.idl	2012-09-01 07:54:31 UTC (rev 127365)
@@ -40,11 +40,21 @@
     ] RTCPeerConnection {
         readonly attribute DOMString readyState;
 
+        readonly attribute MediaStreamList localStreams;
+        readonly attribute MediaStreamList remoteStreams;
+
+        [StrictTypeChecking] void addStream(in MediaStream stream, in [Optional=DefaultIsUndefined] Dictionary mediaConstraints)
+            raises(DOMException);
+        [StrictTypeChecking] void removeStream(in MediaStream stream)
+            raises(DOMException);
+
         void close()
             raises(DOMException);
 
         attribute EventListener onopen;
         attribute EventListener onstatechange;
+        attribute EventListener onaddstream;
+        attribute EventListener onremovestream;
 
         // EventTarget interface
         void addEventListener(in DOMString type,

Modified: trunk/Source/WebCore/bindings/js/Dictionary.cpp (127364 => 127365)


--- trunk/Source/WebCore/bindings/js/Dictionary.cpp	2012-09-01 07:49:07 UTC (rev 127364)
+++ trunk/Source/WebCore/bindings/js/Dictionary.cpp	2012-09-01 07:54:31 UTC (rev 127365)
@@ -54,7 +54,7 @@
 }
 #endif
 
-bool Dictionary::getOwnPropertiesAsStringHashMap(WTF::HashMap<String, String>& map) const
+bool Dictionary::getOwnPropertiesAsStringHashMap(HashMap<String, String>& map) const
 {
     if (!m_dictionary.isValid())
         return false;
@@ -79,7 +79,7 @@
     return true;
 }
 
-bool Dictionary::getOwnPropertyNames(WTF::Vector<String>& names) const
+bool Dictionary::getOwnPropertyNames(Vector<String>& names) const
 {
     if (!m_dictionary.isValid())
         return false;

Modified: trunk/Source/WebCore/bindings/v8/Dictionary.cpp (127364 => 127365)


--- trunk/Source/WebCore/bindings/v8/Dictionary.cpp	2012-09-01 07:49:07 UTC (rev 127364)
+++ trunk/Source/WebCore/bindings/v8/Dictionary.cpp	2012-09-01 07:54:31 UTC (rev 127365)
@@ -467,7 +467,7 @@
     return true;
 }
 
-bool Dictionary::getOwnPropertiesAsStringHashMap(WTF::HashMap<String, String>& hashMap) const
+bool Dictionary::getOwnPropertiesAsStringHashMap(HashMap<String, String>& hashMap) const
 {
     if (!isObject())
         return false;
@@ -494,7 +494,7 @@
     return true;
 }
 
-bool Dictionary::getOwnPropertyNames(WTF::Vector<String>& names) const
+bool Dictionary::getOwnPropertyNames(Vector<String>& names) const
 {
     if (!isObject())
         return false;

Modified: trunk/Source/WebCore/bindings/v8/Dictionary.h (127364 => 127365)


--- trunk/Source/WebCore/bindings/v8/Dictionary.h	2012-09-01 07:49:07 UTC (rev 127364)
+++ trunk/Source/WebCore/bindings/v8/Dictionary.h	2012-09-01 07:54:31 UTC (rev 127365)
@@ -89,8 +89,8 @@
     bool get(const String&, Vector<String>&) const;
     bool get(const String&, ArrayValue&) const;
 
-    bool getOwnPropertiesAsStringHashMap(WTF::HashMap<String, String>&) const;
-    bool getOwnPropertyNames(WTF::Vector<String>&) const;
+    bool getOwnPropertiesAsStringHashMap(HashMap<String, String>&) const;
+    bool getOwnPropertyNames(Vector<String>&) const;
 
     bool getWithUndefinedOrNullCheck(const String&, String&) const;
 

Modified: trunk/Source/WebCore/platform/mediastream/RTCPeerConnectionHandler.cpp (127364 => 127365)


--- trunk/Source/WebCore/platform/mediastream/RTCPeerConnectionHandler.cpp	2012-09-01 07:49:07 UTC (rev 127364)
+++ trunk/Source/WebCore/platform/mediastream/RTCPeerConnectionHandler.cpp	2012-09-01 07:54:31 UTC (rev 127365)
@@ -47,6 +47,9 @@
     virtual ~RTCPeerConnectionHandlerDummy();
 
     virtual bool initialize(PassRefPtr<RTCConfiguration>, PassRefPtr<MediaConstraints>) OVERRIDE;
+
+    virtual bool addStream(PassRefPtr<MediaStreamDescriptor>, PassRefPtr<MediaConstraints>) OVERRIDE;
+    virtual void removeStream(PassRefPtr<MediaStreamDescriptor>) OVERRIDE;
     virtual void stop() OVERRIDE;
 
 private:
@@ -73,6 +76,15 @@
     return false;
 }
 
+bool RTCPeerConnectionHandlerDummy::addStream(PassRefPtr<MediaStreamDescriptor>, PassRefPtr<MediaConstraints>)
+{
+    return false;
+}
+
+void RTCPeerConnectionHandlerDummy::removeStream(PassRefPtr<MediaStreamDescriptor>)
+{
+}
+
 void RTCPeerConnectionHandlerDummy::stop()
 {
 }

Modified: trunk/Source/WebCore/platform/mediastream/RTCPeerConnectionHandler.h (127364 => 127365)


--- trunk/Source/WebCore/platform/mediastream/RTCPeerConnectionHandler.h	2012-09-01 07:49:07 UTC (rev 127364)
+++ trunk/Source/WebCore/platform/mediastream/RTCPeerConnectionHandler.h	2012-09-01 07:54:31 UTC (rev 127365)
@@ -33,6 +33,7 @@
 
 #if ENABLE(MEDIA_STREAM)
 
+#include "MediaStreamDescriptor.h"
 #include <wtf/PassOwnPtr.h>
 #include <wtf/PassRefPtr.h>
 
@@ -48,6 +49,9 @@
     virtual ~RTCPeerConnectionHandler() { }
 
     virtual bool initialize(PassRefPtr<RTCConfiguration>, PassRefPtr<MediaConstraints>) = 0;
+
+    virtual bool addStream(PassRefPtr<MediaStreamDescriptor>, PassRefPtr<MediaConstraints>) = 0;
+    virtual void removeStream(PassRefPtr<MediaStreamDescriptor>) = 0;
     virtual void stop() = 0;
 
 protected:

Modified: trunk/Source/WebCore/platform/mediastream/RTCPeerConnectionHandlerClient.h (127364 => 127365)


--- trunk/Source/WebCore/platform/mediastream/RTCPeerConnectionHandlerClient.h	2012-09-01 07:49:07 UTC (rev 127364)
+++ trunk/Source/WebCore/platform/mediastream/RTCPeerConnectionHandlerClient.h	2012-09-01 07:54:31 UTC (rev 127365)
@@ -33,8 +33,12 @@
 
 #if ENABLE(MEDIA_STREAM)
 
+#include <wtf/PassRefPtr.h>
+
 namespace WebCore {
 
+class MediaStreamDescriptor;
+
 class RTCPeerConnectionHandlerClient {
 public:
     enum ReadyState {
@@ -48,6 +52,8 @@
     virtual ~RTCPeerConnectionHandlerClient() { }
 
     virtual void didChangeReadyState(ReadyState) = 0;
+    virtual void didAddRemoteStream(PassRefPtr<MediaStreamDescriptor>) = 0;
+    virtual void didRemoveRemoteStream(MediaStreamDescriptor*) = 0;
 };
 
 } // namespace WebCore

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


--- trunk/Source/WebCore/platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.cpp	2012-09-01 07:49:07 UTC (rev 127364)
+++ trunk/Source/WebCore/platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.cpp	2012-09-01 07:54:31 UTC (rev 127365)
@@ -39,6 +39,7 @@
 #include "RTCPeerConnectionHandlerClient.h"
 #include <public/Platform.h>
 #include <public/WebMediaConstraints.h>
+#include <public/WebMediaStreamDescriptor.h>
 #include <public/WebRTCConfiguration.h>
 #include <wtf/PassOwnPtr.h>
 
@@ -65,6 +66,22 @@
     return m_webHandler ? m_webHandler->initialize(configuration, constraints) : false;
 }
 
+bool RTCPeerConnectionHandlerChromium::addStream(PassRefPtr<MediaStreamDescriptor> mediaStream, PassRefPtr<MediaConstraints> constraints)
+{
+    if (!m_webHandler)
+        return false;
+
+    return m_webHandler->addStream(mediaStream, constraints);
+}
+
+void RTCPeerConnectionHandlerChromium::removeStream(PassRefPtr<MediaStreamDescriptor> mediaStream)
+{
+    if (!m_webHandler)
+        return;
+
+    m_webHandler->removeStream(mediaStream);
+}
+
 void RTCPeerConnectionHandlerChromium::stop()
 {
     if (!m_webHandler)
@@ -78,6 +95,16 @@
     m_client->didChangeReadyState(static_cast<RTCPeerConnectionHandlerClient::ReadyState>(state));
 }
 
+void RTCPeerConnectionHandlerChromium::didAddRemoteStream(const WebKit::WebMediaStreamDescriptor& webMediaStreamDescriptor)
+{
+    m_client->didAddRemoteStream(webMediaStreamDescriptor);
+}
+
+void RTCPeerConnectionHandlerChromium::didRemoveRemoteStream(const WebKit::WebMediaStreamDescriptor& webMediaStreamDescriptor)
+{
+    m_client->didRemoveRemoteStream(webMediaStreamDescriptor);
+}
+
 } // namespace WebCore
 
 #endif // ENABLE(MEDIA_STREAM)

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


--- trunk/Source/WebCore/platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.h	2012-09-01 07:49:07 UTC (rev 127364)
+++ trunk/Source/WebCore/platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.h	2012-09-01 07:54:31 UTC (rev 127365)
@@ -33,12 +33,17 @@
 
 #if ENABLE(MEDIA_STREAM)
 
+#include "MediaStreamDescriptor.h"
 #include "RTCPeerConnectionHandler.h"
 #include <public/WebRTCPeerConnectionHandler.h>
 #include <public/WebRTCPeerConnectionHandlerClient.h>
 #include <wtf/OwnPtr.h>
 #include <wtf/PassRefPtr.h>
 
+namespace WebKit {
+class WebMediaStreamDescriptor;
+}
+
 namespace WebCore {
 
 class RTCPeerConnectionHandlerChromium : public RTCPeerConnectionHandler, public WebKit::WebRTCPeerConnectionHandlerClient {
@@ -47,10 +52,15 @@
     virtual ~RTCPeerConnectionHandlerChromium();
 
     virtual bool initialize(PassRefPtr<RTCConfiguration>, PassRefPtr<MediaConstraints>) OVERRIDE;
+
+    virtual bool addStream(PassRefPtr<MediaStreamDescriptor>, PassRefPtr<MediaConstraints>) OVERRIDE;
+    virtual void removeStream(PassRefPtr<MediaStreamDescriptor>) OVERRIDE;
     virtual void stop() OVERRIDE;
 
     // WebKit::WebRTCPeerConnectionHandlerClient implementation.
     virtual void didChangeReadyState(WebKit::WebRTCPeerConnectionHandlerClient::ReadyState) OVERRIDE;
+    virtual void didAddRemoteStream(const WebKit::WebMediaStreamDescriptor&) OVERRIDE;
+    virtual void didRemoveRemoteStream(const WebKit::WebMediaStreamDescriptor&) OVERRIDE;
 
 private:
     OwnPtr<WebKit::WebRTCPeerConnectionHandler> m_webHandler;

Modified: trunk/Source/WebKit/chromium/ChangeLog (127364 => 127365)


--- trunk/Source/WebKit/chromium/ChangeLog	2012-09-01 07:49:07 UTC (rev 127364)
+++ trunk/Source/WebKit/chromium/ChangeLog	2012-09-01 07:54:31 UTC (rev 127365)
@@ -1,3 +1,12 @@
+2012-09-01  Tommy Widenflycht  <[email protected]>
+
+        MediaStream API: Add MediaStream management to RTCPeerConnection
+        https://bugs.webkit.org/show_bug.cgi?id=95543
+
+        Reviewed by Adam Barth.
+
+        * src/AssertMatchingEnums.cpp:
+
 2012-08-31  Koji Ishii  <[email protected]>
 
         Glyphs in vertical text tests are rotated 90 degrees clockwise on Chromium Windows

Modified: trunk/Source/WebKit/chromium/src/AssertMatchingEnums.cpp (127364 => 127365)


--- trunk/Source/WebKit/chromium/src/AssertMatchingEnums.cpp	2012-09-01 07:49:07 UTC (rev 127364)
+++ trunk/Source/WebKit/chromium/src/AssertMatchingEnums.cpp	2012-09-01 07:54:31 UTC (rev 127365)
@@ -109,13 +109,13 @@
 #include "WebTextCheckingResult.h"
 #include "WebTextCheckingType.h"
 #include "WebView.h"
-#include "platform/WebICEOptions.h"
-#include "platform/WebMediaStreamSource.h"
-#include "platform/WebPeerConnection00Handler.h"
-#include "platform/WebPeerConnection00HandlerClient.h"
 #include <public/WebClipboard.h>
 #include <public/WebFileSystem.h>
 #include <public/WebFilterOperation.h>
+#include <public/WebICEOptions.h>
+#include <public/WebMediaStreamSource.h>
+#include <public/WebPeerConnection00Handler.h>
+#include <public/WebPeerConnection00HandlerClient.h>
 #include <public/WebRTCPeerConnectionHandler.h>
 #include <public/WebRTCPeerConnectionHandlerClient.h>
 #include <public/WebReferrerPolicy.h>

Modified: trunk/Tools/ChangeLog (127364 => 127365)


--- trunk/Tools/ChangeLog	2012-09-01 07:49:07 UTC (rev 127364)
+++ trunk/Tools/ChangeLog	2012-09-01 07:54:31 UTC (rev 127365)
@@ -1,3 +1,19 @@
+2012-09-01  Tommy Widenflycht  <[email protected]>
+
+        MediaStream API: Add MediaStream management to RTCPeerConnection
+        https://bugs.webkit.org/show_bug.cgi?id=95543
+
+        Reviewed by Adam Barth.
+
+        Extending MockWebRTCPeerConnectionHandler to handle addStream/removeStream.
+
+        * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
+        (MockWebRTCPeerConnectionHandler::MockWebRTCPeerConnectionHandler):
+        (MockWebRTCPeerConnectionHandler::addStream):
+        (MockWebRTCPeerConnectionHandler::removeStream):
+        * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h:
+        (MockWebRTCPeerConnectionHandler):
+
 2012-08-31  Tony Chang  <[email protected]>
 
         Remove ENABLE_CSS3_FLEXBOX compile time flag

Modified: trunk/Tools/DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp (127364 => 127365)


--- trunk/Tools/DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp	2012-09-01 07:49:07 UTC (rev 127364)
+++ trunk/Tools/DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp	2012-09-01 07:54:31 UTC (rev 127365)
@@ -41,6 +41,7 @@
 using namespace WebKit;
 
 MockWebRTCPeerConnectionHandler::MockWebRTCPeerConnectionHandler(WebRTCPeerConnectionHandlerClient* client)
+    : m_client(client)
 {
 }
 
@@ -85,6 +86,17 @@
     return true;
 }
 
+bool MockWebRTCPeerConnectionHandler::addStream(const WebMediaStreamDescriptor& stream, const WebMediaConstraints&)
+{
+    m_client->didAddRemoteStream(stream);
+    return true;
+}
+
+void MockWebRTCPeerConnectionHandler::removeStream(const WebMediaStreamDescriptor& stream)
+{
+    m_client->didRemoveRemoteStream(stream);
+}
+
 void MockWebRTCPeerConnectionHandler::stop()
 {
 }

Modified: trunk/Tools/DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h (127364 => 127365)


--- trunk/Tools/DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h	2012-09-01 07:49:07 UTC (rev 127364)
+++ trunk/Tools/DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h	2012-09-01 07:54:31 UTC (rev 127365)
@@ -44,10 +44,14 @@
 
     virtual bool initialize(const WebKit::WebRTCConfiguration&, const WebKit::WebMediaConstraints&) OVERRIDE;
 
+    virtual bool addStream(const WebKit::WebMediaStreamDescriptor&, const WebKit::WebMediaConstraints&) OVERRIDE;
+    virtual void removeStream(const WebKit::WebMediaStreamDescriptor&) OVERRIDE;
     virtual void stop() OVERRIDE;
 
 private:
     MockWebRTCPeerConnectionHandler() { }
+
+    WebKit::WebRTCPeerConnectionHandlerClient* m_client;
 };
 
 #endif // ENABLE(MEDIA_STREAM)
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to