Title: [121912] trunk
- Revision
- 121912
- Author
- jap...@chromium.org
- Date
- 2012-07-05 10:19:13 -0700 (Thu, 05 Jul 2012)
Log Message
Source/WebCore: REGRESSION (r115654): Sometimes does not replace content for multipart/x-mixed-replace
https://bugs.webkit.org/show_bug.cgi?id=88436
Reviewed by Brady Eidson.
Test: http/tests/multipart/multipart-replace-non-html-content.php
* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::commitData): We should only send receivedFirstData() once per main resource load,
rather than multiple times in a multipart load.
(WebCore::DocumentLoader::setupForReplaceByMIMEType): m_gotFirstByte isn't set to true until data is
actually committed, and multipart data is often not committed until the part is finished. Check
whether the SharedBuffer is non-null instead.
* testing/js/WebCoreTestSupport.cpp:
(WebCoreTestSupport::resetInternalsObject): The JSInternals object my have already been cleared if the window shell
was cleared as part of creation of a new Document. Check it before using it.
LayoutTests: Test for https://bugs.webkit.org/show_bug.cgi?id=88436.
Reviewed by Brady Eidson.
* http/tests/multipart/multipart-replace-non-html-content-expected.txt: Added.
* http/tests/multipart/multipart-replace-non-html-content.php: Added.
Modified Paths
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (121911 => 121912)
--- trunk/LayoutTests/ChangeLog 2012-07-05 16:44:46 UTC (rev 121911)
+++ trunk/LayoutTests/ChangeLog 2012-07-05 17:19:13 UTC (rev 121912)
@@ -1,3 +1,12 @@
+2012-07-05 Nate Chapin <jap...@chromium.org>
+
+ Test for https://bugs.webkit.org/show_bug.cgi?id=88436.
+
+ Reviewed by Brady Eidson.
+
+ * http/tests/multipart/multipart-replace-non-html-content-expected.txt: Added.
+ * http/tests/multipart/multipart-replace-non-html-content.php: Added.
+
2012-07-05 Vincent Scheib <sch...@chromium.org>
[Chromium] Clear m_currentInputEvent after handled by pointerLockMouseEvent().
Added: trunk/LayoutTests/http/tests/multipart/multipart-replace-non-html-content-expected.txt (0 => 121912)
--- trunk/LayoutTests/http/tests/multipart/multipart-replace-non-html-content-expected.txt (rev 0)
+++ trunk/LayoutTests/http/tests/multipart/multipart-replace-non-html-content-expected.txt 2012-07-05 17:19:13 UTC (rev 121912)
@@ -0,0 +1,3 @@
+This text should only appear once 10
+
+
Added: trunk/LayoutTests/http/tests/multipart/multipart-replace-non-html-content.php (0 => 121912)
--- trunk/LayoutTests/http/tests/multipart/multipart-replace-non-html-content.php (rev 0)
+++ trunk/LayoutTests/http/tests/multipart/multipart-replace-non-html-content.php 2012-07-05 17:19:13 UTC (rev 121912)
@@ -0,0 +1,26 @@
+<?php
+header('Content-type: multipart/x-mixed-replace; boundary=boundary');
+header('Connection: keep-alive');
+echo "--boundary\r\n";
+echo "Content-Type: text/html\r\n\r\n";
+echo str_pad('', 5000);
+?>
+
+<script>
+if (window.layoutTestController)
+ layoutTestController.dumpAsText();
+</script>
+
+<?php
+for ($i = 0; $i <= 10; $i++) {
+ echo "--boundary\r\n";
+ echo "Content-Type: text/plain\r\n\r\n";
+ echo "This text should only appear once ";
+ echo $i;
+ echo str_pad('', 5000);
+ echo "\r\n\r\n";
+ flush();
+ usleep(100000);
+ $i++;
+}
+?>
Modified: trunk/Source/WebCore/ChangeLog (121911 => 121912)
--- trunk/Source/WebCore/ChangeLog 2012-07-05 16:44:46 UTC (rev 121911)
+++ trunk/Source/WebCore/ChangeLog 2012-07-05 17:19:13 UTC (rev 121912)
@@ -1,3 +1,22 @@
+2012-07-05 Nate Chapin <jap...@chromium.org>
+
+ REGRESSION (r115654): Sometimes does not replace content for multipart/x-mixed-replace
+ https://bugs.webkit.org/show_bug.cgi?id=88436
+
+ Reviewed by Brady Eidson.
+
+ Test: http/tests/multipart/multipart-replace-non-html-content.php
+
+ * loader/DocumentLoader.cpp:
+ (WebCore::DocumentLoader::commitData): We should only send receivedFirstData() once per main resource load,
+ rather than multiple times in a multipart load.
+ (WebCore::DocumentLoader::setupForReplaceByMIMEType): m_gotFirstByte isn't set to true until data is
+ actually committed, and multipart data is often not committed until the part is finished. Check
+ whether the SharedBuffer is non-null instead.
+ * testing/js/WebCoreTestSupport.cpp:
+ (WebCoreTestSupport::resetInternalsObject): The JSInternals object my have already been cleared if the window shell
+ was cleared as part of creation of a new Document. Check it before using it.
+
2012-07-05 Pavel Feldman <pfeld...@chromium.org>
Web Inspector: move search field to the bottom of the page.
Modified: trunk/Source/WebCore/loader/DocumentLoader.cpp (121911 => 121912)
--- trunk/Source/WebCore/loader/DocumentLoader.cpp 2012-07-05 16:44:46 UTC (rev 121911)
+++ trunk/Source/WebCore/loader/DocumentLoader.cpp 2012-07-05 17:19:13 UTC (rev 121912)
@@ -335,7 +335,8 @@
m_frame->document()->setBaseURLOverride(m_archive->mainResource()->url());
#endif
- frameLoader()->receivedFirstData();
+ if (!frameLoader()->isReplacing())
+ frameLoader()->receivedFirstData();
bool userChosen = true;
String encoding = overrideEncoding();
@@ -366,7 +367,7 @@
void DocumentLoader::setupForReplaceByMIMEType(const String& newMIMEType)
{
- if (!m_gotFirstByte)
+ if (!mainResourceData())
return;
String oldMIMEType = m_response.mimeType();
Modified: trunk/Source/WebCore/testing/js/WebCoreTestSupport.cpp (121911 => 121912)
--- trunk/Source/WebCore/testing/js/WebCoreTestSupport.cpp 2012-07-05 16:44:46 UTC (rev 121911)
+++ trunk/Source/WebCore/testing/js/WebCoreTestSupport.cpp 2012-07-05 17:19:13 UTC (rev 121912)
@@ -52,8 +52,10 @@
ExecState* exec = toJS(context);
JSLockHolder lock(exec);
JSDOMGlobalObject* globalObject = jsCast<JSDOMGlobalObject*>(exec->lexicalGlobalObject());
- Internals * internals = toInternals(globalObject->getDirect(exec->globalData(), Identifier(exec, Internals::internalsId)));
- if (internals) {
+ JSValue internalsJS = globalObject->getDirect(exec->globalData(), Identifier(exec, Internals::internalsId));
+ if (internalsJS.isNull() || internalsJS.isEmpty())
+ return;
+ if (Internals* internals = toInternals(internalsJS)) {
ScriptExecutionContext* scriptContext = globalObject->scriptExecutionContext();
if (scriptContext->isDocument())
internals->reset(static_cast<Document*>(scriptContext));
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes