Changeset 137441 in webkit
- Timestamp:
- Dec 12, 2012 2:42:40 AM (11 years ago)
- Location:
- trunk
- Files:
-
- 6 added
- 3 deleted
- 26 edited
- 1 copied
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r137440 r137441 1 2012-12-12 Tommy Widenflycht <tommyw@google.com> 2 3 MediaStream API: Change the data channel descriptor pattern to a handler pattern 4 https://bugs.webkit.org/show_bug.cgi?id=104543 5 6 Reviewed by Kent Tamura. 7 8 Expanding data channels tests. 9 10 * fast/mediastream/RTCPeerConnection-datachannel-expected.txt: 11 * fast/mediastream/RTCPeerConnection-datachannel.html: 12 1 13 2012-12-12 Zan Dobersek <zandobersek@gmail.com> 2 14 -
trunk/LayoutTests/fast/mediastream/RTCPeerConnection-datachannel-expected.txt
r134970 r137441 4 4 5 5 6 PASS dc = pc.createDataChannel("label1"); did not throw exception. 6 7 PASS dc.reliable is true 8 PASS dc = pc.createDataChannel("label2", {}); did not throw exception. 7 9 PASS dc.reliable is true 10 PASS dc = pc.createDataChannel("label3", {reliable:true}); did not throw exception. 8 11 PASS dc.reliable is true 12 PASS dc = pc.createDataChannel("label3", {reliable:false}); did not throw exception. 9 13 PASS dc.reliable is false 10 14 PASS pc_onopen was called 15 PASS dc = pc.createDataChannel("label"); did not throw exception. 11 16 PASS dc.readyState is 'connecting' 12 17 PASS pc_ondatachannel was called 13 PASS event.channel.readyState is 'open'14 18 PASS dc_onopen was called 15 19 PASS dc.readyState is 'open' -
trunk/LayoutTests/fast/mediastream/RTCPeerConnection-datachannel.html
r134970 r137441 71 71 function pc_ondatachannel(e) { 72 72 testPassed("pc_ondatachannel was called"); 73 event = e;74 shouldBe("event.channel.readyState", "'open'");75 73 } 76 74 77 75 function pc_onopen() { 78 76 testPassed("pc_onopen was called"); 79 dc = pc.createDataChannel("label");77 shouldNotThrow('dc = pc.createDataChannel("label");'); 80 78 shouldBe("dc.readyState", "'connecting'"); 81 79 dc.onopen = dc_onopen; … … 83 81 84 82 pc = new webkitRTCPeerConnection(null, null); 85 dc = pc.createDataChannel("label1");83 shouldNotThrow('dc = pc.createDataChannel("label1");'); 86 84 shouldBe("dc.reliable", "true"); 87 dc = pc.createDataChannel("label2", {});85 shouldNotThrow('dc = pc.createDataChannel("label2", {});'); 88 86 shouldBe("dc.reliable", "true"); 89 dc = pc.createDataChannel("label3", {reliable:true});87 shouldNotThrow('dc = pc.createDataChannel("label3", {reliable:true});'); 90 88 shouldBe("dc.reliable", "true"); 91 dc = pc.createDataChannel("label3", {reliable:false});89 shouldNotThrow('dc = pc.createDataChannel("label3", {reliable:false});'); 92 90 shouldBe("dc.reliable", "false"); 93 91 -
trunk/Source/Platform/ChangeLog
r137335 r137441 1 2012-12-12 Tommy Widenflycht <tommyw@google.com> 2 3 MediaStream API: Change the data channel descriptor pattern to a handler pattern 4 https://bugs.webkit.org/show_bug.cgi?id=104543 5 6 Reviewed by Kent Tamura. 7 8 In short the code is refactured to use the Handler/Client pattern (see RTCPeerConnectionHandler) 9 instead of the Descriptor pattern. 10 This will fix lifetime/memory/code structure issues in the chromium port. 11 12 * Platform.gypi: 13 * chromium/public/WebRTCDataChannel.h: Removed. 14 * chromium/public/WebRTCDataChannelHandler.h: Added. 15 (WebKit): 16 (WebRTCDataChannelHandler): 17 (WebKit::WebRTCDataChannelHandler::~WebRTCDataChannelHandler): 18 * chromium/public/WebRTCDataChannelHandlerClient.h: Added. 19 (WebKit): 20 (WebRTCDataChannelHandlerClient): 21 (WebKit::WebRTCDataChannelHandlerClient::~WebRTCDataChannelHandlerClient): 22 * chromium/public/WebRTCPeerConnectionHandler.h: 23 (WebKit): 24 (WebKit::WebRTCPeerConnectionHandler::createDataChannel): 25 * chromium/public/WebRTCPeerConnectionHandlerClient.h: 26 (WebKit): 27 (WebKit::WebRTCPeerConnectionHandlerClient::didAddRemoteDataChannel): 28 1 29 2012-12-11 James Robinson <jamesr@chromium.org> 2 30 -
trunk/Source/Platform/Platform.gypi
r137256 r137441 101 101 'chromium/public/WebPrivatePtr.h', 102 102 'chromium/public/WebRTCConfiguration.h', 103 'chromium/public/WebRTCDataChannel.h', 103 'chromium/public/WebRTCDataChannelHandler.h', 104 'chromium/public/WebRTCDataChannelHandlerClient.h', 104 105 'chromium/public/WebRTCICECandidate.h', 105 106 'chromium/public/WebRTCPeerConnectionHandler.h', -
trunk/Source/Platform/chromium/public/WebRTCPeerConnectionHandler.h
r131494 r137441 36 36 class WebMediaStreamDescriptor; 37 37 class WebRTCConfiguration; 38 class WebRTCDataChannel ;38 class WebRTCDataChannelHandler; 39 39 class WebRTCICECandidate; 40 40 class WebRTCPeerConnectionHandlerClient; … … 63 63 // FIXME: Remove default implementation when clients have changed. 64 64 virtual void getStats(const WebRTCStatsRequest&) { } 65 virtual WebRTCDataChannelHandler* createDataChannel(const WebString& label, bool reliable) { return 0; } 65 66 virtual void stop() = 0; 66 67 // RTCDataChannel68 virtual bool openDataChannel(const WebRTCDataChannel&) { return false; }69 virtual bool sendStringData(const WebRTCDataChannel&, const WebString&) { return false; }70 virtual bool sendRawData(const WebRTCDataChannel&, const char*, size_t) { return false; }71 virtual void closeDataChannel(const WebRTCDataChannel&) { }72 67 }; 73 68 -
trunk/Source/Platform/chromium/public/WebRTCPeerConnectionHandlerClient.h
r134976 r137441 34 34 namespace WebKit { 35 35 class WebMediaStreamDescriptor; 36 class WebRTCDataChannel ;36 class WebRTCDataChannelHandler; 37 37 class WebRTCICECandidate; 38 38 … … 82 82 virtual void didAddRemoteStream(const WebMediaStreamDescriptor&) = 0; 83 83 virtual void didRemoveRemoteStream(const WebMediaStreamDescriptor&) = 0; 84 virtual void didAddRemoteDataChannel( const WebRTCDataChannel&) { }84 virtual void didAddRemoteDataChannel(WebRTCDataChannelHandler*) { } 85 85 }; 86 86 -
trunk/Source/WebCore/CMakeLists.txt
r137422 r137441 1995 1995 platform/mediastream/MediaStreamCenter.cpp 1996 1996 platform/mediastream/MediaStreamSource.cpp 1997 platform/mediastream/RTCDataChannelDescriptor.cpp1998 1997 platform/mediastream/RTCIceCandidateDescriptor.cpp 1999 1998 platform/mediastream/RTCPeerConnectionHandler.cpp -
trunk/Source/WebCore/ChangeLog
r137438 r137441 1 2012-12-12 Tommy Widenflycht <tommyw@google.com> 2 3 MediaStream API: Change the data channel descriptor pattern to a handler pattern 4 https://bugs.webkit.org/show_bug.cgi?id=104543 5 6 Reviewed by Kent Tamura. 7 8 In short the code is refactured to use the Handler/Client pattern (see RTCPeerConnectionHandler) 9 instead of the Descriptor pattern. 10 This will fix lifetime/memory/code structure issues in the chromium port. 11 12 Existing tests cover this patch. 13 14 * CMakeLists.txt: 15 * GNUmakefile.list.am: 16 * Modules/mediastream/RTCDataChannel.cpp: 17 (WebCore::RTCDataChannel::create): 18 (WebCore::RTCDataChannel::RTCDataChannel): 19 (WebCore::RTCDataChannel::~RTCDataChannel): 20 (WebCore::RTCDataChannel::label): 21 (WebCore::RTCDataChannel::reliable): 22 (WebCore::RTCDataChannel::readyState): 23 (WebCore::RTCDataChannel::bufferedAmount): 24 (WebCore::RTCDataChannel::send): 25 (WebCore::RTCDataChannel::close): 26 (WebCore::RTCDataChannel::didChangeReadyState): 27 (WebCore::RTCDataChannel::didReceiveStringData): 28 (WebCore::RTCDataChannel::didReceiveRawData): 29 (WebCore::RTCDataChannel::didDetectError): 30 (WebCore::RTCDataChannel::stop): 31 * Modules/mediastream/RTCDataChannel.h: 32 (WebCore): 33 (RTCDataChannel): 34 * Modules/mediastream/RTCPeerConnection.cpp: 35 (WebCore::RTCPeerConnection::didAddRemoteDataChannel): 36 * Modules/mediastream/RTCPeerConnection.h: 37 (RTCPeerConnection): 38 * WebCore.gypi: 39 * platform/chromium/support/WebRTCDataChannel.cpp: Removed. 40 * platform/mediastream/RTCDataChannelDescriptor.h: Removed. 41 * platform/mediastream/RTCDataChannelHandler.h: Copied from Source/WebCore/platform/mediastream/RTCDataChannelDescriptor.cpp. 42 (WebCore): 43 (RTCDataChannelHandler): 44 (WebCore::RTCDataChannelHandler::~RTCDataChannelHandler): 45 * platform/mediastream/RTCDataChannelHandlerClient.h: Renamed from Source/WebCore/platform/mediastream/RTCDataChannelDescriptor.cpp. 46 (WebCore): 47 (RTCDataChannelHandlerClient): 48 (WebCore::RTCDataChannelHandlerClient::~RTCDataChannelHandlerClient): 49 * platform/mediastream/RTCPeerConnectionHandler.cpp: 50 (WebCore): 51 (WebCore::RTCPeerConnectionHandler::create): 52 * platform/mediastream/RTCPeerConnectionHandler.h: 53 (WebCore): 54 (RTCPeerConnectionHandler): 55 * platform/mediastream/RTCPeerConnectionHandlerClient.h: 56 (WebCore): 57 (RTCPeerConnectionHandlerClient): 58 * platform/mediastream/chromium/RTCDataChannelHandlerChromium.cpp: Added. 59 (WebCore): 60 (WebCore::RTCDataChannelHandlerChromium::create): 61 (WebCore::RTCDataChannelHandlerChromium::RTCDataChannelHandlerChromium): 62 (WebCore::RTCDataChannelHandlerChromium::~RTCDataChannelHandlerChromium): 63 (WebCore::RTCDataChannelHandlerChromium::setClient): 64 (WebCore::RTCDataChannelHandlerChromium::label): 65 (WebCore::RTCDataChannelHandlerChromium::isReliable): 66 (WebCore::RTCDataChannelHandlerChromium::bufferedAmount): 67 (WebCore::RTCDataChannelHandlerChromium::sendStringData): 68 (WebCore::RTCDataChannelHandlerChromium::sendRawData): 69 (WebCore::RTCDataChannelHandlerChromium::close): 70 (WebCore::RTCDataChannelHandlerChromium::didChangeReadyState): 71 (WebCore::RTCDataChannelHandlerChromium::didReceiveStringData): 72 (WebCore::RTCDataChannelHandlerChromium::didReceiveRawData): 73 (WebCore::RTCDataChannelHandlerChromium::didDetectError): 74 * platform/mediastream/chromium/RTCDataChannelHandlerChromium.h: Added. 75 (WebCore): 76 (RTCDataChannelHandlerChromium): 77 * platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.cpp: 78 (WebCore::RTCPeerConnectionHandlerChromium::createDataChannel): 79 (WebCore::RTCPeerConnectionHandlerChromium::didAddRemoteDataChannel): 80 * platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.h: 81 (WebCore): 82 (RTCPeerConnectionHandlerChromium): 83 1 84 2012-12-12 Huang Dongsung <luxtella@company100.net> 2 85 -
trunk/Source/WebCore/GNUmakefile.list.am
r137422 r137441 5676 5676 Source/WebCore/platform/mediastream/MediaStreamSourcesQueryClient.h \ 5677 5677 Source/WebCore/platform/mediastream/RTCConfiguration.h \ 5678 Source/WebCore/platform/mediastream/RTCDataChannel Descriptor.cpp\5679 Source/WebCore/platform/mediastream/RTCDataChannel Descriptor.h \5678 Source/WebCore/platform/mediastream/RTCDataChannelHandler.h \ 5679 Source/WebCore/platform/mediastream/RTCDataChannelHandlerClient.h \ 5680 5680 Source/WebCore/platform/mediastream/RTCIceCandidateDescriptor.cpp \ 5681 5681 Source/WebCore/platform/mediastream/RTCIceCandidateDescriptor.h \ -
trunk/Source/WebCore/Modules/mediastream/RTCDataChannel.cpp
r134440 r137441 33 33 #include "ExceptionCode.h" 34 34 #include "MessageEvent.h" 35 #include "RTCDataChannelHandler.h" 35 36 #include "RTCPeerConnectionHandler.h" 36 37 #include "ScriptExecutionContext.h" … … 40 41 namespace WebCore { 41 42 42 PassRefPtr<RTCDataChannel> RTCDataChannel::create(ScriptExecutionContext* context, RTCPeerConnectionHandler* handler, const String& label, bool reliable, ExceptionCode& ec) 43 { 44 ASSERT(handler); 45 RefPtr<RTCDataChannel> dataChannel = create(context, handler, RTCDataChannelDescriptor::create(label, reliable)); 46 if (!handler->openDataChannel(dataChannel->descriptor())) { 43 PassRefPtr<RTCDataChannel> RTCDataChannel::create(ScriptExecutionContext* context, RTCPeerConnectionHandler* peerConnectionHandler, const String& label, bool reliable, ExceptionCode& ec) 44 { 45 OwnPtr<RTCDataChannelHandler> handler = peerConnectionHandler->createDataChannel(label, reliable); 46 if (!handler) { 47 47 ec = NOT_SUPPORTED_ERR; 48 48 return 0; 49 49 } 50 return dataChannel.release();51 } 52 53 PassRefPtr<RTCDataChannel> RTCDataChannel::create(ScriptExecutionContext* context, RTCPeerConnectionHandler* handler, PassRefPtr<RTCDataChannelDescriptor> descriptor)50 return adoptRef(new RTCDataChannel(context, handler.release())); 51 } 52 53 PassRefPtr<RTCDataChannel> RTCDataChannel::create(ScriptExecutionContext* context, PassOwnPtr<RTCDataChannelHandler> handler) 54 54 { 55 55 ASSERT(handler); 56 ASSERT(descriptor); 57 return adoptRef(new RTCDataChannel(context, handler, descriptor)); 58 } 59 60 RTCDataChannel::RTCDataChannel(ScriptExecutionContext* context, RTCPeerConnectionHandler* handler, PassRefPtr<RTCDataChannelDescriptor> descriptor) 56 return adoptRef(new RTCDataChannel(context, handler)); 57 } 58 59 RTCDataChannel::RTCDataChannel(ScriptExecutionContext* context, PassOwnPtr<RTCDataChannelHandler> handler) 61 60 : m_scriptExecutionContext(context) 61 , m_handler(handler) 62 62 , m_stopped(false) 63 , m_ descriptor(descriptor)63 , m_readyState(ReadyStateConnecting) 64 64 , m_binaryType(BinaryTypeArrayBuffer) 65 , m_handler(handler)66 65 , m_scheduledEventTimer(this, &RTCDataChannel::scheduledEventTimerFired) 67 66 { 68 m_ descriptor->setClient(this);67 m_handler->setClient(this); 69 68 } 70 69 71 70 RTCDataChannel::~RTCDataChannel() 72 71 { 73 m_descriptor->setClient(0);74 72 } 75 73 76 74 String RTCDataChannel::label() const 77 75 { 78 return m_ descriptor->label();76 return m_handler->label(); 79 77 } 80 78 81 79 bool RTCDataChannel::reliable() const 82 80 { 83 return m_ descriptor->reliable();81 return m_handler->isReliable(); 84 82 } 85 83 86 84 String RTCDataChannel::readyState() const 87 85 { 88 switch (m_ descriptor->readyState()) {89 case R TCDataChannelDescriptor::ReadyStateConnecting:86 switch (m_readyState) { 87 case ReadyStateConnecting: 90 88 return ASCIILiteral("connecting"); 91 case R TCDataChannelDescriptor::ReadyStateOpen:89 case ReadyStateOpen: 92 90 return ASCIILiteral("open"); 93 case R TCDataChannelDescriptor::ReadyStateClosing:91 case ReadyStateClosing: 94 92 return ASCIILiteral("closing"); 95 case R TCDataChannelDescriptor::ReadyStateClosed:93 case ReadyStateClosed: 96 94 return ASCIILiteral("closed"); 97 95 } … … 103 101 unsigned long RTCDataChannel::bufferedAmount() const 104 102 { 105 return m_ descriptor->bufferedAmount();103 return m_handler->bufferedAmount(); 106 104 } 107 105 … … 130 128 void RTCDataChannel::send(const String& data, ExceptionCode& ec) 131 129 { 132 if (m_ descriptor->readyState() != RTCDataChannelDescriptor::ReadyStateOpen) {130 if (m_readyState != ReadyStateOpen) { 133 131 ec = INVALID_STATE_ERR; 134 132 return; 135 133 } 136 if (!m_handler->sendStringData(d escriptor(), data)) {134 if (!m_handler->sendStringData(data)) { 137 135 // FIXME: Decide what the right exception here is. 138 136 ec = SYNTAX_ERR; … … 142 140 void RTCDataChannel::send(PassRefPtr<ArrayBuffer> prpData, ExceptionCode& ec) 143 141 { 144 if (m_ descriptor->readyState() != RTCDataChannelDescriptor::ReadyStateOpen) {142 if (m_readyState != ReadyStateOpen) { 145 143 ec = INVALID_STATE_ERR; 146 144 return; … … 155 153 const char* dataPointer = static_cast<const char*>(data->data()); 156 154 157 if (!m_handler->sendRawData(d escriptor(), dataPointer, dataLength)) {155 if (!m_handler->sendRawData(dataPointer, dataLength)) { 158 156 // FIXME: Decide what the right exception here is. 159 157 ec = SYNTAX_ERR; … … 178 176 return; 179 177 180 m_handler->closeDataChannel(descriptor()); 181 } 182 183 void RTCDataChannel::readyStateChanged() 184 { 185 if (m_stopped) 186 return; 187 188 switch (m_descriptor->readyState()) { 189 case RTCDataChannelDescriptor::ReadyStateOpen: 178 m_handler->close(); 179 } 180 181 void RTCDataChannel::didChangeReadyState(ReadyState newState) 182 { 183 if (m_stopped || m_readyState == ReadyStateClosed) 184 return; 185 186 m_readyState = newState; 187 188 switch (m_readyState) { 189 case ReadyStateOpen: 190 190 scheduleDispatchEvent(Event::create(eventNames().openEvent, false, false)); 191 191 break; 192 case R TCDataChannelDescriptor::ReadyStateClosed:192 case ReadyStateClosed: 193 193 scheduleDispatchEvent(Event::create(eventNames().closeEvent, false, false)); 194 194 break; … … 198 198 } 199 199 200 void RTCDataChannel::d ataArrived(const String& text)200 void RTCDataChannel::didReceiveStringData(const String& text) 201 201 { 202 202 if (m_stopped) … … 206 206 } 207 207 208 void RTCDataChannel::d ataArrived(const char* data, size_t dataLength)208 void RTCDataChannel::didReceiveRawData(const char* data, size_t dataLength) 209 209 { 210 210 if (m_stopped) … … 223 223 } 224 224 225 void RTCDataChannel:: error()225 void RTCDataChannel::didDetectError() 226 226 { 227 227 if (m_stopped) … … 231 231 } 232 232 233 RTCDataChannelDescriptor* RTCDataChannel::descriptor()234 {235 return m_descriptor.get();236 }237 238 233 const AtomicString& RTCDataChannel::interfaceName() const 239 234 { … … 249 244 { 250 245 m_stopped = true; 251 m_handler = 0; 252 m_descriptor->setClient(0); 246 m_handler->setClient(0); 253 247 m_scriptExecutionContext = 0; 254 248 } -
trunk/Source/WebCore/Modules/mediastream/RTCDataChannel.h
r134207 r137441 28 28 #if ENABLE(MEDIA_STREAM) 29 29 30 #include "ActiveDOMObject.h"31 30 #include "EventTarget.h" 32 #include "RTCDataChannel Descriptor.h"31 #include "RTCDataChannelHandlerClient.h" 33 32 #include "Timer.h" 34 33 #include <wtf/RefCounted.h> 35 34 36 35 namespace WebCore { 36 37 37 class Blob; 38 class RTCDataChannelHandler; 38 39 class RTCPeerConnectionHandler; 39 40 40 class RTCDataChannel : public RefCounted<RTCDataChannel>, public EventTarget, public RTCDataChannel DescriptorClient {41 class RTCDataChannel : public RefCounted<RTCDataChannel>, public EventTarget, public RTCDataChannelHandlerClient { 41 42 public: 42 43 static PassRefPtr<RTCDataChannel> create(ScriptExecutionContext*, RTCPeerConnectionHandler*, const String& label, bool reliable, ExceptionCode&); 43 static PassRefPtr<RTCDataChannel> create(ScriptExecutionContext*, RTCPeerConnectionHandler*, PassRefPtr<RTCDataChannelDescriptor>);44 static PassRefPtr<RTCDataChannel> create(ScriptExecutionContext*, PassOwnPtr<RTCDataChannelHandler>); 44 45 ~RTCDataChannel(); 45 46 46 47 String label() const; 47 48 48 bool reliable() const; 49 50 49 String readyState() const; 51 52 50 unsigned long bufferedAmount() const; 53 51 … … 67 65 DEFINE_ATTRIBUTE_EVENT_LISTENER(message); 68 66 69 RTCDataChannelDescriptor* descriptor();70 67 void stop(); 71 68 … … 78 75 79 76 private: 80 RTCDataChannel(ScriptExecutionContext*, RTCPeerConnectionHandler*, PassRefPtr<RTCDataChannelDescriptor>);77 RTCDataChannel(ScriptExecutionContext*, PassOwnPtr<RTCDataChannelHandler>); 81 78 82 79 void scheduleDispatchEvent(PassRefPtr<Event>); … … 91 88 ScriptExecutionContext* m_scriptExecutionContext; 92 89 93 // RTCDataChannelDescriptor::Owner 94 virtual void readyStateChanged() OVERRIDE; 95 virtual void dataArrived(const String&) OVERRIDE; 96 virtual void dataArrived(const char*, size_t) OVERRIDE; 97 virtual void error() OVERRIDE; 90 // RTCDataChannelHandlerClient 91 virtual void didChangeReadyState(ReadyState) OVERRIDE; 92 virtual void didReceiveStringData(const String&) OVERRIDE; 93 virtual void didReceiveRawData(const char*, size_t) OVERRIDE; 94 virtual void didDetectError() OVERRIDE; 95 96 OwnPtr<RTCDataChannelHandler> m_handler; 98 97 99 98 bool m_stopped; 100 RefPtr<RTCDataChannelDescriptor> m_descriptor;101 99 100 ReadyState m_readyState; 102 101 enum BinaryType { 103 102 BinaryTypeBlob, … … 105 104 }; 106 105 BinaryType m_binaryType; 107 108 // Not owned by this class.109 RTCPeerConnectionHandler* m_handler;110 106 111 107 Timer<RTCDataChannel> m_scheduledEventTimer; -
trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp
r134976 r137441 46 46 #include "RTCDataChannel.h" 47 47 #include "RTCDataChannelEvent.h" 48 #include "RTCDataChannelHandler.h" 48 49 #include "RTCErrorCallback.h" 49 50 #include "RTCIceCandidate.h" … … 540 541 } 541 542 542 void RTCPeerConnection::didAddRemoteDataChannel(Pass RefPtr<RTCDataChannelDescriptor> channelDescriptor)543 void RTCPeerConnection::didAddRemoteDataChannel(PassOwnPtr<RTCDataChannelHandler> handler) 543 544 { 544 545 ASSERT(scriptExecutionContext()->isContextThread()); … … 547 548 return; 548 549 549 RefPtr<RTCDataChannel> channel = RTCDataChannel::create(scriptExecutionContext(), m_peerHandler.get(), channelDescriptor);550 RefPtr<RTCDataChannel> channel = RTCDataChannel::create(scriptExecutionContext(), handler); 550 551 m_dataChannels.append(channel); 551 552 -
trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.h
r134976 r137441 115 115 virtual void didAddRemoteStream(PassRefPtr<MediaStreamDescriptor>) OVERRIDE; 116 116 virtual void didRemoveRemoteStream(MediaStreamDescriptor*) OVERRIDE; 117 virtual void didAddRemoteDataChannel(Pass RefPtr<RTCDataChannelDescriptor>) OVERRIDE;117 virtual void didAddRemoteDataChannel(PassOwnPtr<RTCDataChannelHandler>) OVERRIDE; 118 118 119 119 // EventTarget -
trunk/Source/WebCore/WebCore.gypi
r137422 r137441 4300 4300 'platform/mediastream/MediaStreamSource.h', 4301 4301 'platform/mediastream/RTCConfiguration.h', 4302 'platform/mediastream/RTCDataChannel Descriptor.cpp',4303 'platform/mediastream/RTCDataChannel Descriptor.h',4302 'platform/mediastream/RTCDataChannelHandler.h', 4303 'platform/mediastream/RTCDataChannelHandlerClient.h', 4304 4304 'platform/mediastream/RTCIceCandidateDescriptor.cpp', 4305 4305 'platform/mediastream/RTCIceCandidateDescriptor.h', … … 4313 4313 'platform/mediastream/chromium/MediaStreamCenterChromium.cpp', 4314 4314 'platform/mediastream/chromium/MediaStreamCenterChromium.h', 4315 'platform/mediastream/chromium/RTCDataChannelHandlerChromium.cpp', 4316 'platform/mediastream/chromium/RTCDataChannelHandlerChromium.h', 4315 4317 'platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.cpp', 4316 4318 'platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.h', … … 7110 7112 'platform/chromium/support/WebPrerender.cpp', 7111 7113 'platform/chromium/support/WebRTCConfiguration.cpp', 7112 'platform/chromium/support/WebRTCDataChannel.cpp',7113 7114 'platform/chromium/support/WebRTCICECandidate.cpp', 7114 7115 'platform/chromium/support/WebRTCSessionDescription.cpp', -
trunk/Source/WebCore/platform/mediastream/RTCDataChannelHandler.h
r137440 r137441 23 23 */ 24 24 25 #include "config.h" 25 #ifndef RTCDataChannelHandler_h 26 #define RTCDataChannelHandler_h 26 27 27 28 #if ENABLE(MEDIA_STREAM) 28 29 29 #include "RTCDataChannelDescriptor.h"30 #include <wtf/text/WTFString.h> 30 31 31 32 namespace WebCore { 32 33 33 PassRefPtr<RTCDataChannelDescriptor> RTCDataChannelDescriptor::create(const String& label, bool reliable) 34 { 35 return adoptRef(new RTCDataChannelDescriptor(label, reliable)); 36 } 34 class RTCDataChannelHandlerClient; 37 35 38 RTCDataChannelDescriptor::RTCDataChannelDescriptor(const String& label, bool reliable) 39 : m_client(0) 40 , m_label(label) 41 , m_reliable(reliable) 42 , m_readyState(ReadyStateConnecting) 43 , m_bufferedAmount(0) 44 { 45 } 36 class RTCDataChannelHandler { 37 public: 38 virtual ~RTCDataChannelHandler() { } 46 39 47 RTCDataChannelDescriptor::~RTCDataChannelDescriptor() 48 { 49 } 40 virtual void setClient(RTCDataChannelHandlerClient*) = 0; 50 41 51 void RTCDataChannelDescriptor::readyStateChanged(ReadyState readyState) 52 { 53 ASSERT(m_readyState != ReadyStateClosed); 54 if (m_readyState != readyState) { 55 m_readyState = readyState; 56 if (m_client) 57 m_client->readyStateChanged(); 58 } 59 } 42 virtual String label() = 0; 43 virtual bool isReliable() = 0; 44 virtual unsigned long bufferedAmount() = 0; 60 45 61 void RTCDataChannelDescriptor::dataArrived(const String& data) 62 { 63 ASSERT(m_readyState != ReadyStateClosed); 64 if (m_client) 65 m_client->dataArrived(data); 66 } 67 68 void RTCDataChannelDescriptor::dataArrived(const char* data, size_t dataLength) 69 { 70 ASSERT(m_readyState != ReadyStateClosed); 71 if (m_client) 72 m_client->dataArrived(data, dataLength); 73 } 74 75 void RTCDataChannelDescriptor::error() 76 { 77 ASSERT(m_readyState != ReadyStateClosed); 78 if (m_client) 79 m_client->error(); 80 } 46 virtual bool sendStringData(const String&) = 0; 47 virtual bool sendRawData(const char*, size_t) = 0; 48 virtual void close() = 0; 49 }; 81 50 82 51 } // namespace WebCore 83 52 84 53 #endif // ENABLE(MEDIA_STREAM) 54 55 #endif // RTCDataChannelHandler_h -
trunk/Source/WebCore/platform/mediastream/RTCDataChannelHandlerClient.h
r137440 r137441 23 23 */ 24 24 25 #include "config.h" 25 #ifndef RTCDataChannelHandlerClient_h 26 #define RTCDataChannelHandlerClient_h 26 27 27 28 #if ENABLE(MEDIA_STREAM) 28 29 29 #include "RTCDataChannelDescriptor.h"30 31 30 namespace WebCore { 32 31 33 PassRefPtr<RTCDataChannelDescriptor> RTCDataChannelDescriptor::create(const String& label, bool reliable) 34 { 35 return adoptRef(new RTCDataChannelDescriptor(label, reliable)); 36 } 32 class RTCDataChannelHandlerClient { 33 public: 34 enum ReadyState { 35 ReadyStateConnecting = 0, 36 ReadyStateOpen = 1, 37 ReadyStateClosing = 2, 38 ReadyStateClosed = 3, 39 }; 37 40 38 RTCDataChannelDescriptor::RTCDataChannelDescriptor(const String& label, bool reliable) 39 : m_client(0) 40 , m_label(label) 41 , m_reliable(reliable) 42 , m_readyState(ReadyStateConnecting) 43 , m_bufferedAmount(0) 44 { 45 } 41 virtual ~RTCDataChannelHandlerClient() { } 46 42 47 RTCDataChannelDescriptor::~RTCDataChannelDescriptor() 48 { 49 } 50 51 void RTCDataChannelDescriptor::readyStateChanged(ReadyState readyState) 52 { 53 ASSERT(m_readyState != ReadyStateClosed); 54 if (m_readyState != readyState) { 55 m_readyState = readyState; 56 if (m_client) 57 m_client->readyStateChanged(); 58 } 59 } 60 61 void RTCDataChannelDescriptor::dataArrived(const String& data) 62 { 63 ASSERT(m_readyState != ReadyStateClosed); 64 if (m_client) 65 m_client->dataArrived(data); 66 } 67 68 void RTCDataChannelDescriptor::dataArrived(const char* data, size_t dataLength) 69 { 70 ASSERT(m_readyState != ReadyStateClosed); 71 if (m_client) 72 m_client->dataArrived(data, dataLength); 73 } 74 75 void RTCDataChannelDescriptor::error() 76 { 77 ASSERT(m_readyState != ReadyStateClosed); 78 if (m_client) 79 m_client->error(); 80 } 43 virtual void didChangeReadyState(ReadyState) = 0; 44 virtual void didReceiveStringData(const String&) = 0; 45 virtual void didReceiveRawData(const char*, size_t) = 0; 46 virtual void didDetectError() = 0; 47 }; 81 48 82 49 } // namespace WebCore 83 50 84 51 #endif // ENABLE(MEDIA_STREAM) 52 53 #endif // RTCDataChannelHandlerClient_h -
trunk/Source/WebCore/platform/mediastream/RTCPeerConnectionHandler.cpp
r131372 r137441 35 35 #include "RTCPeerConnectionHandler.h" 36 36 37 #include "RTCPeerConnectionHandlerClient.h"38 #include "RTCSessionDescriptionDescriptor.h"39 37 #include <wtf/PassOwnPtr.h> 40 38 41 39 namespace WebCore { 40 class RTCPeerConnectionHandlerClient; 42 41 43 // Dummy implementations below for ports that build with MEDIA_STREAM enabled by default. 44 45 class RTCPeerConnectionHandlerDummy : public RTCPeerConnectionHandler { 46 public: 47 RTCPeerConnectionHandlerDummy(RTCPeerConnectionHandlerClient*); 48 virtual ~RTCPeerConnectionHandlerDummy(); 49 50 virtual bool initialize(PassRefPtr<RTCConfiguration>, PassRefPtr<MediaConstraints>) OVERRIDE; 51 52 virtual void createOffer(PassRefPtr<RTCSessionDescriptionRequest>, PassRefPtr<MediaConstraints>) OVERRIDE; 53 virtual void createAnswer(PassRefPtr<RTCSessionDescriptionRequest>, PassRefPtr<MediaConstraints>) OVERRIDE; 54 virtual void setLocalDescription(PassRefPtr<RTCVoidRequest>, PassRefPtr<RTCSessionDescriptionDescriptor>) OVERRIDE; 55 virtual void setRemoteDescription(PassRefPtr<RTCVoidRequest>, PassRefPtr<RTCSessionDescriptionDescriptor>) OVERRIDE; 56 virtual PassRefPtr<RTCSessionDescriptionDescriptor> localDescription() OVERRIDE; 57 virtual PassRefPtr<RTCSessionDescriptionDescriptor> remoteDescription() OVERRIDE; 58 virtual bool updateIce(PassRefPtr<RTCConfiguration>, PassRefPtr<MediaConstraints>) OVERRIDE; 59 virtual bool addIceCandidate(PassRefPtr<RTCIceCandidateDescriptor>) OVERRIDE; 60 virtual bool addStream(PassRefPtr<MediaStreamDescriptor>, PassRefPtr<MediaConstraints>) OVERRIDE; 61 virtual void removeStream(PassRefPtr<MediaStreamDescriptor>) OVERRIDE; 62 virtual void getStats(PassRefPtr<RTCStatsRequest>) OVERRIDE; 63 virtual void stop() OVERRIDE; 64 65 // RTCDataChannel. 66 virtual bool openDataChannel(PassRefPtr<RTCDataChannelDescriptor>) OVERRIDE; 67 virtual bool sendStringData(PassRefPtr<RTCDataChannelDescriptor>, const String&) OVERRIDE; 68 virtual bool sendRawData(PassRefPtr<RTCDataChannelDescriptor>, const char*, size_t) OVERRIDE; 69 virtual void closeDataChannel(PassRefPtr<RTCDataChannelDescriptor>) OVERRIDE; 70 71 private: 72 RTCPeerConnectionHandlerClient* m_client; 73 }; 74 75 PassOwnPtr<RTCPeerConnectionHandler> RTCPeerConnectionHandler::create(RTCPeerConnectionHandlerClient* client) 42 PassOwnPtr<RTCPeerConnectionHandler> RTCPeerConnectionHandler::create(RTCPeerConnectionHandlerClient*) 76 43 { 77 return adoptPtr(new RTCPeerConnectionHandlerDummy(client)); 78 } 79 80 RTCPeerConnectionHandlerDummy::RTCPeerConnectionHandlerDummy(RTCPeerConnectionHandlerClient* client) 81 : m_client(client) 82 { 83 ASSERT(m_client); 84 } 85 86 RTCPeerConnectionHandlerDummy::~RTCPeerConnectionHandlerDummy() 87 { 88 } 89 90 bool RTCPeerConnectionHandlerDummy::initialize(PassRefPtr<RTCConfiguration>, PassRefPtr<MediaConstraints>) 91 { 92 return false; 93 } 94 95 void RTCPeerConnectionHandlerDummy::createOffer(PassRefPtr<RTCSessionDescriptionRequest>, PassRefPtr<MediaConstraints>) 96 { 97 } 98 99 void RTCPeerConnectionHandlerDummy::createAnswer(PassRefPtr<RTCSessionDescriptionRequest>, PassRefPtr<MediaConstraints>) 100 { 101 } 102 103 void RTCPeerConnectionHandlerDummy::setLocalDescription(PassRefPtr<RTCVoidRequest>, PassRefPtr<RTCSessionDescriptionDescriptor>) 104 { 105 } 106 107 void RTCPeerConnectionHandlerDummy::setRemoteDescription(PassRefPtr<RTCVoidRequest>, PassRefPtr<RTCSessionDescriptionDescriptor>) 108 { 109 } 110 111 PassRefPtr<RTCSessionDescriptionDescriptor> RTCPeerConnectionHandlerDummy::localDescription() 112 { 113 return 0; 114 } 115 116 PassRefPtr<RTCSessionDescriptionDescriptor> RTCPeerConnectionHandlerDummy::remoteDescription() 117 { 118 return 0; 119 } 120 121 bool RTCPeerConnectionHandlerDummy::addStream(PassRefPtr<MediaStreamDescriptor>, PassRefPtr<MediaConstraints>) 122 { 123 return false; 124 } 125 126 void RTCPeerConnectionHandlerDummy::removeStream(PassRefPtr<MediaStreamDescriptor>) 127 { 128 } 129 130 bool RTCPeerConnectionHandlerDummy::updateIce(PassRefPtr<RTCConfiguration>, PassRefPtr<MediaConstraints>) 131 { 132 return false; 133 } 134 135 bool RTCPeerConnectionHandlerDummy::addIceCandidate(PassRefPtr<RTCIceCandidateDescriptor>) 136 { 137 return false; 138 } 139 140 void RTCPeerConnectionHandlerDummy::getStats(PassRefPtr<RTCStatsRequest>) 141 { 142 } 143 144 void RTCPeerConnectionHandlerDummy::stop() 145 { 146 } 147 148 bool RTCPeerConnectionHandlerDummy::openDataChannel(PassRefPtr<RTCDataChannelDescriptor>) 149 { 150 return false; 151 } 152 153 bool RTCPeerConnectionHandlerDummy::sendStringData(PassRefPtr<RTCDataChannelDescriptor>, const String&) 154 { 155 return false; 156 } 157 158 bool RTCPeerConnectionHandlerDummy::sendRawData(PassRefPtr<RTCDataChannelDescriptor>, const char*, size_t) 159 { 160 return false; 161 } 162 163 void RTCPeerConnectionHandlerDummy::closeDataChannel(PassRefPtr<RTCDataChannelDescriptor>) 164 { 44 return nullptr; 165 45 } 166 46 -
trunk/Source/WebCore/platform/mediastream/RTCPeerConnectionHandler.h
r131372 r137441 42 42 class MediaConstraints; 43 43 class RTCConfiguration; 44 class RTCDataChannel Descriptor;44 class RTCDataChannelHandler; 45 45 class RTCIceCandidateDescriptor; 46 46 class RTCPeerConnectionHandlerClient; … … 70 70 virtual void stop() = 0; 71 71 72 // RTCDataChannel. 73 virtual bool openDataChannel(PassRefPtr<RTCDataChannelDescriptor>) = 0; 74 virtual bool sendStringData(PassRefPtr<RTCDataChannelDescriptor>, const String&) = 0; 75 virtual bool sendRawData(PassRefPtr<RTCDataChannelDescriptor>, const char*, size_t) = 0; 76 virtual void closeDataChannel(PassRefPtr<RTCDataChannelDescriptor>) = 0; 72 // RTCDataChannel 73 virtual PassOwnPtr<RTCDataChannelHandler> createDataChannel(const String& label, bool reliable) = 0; 77 74 78 75 protected: -
trunk/Source/WebCore/platform/mediastream/RTCPeerConnectionHandlerClient.h
r134976 r137441 39 39 40 40 class MediaStreamDescriptor; 41 class RTCDataChannel Descriptor;41 class RTCDataChannelHandler; 42 42 class RTCIceCandidateDescriptor; 43 43 … … 87 87 virtual void didAddRemoteStream(PassRefPtr<MediaStreamDescriptor>) = 0; 88 88 virtual void didRemoveRemoteStream(MediaStreamDescriptor*) = 0; 89 90 // RTCDataChannel. 91 virtual void didAddRemoteDataChannel(PassRefPtr<RTCDataChannelDescriptor>) = 0; 89 virtual void didAddRemoteDataChannel(PassOwnPtr<RTCDataChannelHandler>) = 0; 92 90 }; 93 91 -
trunk/Source/WebCore/platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.cpp
r134976 r137441 37 37 #include "MediaConstraints.h" 38 38 #include "RTCConfiguration.h" 39 #include "RTCDataChannelDescriptor.h" 39 #include "RTCDataChannelHandlerChromium.h" 40 #include "RTCDataChannelHandlerClient.h" 40 41 #include "RTCIceCandidateDescriptor.h" 41 42 #include "RTCPeerConnectionHandlerClient.h" … … 48 49 #include <public/WebMediaStreamDescriptor.h> 49 50 #include <public/WebRTCConfiguration.h> 50 #include <public/WebRTCDataChannel .h>51 #include <public/WebRTCDataChannelHandler.h> 51 52 #include <public/WebRTCICECandidate.h> 52 53 #include <public/WebRTCSessionDescription.h> … … 149 150 } 150 151 151 bool RTCPeerConnectionHandlerChromium::openDataChannel(PassRefPtr<RTCDataChannelDescriptor> dataChannel) 152 { 153 return m_webHandler->openDataChannel(dataChannel); 154 } 155 156 bool RTCPeerConnectionHandlerChromium::sendStringData(PassRefPtr<RTCDataChannelDescriptor> dataChannel, const String& data) 157 { 158 return m_webHandler->sendStringData(dataChannel, data); 159 } 160 161 bool RTCPeerConnectionHandlerChromium::sendRawData(PassRefPtr<RTCDataChannelDescriptor> dataChannel, const char* data, size_t dataLength) 162 { 163 return m_webHandler->sendRawData(dataChannel, data, dataLength); 164 } 165 166 void RTCPeerConnectionHandlerChromium::closeDataChannel(PassRefPtr<RTCDataChannelDescriptor> dataChannel) 167 { 168 return m_webHandler->closeDataChannel(dataChannel); 152 PassOwnPtr<RTCDataChannelHandler> RTCPeerConnectionHandlerChromium::createDataChannel(const String& label, bool reliable) 153 { 154 WebKit::WebRTCDataChannelHandler* webHandler = m_webHandler->createDataChannel(label, reliable); 155 if (!webHandler) 156 return nullptr; 157 158 return RTCDataChannelHandlerChromium::create(webHandler); 169 159 } 170 160 … … 209 199 } 210 200 211 void RTCPeerConnectionHandlerChromium::didAddRemoteDataChannel(const WebKit::WebRTCDataChannel& dataChannel) 212 { 213 m_client->didAddRemoteDataChannel(dataChannel); 201 void RTCPeerConnectionHandlerChromium::didAddRemoteDataChannel(WebKit::WebRTCDataChannelHandler* webHandler) 202 { 203 ASSERT(webHandler); 204 m_client->didAddRemoteDataChannel(RTCDataChannelHandlerChromium::create(webHandler)); 214 205 } 215 206 -
trunk/Source/WebCore/platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.h
r134976 r137441 43 43 namespace WebKit { 44 44 class WebMediaStreamDescriptor; 45 class WebRTCDataChannel;46 45 class WebRTCICECandidate; 47 46 } 48 47 49 48 namespace WebCore { 49 50 class RTCDataChannelHandler; 50 51 51 52 class RTCPeerConnectionHandlerChromium : public RTCPeerConnectionHandler, public WebKit::WebRTCPeerConnectionHandlerClient { … … 69 70 virtual void removeStream(PassRefPtr<MediaStreamDescriptor>) OVERRIDE; 70 71 virtual void getStats(PassRefPtr<RTCStatsRequest>) OVERRIDE; 72 virtual PassOwnPtr<RTCDataChannelHandler> createDataChannel(const String& label, bool reliable) OVERRIDE; 71 73 virtual void stop() OVERRIDE; 72 73 virtual bool openDataChannel(PassRefPtr<RTCDataChannelDescriptor>) OVERRIDE;74 virtual bool sendStringData(PassRefPtr<RTCDataChannelDescriptor>, const String&) OVERRIDE;75 virtual bool sendRawData(PassRefPtr<RTCDataChannelDescriptor>, const char*, size_t) OVERRIDE;76 virtual void closeDataChannel(PassRefPtr<RTCDataChannelDescriptor>) OVERRIDE;77 74 78 75 // WebKit::WebRTCPeerConnectionHandlerClient implementation. … … 84 81 virtual void didAddRemoteStream(const WebKit::WebMediaStreamDescriptor&) OVERRIDE; 85 82 virtual void didRemoveRemoteStream(const WebKit::WebMediaStreamDescriptor&) OVERRIDE; 86 virtual void didAddRemoteDataChannel( const WebKit::WebRTCDataChannel&) OVERRIDE;83 virtual void didAddRemoteDataChannel(WebKit::WebRTCDataChannelHandler*) OVERRIDE; 87 84 88 85 static WebKit::WebRTCPeerConnectionHandler* toWebRTCPeerConnectionHandler(RTCPeerConnectionHandler*); -
trunk/Source/WebKit/chromium/ChangeLog
r137414 r137441 1 2012-12-12 Tommy Widenflycht <tommyw@google.com> 2 3 MediaStream API: Change the data channel descriptor pattern to a handler pattern 4 https://bugs.webkit.org/show_bug.cgi?id=104543 5 6 Reviewed by Kent Tamura. 7 8 * src/AssertMatchingEnums.cpp: 9 1 10 2012-12-11 Dominic Mazzoni <dmazzoni@google.com> 2 11 -
trunk/Source/WebKit/chromium/src/AssertMatchingEnums.cpp
r136846 r137441 66 66 #include "NotificationClient.h" 67 67 #include "PageVisibilityState.h" 68 #include "RTCDataChannel Descriptor.h"68 #include "RTCDataChannelHandlerClient.h" 69 69 #include "RTCPeerConnectionHandlerClient.h" 70 70 #include "ReferrerPolicy.h" … … 119 119 #include <public/WebFilterOperation.h> 120 120 #include <public/WebMediaStreamSource.h> 121 #include <public/WebRTCDataChannel.h> 122 #include <public/WebRTCPeerConnectionHandler.h> 121 #include <public/WebRTCDataChannelHandlerClient.h> 123 122 #include <public/WebRTCPeerConnectionHandlerClient.h> 124 123 #include <public/WebReferrerPolicy.h> … … 587 586 COMPILE_ASSERT_MATCHING_ENUM(WebRTCPeerConnectionHandlerClient::ICEStateWaiting, RTCPeerConnectionHandlerClient::IceStateWaiting); 588 587 589 COMPILE_ASSERT_MATCHING_ENUM(WebRTCDataChannel ::ReadyStateConnecting, RTCDataChannelDescriptor::ReadyStateConnecting);590 COMPILE_ASSERT_MATCHING_ENUM(WebRTCDataChannel ::ReadyStateOpen, RTCDataChannelDescriptor::ReadyStateOpen);591 COMPILE_ASSERT_MATCHING_ENUM(WebRTCDataChannel ::ReadyStateClosing, RTCDataChannelDescriptor::ReadyStateClosing);592 COMPILE_ASSERT_MATCHING_ENUM(WebRTCDataChannel ::ReadyStateClosed, RTCDataChannelDescriptor::ReadyStateClosed);588 COMPILE_ASSERT_MATCHING_ENUM(WebRTCDataChannelHandlerClient::ReadyStateConnecting, RTCDataChannelHandlerClient::ReadyStateConnecting); 589 COMPILE_ASSERT_MATCHING_ENUM(WebRTCDataChannelHandlerClient::ReadyStateOpen, RTCDataChannelHandlerClient::ReadyStateOpen); 590 COMPILE_ASSERT_MATCHING_ENUM(WebRTCDataChannelHandlerClient::ReadyStateClosing, RTCDataChannelHandlerClient::ReadyStateClosing); 591 COMPILE_ASSERT_MATCHING_ENUM(WebRTCDataChannelHandlerClient::ReadyStateClosed, RTCDataChannelHandlerClient::ReadyStateClosed); 593 592 #endif 594 593 -
trunk/Tools/ChangeLog
r137439 r137441 1 2012-12-12 Tommy Widenflycht <tommyw@google.com> 2 3 MediaStream API: Change the data channel descriptor pattern to a handler pattern 4 https://bugs.webkit.org/show_bug.cgi?id=104543 5 6 Reviewed by Kent Tamura. 7 8 Adding mocks to be able to test this refactoring. 9 10 * DumpRenderTree/DumpRenderTree.gypi: 11 * DumpRenderTree/chromium/MockWebRTCDataChannelHandler.cpp: Added. 12 (DataChannelReadyStateTask): 13 (DataChannelReadyStateTask::DataChannelReadyStateTask): 14 (MockWebRTCDataChannelHandler::MockWebRTCDataChannelHandler): 15 (MockWebRTCDataChannelHandler::setClient): 16 (MockWebRTCDataChannelHandler::bufferedAmount): 17 (MockWebRTCDataChannelHandler::sendStringData): 18 (MockWebRTCDataChannelHandler::sendRawData): 19 (MockWebRTCDataChannelHandler::close): 20 * DumpRenderTree/chromium/MockWebRTCDataChannelHandler.h: Added. 21 (MockWebRTCDataChannelHandler): 22 (MockWebRTCDataChannelHandler::taskList): 23 * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp: 24 (RTCPeerConnectionReadyStateTask::RTCPeerConnectionReadyStateTask): 25 (RemoteDataChannelTask::RemoteDataChannelTask): 26 (MockWebRTCPeerConnectionHandler::createDataChannel): 27 (MockWebRTCPeerConnectionHandler::stop): 28 * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h: 29 (MockWebRTCPeerConnectionHandler): 30 1 31 2012-12-12 Jochen Eisinger <jochen@chromium.org> 2 32 -
trunk/Tools/DumpRenderTree/DumpRenderTree.gypi
r137256 r137441 25 25 'chromium/MockWebRTCPeerConnectionHandler.cpp', 26 26 'chromium/MockWebRTCPeerConnectionHandler.h', 27 'chromium/MockWebRTCDataChannelHandler.cpp', 28 'chromium/MockWebRTCDataChannelHandler.h', 27 29 'chromium/MockWebSpeechInputController.cpp', 28 30 'chromium/MockWebSpeechInputController.h', -
trunk/Tools/DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp
r134970 r137441 35 35 36 36 #include "MockConstraints.h" 37 #include "MockWebRTCDataChannelHandler.h" 37 38 #include "Task.h" 38 39 #include <public/WebMediaConstraints.h> … … 129 130 }; 130 131 131 class StringDataTask : public WebMethodTask<MockWebRTCPeerConnectionHandler> {132 public:133 StringDataTask(MockWebRTCPeerConnectionHandler* object, const WebRTCDataChannel& dataChannel, const WebString& data)134 : WebMethodTask<MockWebRTCPeerConnectionHandler>(object)135 , m_dataChannel(dataChannel)136 , m_data(data)137 {138 }139 140 virtual void runIfValid() OVERRIDE141 {142 m_dataChannel.dataArrived(m_data);143 }144 145 private:146 WebRTCDataChannel m_dataChannel;147 WebString m_data;148 };149 150 class CharPtrDataTask : public WebMethodTask<MockWebRTCPeerConnectionHandler> {151 public:152 CharPtrDataTask(MockWebRTCPeerConnectionHandler* object, const WebRTCDataChannel& dataChannel, const char* data, size_t length)153 : WebMethodTask<MockWebRTCPeerConnectionHandler>(object)154 , m_dataChannel(dataChannel)155 , m_length(length)156 {157 m_data = new char[m_length];158 memcpy(m_data, data, m_length);159 }160 161 virtual void runIfValid() OVERRIDE162 {163 m_dataChannel.dataArrived(m_data, m_length);164 delete [] m_data;165 }166 167 private:168 WebRTCDataChannel m_dataChannel;169 char* m_data;170 size_t m_length;171 };172 173 class DataChannelReadyStateTask : public WebMethodTask<MockWebRTCPeerConnectionHandler> {174 public:175 DataChannelReadyStateTask(MockWebRTCPeerConnectionHandler* object, const WebRTCDataChannel& dataChannel, WebRTCDataChannel::ReadyState state)176 : WebMethodTask<MockWebRTCPeerConnectionHandler>(object)177 , m_dataChannel(dataChannel)178 , m_state(state)179 {180 }181 182 virtual void runIfValid() OVERRIDE183 {184 m_dataChannel.readyStateChanged(m_state);185 }186 187 private:188 WebRTCDataChannel m_dataChannel;189 WebRTCDataChannel::ReadyState m_state;190 };191 192 132 class RTCPeerConnectionReadyStateTask : public WebMethodTask<MockWebRTCPeerConnectionHandler> { 193 133 public: … … 207 147 WebRTCPeerConnectionHandlerClient* m_client; 208 148 WebRTCPeerConnectionHandlerClient::ReadyState m_state; 149 }; 150 151 class RemoteDataChannelTask : public WebMethodTask<MockWebRTCPeerConnectionHandler> { 152 public: 153 RemoteDataChannelTask(MockWebRTCPeerConnectionHandler* object, WebRTCPeerConnectionHandlerClient* client) 154 : WebMethodTask<MockWebRTCPeerConnectionHandler>(object) 155 , m_client(client) 156 { 157 } 158 159 virtual void runIfValid() OVERRIDE 160 { 161 WebRTCDataChannelHandler* remoteDataChannel = new MockWebRTCDataChannelHandler("MockRemoteDataChannel", true); 162 m_client->didAddRemoteDataChannel(remoteDataChannel); 163 } 164 165 private: 166 WebRTCPeerConnectionHandlerClient* m_client; 209 167 }; 210 168 … … 328 286 } 329 287 288 WebRTCDataChannelHandler* MockWebRTCPeerConnectionHandler::createDataChannel(const WebString& label, bool reliable) 289 { 290 postTask(new RemoteDataChannelTask(this, m_client)); 291 292 return new MockWebRTCDataChannelHandler(label, reliable); 293 } 294 330 295 void MockWebRTCPeerConnectionHandler::stop() 331 296 { … … 333 298 } 334 299 335 bool MockWebRTCPeerConnectionHandler::openDataChannel(const WebRTCDataChannel& dataChannel)336 {337 if (m_stopped)338 return false;339 340 WebRTCDataChannel remoteDataChannel;341 remoteDataChannel.initialize("MockRemoteDataChannel", dataChannel.reliable());342 remoteDataChannel.readyStateChanged(WebRTCDataChannel::ReadyStateOpen);343 m_client->didAddRemoteDataChannel(remoteDataChannel);344 345 postTask(new DataChannelReadyStateTask(this, dataChannel, WebRTCDataChannel::ReadyStateOpen));346 return true;347 }348 349 void MockWebRTCPeerConnectionHandler::closeDataChannel(const WebRTCDataChannel& dataChannel)350 {351 postTask(new DataChannelReadyStateTask(this, dataChannel, WebRTCDataChannel::ReadyStateClosed));352 }353 354 bool MockWebRTCPeerConnectionHandler::sendStringData(const WebRTCDataChannel& dataChannel, const WebString& data)355 {356 if (m_stopped)357 return false;358 359 dataChannel.dataArrived(data);360 return true;361 }362 363 bool MockWebRTCPeerConnectionHandler::sendRawData(const WebRTCDataChannel& dataChannel, const char* data, size_t length)364 {365 if (m_stopped)366 return false;367 368 dataChannel.dataArrived(data, length);369 return true;370 }371 372 300 #endif // ENABLE(MEDIA_STREAM) -
trunk/Tools/DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h
r132138 r137441 35 35 36 36 #include "WebTask.h" 37 #include <public/WebRTCDataChannel.h>38 37 #include <public/WebRTCPeerConnectionHandler.h> 39 38 #include <public/WebRTCSessionDescription.h> … … 62 61 virtual void removeStream(const WebKit::WebMediaStreamDescriptor&) OVERRIDE; 63 62 virtual void getStats(const WebKit::WebRTCStatsRequest&) OVERRIDE; 63 virtual WebKit::WebRTCDataChannelHandler* createDataChannel(const WebKit::WebString& label, bool reliable) OVERRIDE; 64 64 virtual void stop() OVERRIDE; 65 66 virtual bool openDataChannel(const WebKit::WebRTCDataChannel&) OVERRIDE;67 virtual bool sendStringData(const WebKit::WebRTCDataChannel&, const WebKit::WebString&) OVERRIDE;68 virtual bool sendRawData(const WebKit::WebRTCDataChannel&, const char*, size_t) OVERRIDE;69 virtual void closeDataChannel(const WebKit::WebRTCDataChannel&) OVERRIDE;70 65 71 66 // WebTask related methods
Note: See TracChangeset
for help on using the changeset viewer.