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

Reply via email to