Title: [92991] trunk/Source/WebCore
- Revision
- 92991
- Author
- [email protected]
- Date
- 2011-08-12 13:58:53 -0700 (Fri, 12 Aug 2011)
Log Message
Patch by Adam Bergkvist <[email protected]> on 2011-08-12
Reviewed by Alexey Proskuryakov.
EventSource loader should not buffer data
https://bugs.webkit.org/show_bug.cgi?id=61863
Disabled buffering in the EventSource loader.
Added a manual test.
* manual-tests/eventsource/eventsource-loader-buffering.html: Added.
* manual-tests/eventsource/eventsource-loader-buffering.php: Added.
* page/EventSource.cpp:
(WebCore::EventSource::connect):
Modified Paths
Added Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (92990 => 92991)
--- trunk/Source/WebCore/ChangeLog 2011-08-12 20:56:14 UTC (rev 92990)
+++ trunk/Source/WebCore/ChangeLog 2011-08-12 20:58:53 UTC (rev 92991)
@@ -1,3 +1,19 @@
+2011-08-12 Adam Bergkvist <[email protected]>
+
+ Reviewed by Alexey Proskuryakov.
+
+ EventSource loader should not buffer data
+ https://bugs.webkit.org/show_bug.cgi?id=61863
+
+ Disabled buffering in the EventSource loader.
+
+ Added a manual test.
+
+ * manual-tests/eventsource/eventsource-loader-buffering.html: Added.
+ * manual-tests/eventsource/eventsource-loader-buffering.php: Added.
+ * page/EventSource.cpp:
+ (WebCore::EventSource::connect):
+
2011-08-11 Pratik Solanki <[email protected]>
ResourceLoader::didReceiveDataArray() does not handle m_shouldBufferData correctly
Added: trunk/Source/WebCore/manual-tests/eventsource/eventsource-loader-buffering.html (0 => 92991)
--- trunk/Source/WebCore/manual-tests/eventsource/eventsource-loader-buffering.html (rev 0)
+++ trunk/Source/WebCore/manual-tests/eventsource/eventsource-loader-buffering.html 2011-08-12 20:58:53 UTC (rev 92991)
@@ -0,0 +1,54 @@
+<!doctype html>
+<html>
+<head>
+<title>EventSource Loader Buffering</title>
+<script>
+window._onload_ = function () {
+ setTimeout(test_es, 500);
+};
+
+function test_es() {
+ var len = 0;
+ var count = 0;
+ var step = 1000;
+ var es = new EventSource("eventsource-loader-buffering.php");
+ es._onopen_ = function () {
+ log("got 'open' event");
+ log("waiting for the first " + step + " 'message' events");
+ };
+ es._onmessage_ = function (evt) {
+ len += evt.data.length;
+ if (++count % step)
+ return;
+ log("got " + count + " 'message' events (" + len + " characters)", 1);
+ if (len >= 1e9)
+ end();
+ };
+ es._onerror_ = function () {
+ log("got 'error' event");
+ end();
+ };
+ function end() {
+ if (es.readyState != es.CLOSED)
+ es.close();
+ log("ENDED");
+ };
+}
+
+function log(message, updateLast) {
+ if (!log.list)
+ log.list = document.getElementById("log");
+ var text = document.createTextNode(message);
+ if (updateLast)
+ log.list.lastChild.replaceChild(text, log.list.lastChild.firstChild);
+ else
+ log.list.appendChild(document.createElement("li")).appendChild(text);
+}
+</script>
+</head>
+<body>
+<p>Manual test to verify that the EventSource loader does not buffer data (may result in memory growth with long lived connections). Monitor memory usage; it should be stable. This file has to be served from the same web server as the php script with the same name.</p>
+<ul id="log" style="list-style-type: none"></ul>
+</body>
+</html>
+
Added: trunk/Source/WebCore/manual-tests/eventsource/eventsource-loader-buffering.php (0 => 92991)
--- trunk/Source/WebCore/manual-tests/eventsource/eventsource-loader-buffering.php (rev 0)
+++ trunk/Source/WebCore/manual-tests/eventsource/eventsource-loader-buffering.php 2011-08-12 20:58:53 UTC (rev 92991)
@@ -0,0 +1,13 @@
+<?php
+header("Content-Type: text/event-stream");
+
+$data = ""
+for ($i = 0; $i < 1000; $i++)
+ $data .= "x";
+
+for ($i = 0; $i < 30000; $i++) {
+ echo "data: $data\n\n";
+ flush();
+ usleep(1000);
+}
+?>
Modified: trunk/Source/WebCore/page/EventSource.cpp (92990 => 92991)
--- trunk/Source/WebCore/page/EventSource.cpp 2011-08-12 20:56:14 UTC (rev 92990)
+++ trunk/Source/WebCore/page/EventSource.cpp 2011-08-12 20:58:53 UTC (rev 92991)
@@ -116,6 +116,7 @@
options.sendLoadCallbacks = true;
options.sniffContent = false;
options.allowCredentials = true;
+ options.shouldBufferData = false;
m_loader = ThreadableLoader::create(scriptExecutionContext(), this, request, options);
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes