Diff
Modified: trunk/LayoutTests/ChangeLog (134206 => 134207)
--- trunk/LayoutTests/ChangeLog 2012-11-12 12:21:44 UTC (rev 134206)
+++ trunk/LayoutTests/ChangeLog 2012-11-12 12:24:50 UTC (rev 134207)
@@ -1,3 +1,15 @@
+2012-11-12 Tommy Widenflycht <[email protected]>
+
+ MediaStream API: Schedule the RTCDataChannel events to be triggered at idle state
+ https://bugs.webkit.org/show_bug.cgi?id=101751
+
+ Reviewed by Adam Barth.
+
+ Adding shouldNotTrow to the send() calls.
+
+ * fast/mediastream/RTCPeerConnection-datachannel-expected.txt:
+ * fast/mediastream/RTCPeerConnection-datachannel.html:
+
2012-11-12 Mihnea Ovidenie <[email protected]>
[CSSRegions]Add support for text-shadow in region styling
Modified: trunk/LayoutTests/fast/mediastream/RTCPeerConnection-datachannel-expected.txt (134206 => 134207)
--- trunk/LayoutTests/fast/mediastream/RTCPeerConnection-datachannel-expected.txt 2012-11-12 12:21:44 UTC (rev 134206)
+++ trunk/LayoutTests/fast/mediastream/RTCPeerConnection-datachannel-expected.txt 2012-11-12 12:24:50 UTC (rev 134207)
@@ -12,12 +12,15 @@
PASS dc_onopen was called
PASS dc.readyState is 'open'
PASS dc.label is 'label'
+PASS dc.send('xyzzy'); did not throw exception.
PASS dc_onmessage_string was called
PASS data is 'xyzzy'
+PASS dc.send(buffer); did not throw exception.
PASS dc_onmessage_arraybuffer was called
PASS data.byteLength is 2
PASS array[0] is 17
PASS array[1] is 19
+PASS dc.send(array); did not throw exception.
PASS dc_onmessage_arraybufferview was called
PASS data.byteLength is 2
PASS array[0] is 11
Modified: trunk/LayoutTests/fast/mediastream/RTCPeerConnection-datachannel.html (134206 => 134207)
--- trunk/LayoutTests/fast/mediastream/RTCPeerConnection-datachannel.html 2012-11-12 12:21:44 UTC (rev 134206)
+++ trunk/LayoutTests/fast/mediastream/RTCPeerConnection-datachannel.html 2012-11-12 12:24:50 UTC (rev 134207)
@@ -42,7 +42,7 @@
array[0] = 11;
array[1] = 13;
dc._onmessage_ = dc_onmessage_arraybufferview;
- dc.send(array);
+ shouldNotThrow("dc.send(array);");
}
function dc_onmessage_string(e) {
@@ -51,12 +51,12 @@
shouldBe("data", "'xyzzy'");
dc.binaryType = "arraybuffer";
- var buffer = new ArrayBuffer(2);
+ buffer = new ArrayBuffer(2);
var array = new Int8Array(buffer);
array[0] = 17;
array[1] = 19;
dc._onmessage_ = dc_onmessage_arraybuffer;
- dc.send(buffer);
+ shouldNotThrow("dc.send(buffer);");
}
function dc_onopen() {
@@ -65,7 +65,7 @@
shouldBe("dc.label", "'label'");
dc._onmessage_ = dc_onmessage_string;
- dc.send("xyzzy");
+ shouldNotThrow("dc.send('xyzzy');");
}
function pc_onopen() {
Modified: trunk/Source/Platform/ChangeLog (134206 => 134207)
--- trunk/Source/Platform/ChangeLog 2012-11-12 12:21:44 UTC (rev 134206)
+++ trunk/Source/Platform/ChangeLog 2012-11-12 12:24:50 UTC (rev 134207)
@@ -1,3 +1,15 @@
+2012-11-12 Tommy Widenflycht <[email protected]>
+
+ MediaStream API: Schedule the RTCDataChannel events to be triggered at idle state
+ https://bugs.webkit.org/show_bug.cgi?id=101751
+
+ Reviewed by Adam Barth.
+
+ Making some WebRTCDataChannel methods const.
+
+ * chromium/public/WebRTCDataChannel.h:
+ (WebRTCDataChannel):
+
2012-11-09 Tommy Widenflycht <[email protected]>
MediaStream API: Deleting all files relating to the deprecated PeerConnection00
Modified: trunk/Source/Platform/chromium/public/WebRTCDataChannel.h (134206 => 134207)
--- trunk/Source/Platform/chromium/public/WebRTCDataChannel.h 2012-11-12 12:21:44 UTC (rev 134206)
+++ trunk/Source/Platform/chromium/public/WebRTCDataChannel.h 2012-11-12 12:24:50 UTC (rev 134207)
@@ -69,11 +69,11 @@
WEBKIT_EXPORT WebString label() const;
WEBKIT_EXPORT bool reliable() const;
- WEBKIT_EXPORT void setBufferedAmount(unsigned long);
- WEBKIT_EXPORT void readyStateChanged(ReadyState);
- WEBKIT_EXPORT void dataArrived(const WebString&);
- WEBKIT_EXPORT void dataArrived(const char*, size_t);
- WEBKIT_EXPORT void error();
+ WEBKIT_EXPORT void setBufferedAmount(unsigned long) const;
+ WEBKIT_EXPORT void readyStateChanged(ReadyState) const;
+ WEBKIT_EXPORT void dataArrived(const WebString&) const;
+ WEBKIT_EXPORT void dataArrived(const char*, size_t) const;
+ WEBKIT_EXPORT void error() const;
// Extra data associated with this WebRTCDataChannel.
// If non-null, the extra data pointer will be deleted when the object is destroyed.
Modified: trunk/Source/WebCore/ChangeLog (134206 => 134207)
--- trunk/Source/WebCore/ChangeLog 2012-11-12 12:21:44 UTC (rev 134206)
+++ trunk/Source/WebCore/ChangeLog 2012-11-12 12:24:50 UTC (rev 134207)
@@ -1,3 +1,30 @@
+2012-11-12 Tommy Widenflycht <[email protected]>
+
+ MediaStream API: Schedule the RTCDataChannel events to be triggered at idle state
+ https://bugs.webkit.org/show_bug.cgi?id=101751
+
+ Reviewed by Adam Barth.
+
+ This patch queues the events until the JS interpreter is in an idle state.
+
+ Existing tests cover this patch.
+
+ * Modules/mediastream/RTCDataChannel.cpp:
+ (WebCore::RTCDataChannel::RTCDataChannel):
+ (WebCore::RTCDataChannel::readyStateChanged):
+ (WebCore::RTCDataChannel::dataArrived):
+ (WebCore::RTCDataChannel::error):
+ (WebCore::RTCDataChannel::scheduleDispatchEvent):
+ (WebCore):
+ (WebCore::RTCDataChannel::scheduledEventTimerFired):
+ * Modules/mediastream/RTCDataChannel.h:
+ (RTCDataChannel):
+ * platform/chromium/support/WebRTCDataChannel.cpp:
+ (WebKit::WebRTCDataChannel::setBufferedAmount):
+ (WebKit::WebRTCDataChannel::readyStateChanged):
+ (WebKit::WebRTCDataChannel::dataArrived):
+ (WebKit::WebRTCDataChannel::error):
+
2012-11-12 Kunihiko Sakamoto <[email protected]>
Remove HTMLInputElement dependency from PickerIndicatorElement
Modified: trunk/Source/WebCore/Modules/mediastream/RTCDataChannel.cpp (134206 => 134207)
--- trunk/Source/WebCore/Modules/mediastream/RTCDataChannel.cpp 2012-11-12 12:21:44 UTC (rev 134206)
+++ trunk/Source/WebCore/Modules/mediastream/RTCDataChannel.cpp 2012-11-12 12:24:50 UTC (rev 134207)
@@ -63,6 +63,7 @@
, m_descriptor(descriptor)
, m_binaryType(BinaryTypeArrayBuffer)
, m_handler(handler)
+ , m_scheduledEventTimer(this, &RTCDataChannel::scheduledEventTimerFired)
{
m_descriptor->setClient(this);
}
@@ -186,10 +187,10 @@
switch (m_descriptor->readyState()) {
case RTCDataChannelDescriptor::ReadyStateOpen:
- dispatchEvent(Event::create(eventNames().openEvent, false, false));
+ scheduleDispatchEvent(Event::create(eventNames().openEvent, false, false));
break;
case RTCDataChannelDescriptor::ReadyStateClosed:
- dispatchEvent(Event::create(eventNames().closeEvent, false, false));
+ scheduleDispatchEvent(Event::create(eventNames().closeEvent, false, false));
break;
default:
break;
@@ -201,7 +202,7 @@
if (m_stopped)
return;
- dispatchEvent(MessageEvent::create(text));
+ scheduleDispatchEvent(MessageEvent::create(text));
}
void RTCDataChannel::dataArrived(const char* data, size_t dataLength)
@@ -215,7 +216,7 @@
}
if (m_binaryType == BinaryTypeArrayBuffer) {
RefPtr<ArrayBuffer> buffer = ArrayBuffer::create(data, dataLength);
- dispatchEvent(MessageEvent::create(buffer.release()));
+ scheduleDispatchEvent(MessageEvent::create(buffer.release()));
return;
}
ASSERT_NOT_REACHED();
@@ -226,7 +227,7 @@
if (m_stopped)
return;
- dispatchEvent(Event::create(eventNames().errorEvent, false, false));
+ scheduleDispatchEvent(Event::create(eventNames().errorEvent, false, false));
}
RTCDataChannelDescriptor* RTCDataChannel::descriptor()
@@ -262,6 +263,29 @@
return &m_eventTargetData;
}
+void RTCDataChannel::scheduleDispatchEvent(PassRefPtr<Event> event)
+{
+ m_scheduledEvents.append(event);
+
+ if (!m_scheduledEventTimer.isActive())
+ m_scheduledEventTimer.startOneShot(0);
+}
+
+void RTCDataChannel::scheduledEventTimerFired(Timer<RTCDataChannel>*)
+{
+ if (m_stopped)
+ return;
+
+ Vector<RefPtr<Event> > events;
+ events.swap(m_scheduledEvents);
+
+ Vector<RefPtr<Event> >::iterator it = events.begin();
+ for (; it != events.end(); ++it)
+ dispatchEvent((*it).release());
+
+ events.clear();
+}
+
} // namespace WebCore
#endif // ENABLE(MEDIA_STREAM)
Modified: trunk/Source/WebCore/Modules/mediastream/RTCDataChannel.h (134206 => 134207)
--- trunk/Source/WebCore/Modules/mediastream/RTCDataChannel.h 2012-11-12 12:21:44 UTC (rev 134206)
+++ trunk/Source/WebCore/Modules/mediastream/RTCDataChannel.h 2012-11-12 12:24:50 UTC (rev 134207)
@@ -30,6 +30,7 @@
#include "ActiveDOMObject.h"
#include "EventTarget.h"
#include "RTCDataChannelDescriptor.h"
+#include "Timer.h"
#include <wtf/RefCounted.h>
namespace WebCore {
@@ -78,6 +79,9 @@
private:
RTCDataChannel(ScriptExecutionContext*, RTCPeerConnectionHandler*, PassRefPtr<RTCDataChannelDescriptor>);
+ void scheduleDispatchEvent(PassRefPtr<Event>);
+ void scheduledEventTimerFired(Timer<RTCDataChannel>*);
+
// EventTarget
virtual EventTargetData* eventTargetData();
virtual EventTargetData* ensureEventTargetData();
@@ -103,6 +107,9 @@
// Not owned by this class.
RTCPeerConnectionHandler* m_handler;
+
+ Timer<RTCDataChannel> m_scheduledEventTimer;
+ Vector<RefPtr<Event> > m_scheduledEvents;
};
} // namespace WebCore
Modified: trunk/Source/WebCore/platform/chromium/support/WebRTCDataChannel.cpp (134206 => 134207)
--- trunk/Source/WebCore/platform/chromium/support/WebRTCDataChannel.cpp 2012-11-12 12:21:44 UTC (rev 134206)
+++ trunk/Source/WebCore/platform/chromium/support/WebRTCDataChannel.cpp 2012-11-12 12:24:50 UTC (rev 134207)
@@ -106,31 +106,31 @@
return m_private->reliable();
}
-void WebRTCDataChannel::setBufferedAmount(unsigned long bufferedAmount)
+void WebRTCDataChannel::setBufferedAmount(unsigned long bufferedAmount) const
{
ASSERT(!isNull());
m_private->setBufferedAmount(bufferedAmount);
}
-void WebRTCDataChannel::readyStateChanged(ReadyState state)
+void WebRTCDataChannel::readyStateChanged(ReadyState state) const
{
ASSERT(!isNull());
m_private->readyStateChanged(static_cast<RTCDataChannelDescriptor::ReadyState>(state));
}
-void WebRTCDataChannel::dataArrived(const WebString& data)
+void WebRTCDataChannel::dataArrived(const WebString& data) const
{
ASSERT(!isNull());
m_private->dataArrived(data);
}
-void WebRTCDataChannel::dataArrived(const char* data, size_t dataLength)
+void WebRTCDataChannel::dataArrived(const char* data, size_t dataLength) const
{
ASSERT(!isNull());
m_private->dataArrived(data, dataLength);
}
-void WebRTCDataChannel::error()
+void WebRTCDataChannel::error() const
{
ASSERT(!isNull());
m_private->error();
Modified: trunk/Tools/ChangeLog (134206 => 134207)
--- trunk/Tools/ChangeLog 2012-11-12 12:21:44 UTC (rev 134206)
+++ trunk/Tools/ChangeLog 2012-11-12 12:24:50 UTC (rev 134207)
@@ -1,3 +1,17 @@
+2012-11-12 Tommy Widenflycht <[email protected]>
+
+ MediaStream API: Schedule the RTCDataChannel events to be triggered at idle state
+ https://bugs.webkit.org/show_bug.cgi?id=101751
+
+ Reviewed by Adam Barth.
+
+ Makes the data channel mocks to be synchronous instead of asynchronous to be able to
+ properly test RTCDataChannel event handling.
+
+ * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
+ (MockWebRTCPeerConnectionHandler::sendStringData):
+ (MockWebRTCPeerConnectionHandler::sendRawData):
+
2012-11-12 Jochen Eisinger <[email protected]>
[chromium] move TestRunner implementation into WebTestRunner namespace
Modified: trunk/Tools/DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp (134206 => 134207)
--- trunk/Tools/DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp 2012-11-12 12:21:44 UTC (rev 134206)
+++ trunk/Tools/DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp 2012-11-12 12:24:50 UTC (rev 134207)
@@ -351,7 +351,7 @@
if (m_stopped)
return false;
- postTask(new StringDataTask(this, dataChannel, data));
+ dataChannel.dataArrived(data);
return true;
}
@@ -360,7 +360,7 @@
if (m_stopped)
return false;
- postTask(new CharPtrDataTask(this, dataChannel, data, length));
+ dataChannel.dataArrived(data, length);
return true;
}