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)