summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjaphet@chromium.org <japhet@chromium.org>2014-10-29 22:37:24 +0000
committerjaphet@chromium.org <japhet@chromium.org>2014-10-29 22:37:24 +0000
commite495c9bdfa3ce128848418817025308a1f4b21db (patch)
treeeba695081fda4bb43147390667c7871a025063ea
parent14150d03adf77c8798424654c225a31b8e4e0eff (diff)
downloadchromium_src-e495c9bdfa3ce128848418817025308a1f4b21db.zip
chromium_src-e495c9bdfa3ce128848418817025308a1f4b21db.tar.gz
chromium_src-e495c9bdfa3ce128848418817025308a1f4b21db.tar.bz2
Reland "Prepare blink to unify definitions of load completion"
This reverts commit 963b3f017df5e3098f0ffe18fd6ea818a5589b6f. Currently, FrameLoader.cpp contains a function called isDocumentDoneLoading, which has a complicated set of rules to determine when to tell chromium that loading is complete. These rules only really exist for the sake of layout tests, which can't always just define load event completion as the end of the test. A set of rules have been added to the layout tests harness behind a build flag, so add a flagged version of load completion in blink that is strongly mapped to load event completion. Lots of tests need subtle changes. Most of these are forced layouts, waiting for RAF to complete, simple waitUntilDone/notifyDone pairs, and adding missing document.close() calls. BUG=426520 Review URL: https://codereview.chromium.org/678043002 git-svn-id: svn://svn.chromium.org/blink/trunk@184609 bbb929c8-8fbe-4397-9dbb-9b2b20218538
-rw-r--r--third_party/WebKit/LayoutTests/css3/masking/mask-repeat-space-border-expected.html10
-rw-r--r--third_party/WebKit/LayoutTests/css3/masking/mask-repeat-space-content-expected.html10
-rw-r--r--third_party/WebKit/LayoutTests/css3/masking/mask-repeat-space-content.html3
-rw-r--r--third_party/WebKit/LayoutTests/editing/execCommand/window-open-insert-list-crash.html3
-rw-r--r--third_party/WebKit/LayoutTests/editing/undo/crash-redo-with-iframes.html1
-rw-r--r--third_party/WebKit/LayoutTests/fast/dom/Document/document-close-nested-iframe-load.html6
-rw-r--r--third_party/WebKit/LayoutTests/fast/dom/HTMLHeadElement/head-link-style-href-check.html1
-rw-r--r--third_party/WebKit/LayoutTests/fast/dom/ImageDocument-image-deletion-expected.txt5
-rw-r--r--third_party/WebKit/LayoutTests/fast/dom/ImageDocument-image-deletion.html24
-rw-r--r--third_party/WebKit/LayoutTests/fast/dom/MutationObserver/document-write.html2
-rw-r--r--third_party/WebKit/LayoutTests/fast/dom/StyleSheet/css-insert-import-rule-to-shadow-stylesheets.html22
-rw-r--r--third_party/WebKit/LayoutTests/fast/dom/Window/window-open-no-multiple-windows-from-iframe.html4
-rw-r--r--third_party/WebKit/LayoutTests/fast/dom/css-cached-import-rule.html11
-rw-r--r--third_party/WebKit/LayoutTests/fast/dom/css-insert-import-rule.html6
-rw-r--r--third_party/WebKit/LayoutTests/fast/dom/shadow/adopt-node-with-shadow-root.html1
-rw-r--r--third_party/WebKit/LayoutTests/fast/dom/shadow/import-rule-in-shadow-tree-needs-document-style-recalc.html8
-rw-r--r--third_party/WebKit/LayoutTests/fast/dom/shadow/shadow-tree-listener-clearance.html1
-rw-r--r--third_party/WebKit/LayoutTests/fast/events/mouseenter-mouseleave-crash.html1
-rw-r--r--third_party/WebKit/LayoutTests/fast/events/popup-allowed-from-gesture-initiated-form-submit.html10
-rw-r--r--third_party/WebKit/LayoutTests/fast/events/scroll-event-handler-count.html2
-rw-r--r--third_party/WebKit/LayoutTests/fast/forms/button-in-forms-collection-expected.txt10
-rw-r--r--third_party/WebKit/LayoutTests/fast/forms/button-in-forms-collection.html15
-rw-r--r--third_party/WebKit/LayoutTests/fast/frames/document-write-in-iframe-onload-2.html2
-rw-r--r--third_party/WebKit/LayoutTests/fast/frames/document-write-in-iframe-onload-3.html2
-rw-r--r--third_party/WebKit/LayoutTests/fast/frames/frameset-dynamic-resize.html1
-rw-r--r--third_party/WebKit/LayoutTests/fast/frames/location-put-after-removal-expected.txt1
-rw-r--r--third_party/WebKit/LayoutTests/fast/html/imports/import-destroy-stress.html6
-rw-r--r--third_party/WebKit/LayoutTests/fast/loader/create-frame-in-DOMContentLoaded.html6
-rw-r--r--third_party/WebKit/LayoutTests/fast/loader/external-script-URL-location.html5
-rw-r--r--third_party/WebKit/LayoutTests/fast/loader/open-in-srcdoc-unload.html1
-rw-r--r--third_party/WebKit/LayoutTests/fast/loader/resources/document-destruction-within-unload-iframe.html1
-rw-r--r--third_party/WebKit/LayoutTests/fast/loader/resources/external-script-URL-location.js5
-rw-r--r--third_party/WebKit/LayoutTests/fast/loader/stateobjects/state-attribute-only-one-deserialization.html4
-rw-r--r--third_party/WebKit/LayoutTests/fast/loader/stateobjects/state-attribute-popstate-event.html4
-rw-r--r--third_party/WebKit/LayoutTests/fast/loader/subframe-removes-itself-expected.txt3
-rw-r--r--third_party/WebKit/LayoutTests/fast/parser/adoption-agency-crash-03.html2
-rw-r--r--third_party/WebKit/LayoutTests/fast/parser/document-close-nested-iframe-load.html6
-rw-r--r--third_party/WebKit/LayoutTests/fast/parser/document-open-in-unload-expected.txt2
-rw-r--r--third_party/WebKit/LayoutTests/fast/parser/document-open-in-unload.html2
-rw-r--r--third_party/WebKit/LayoutTests/fast/parser/document-write-ignores-later-network-bytes.html2
-rw-r--r--third_party/WebKit/LayoutTests/fast/parser/document-write-onload-nesting.html2
-rw-r--r--third_party/WebKit/LayoutTests/fast/parser/iframe-onload-document-close-with-external-script-2.html2
-rw-r--r--third_party/WebKit/LayoutTests/fast/parser/iframe-onload-document-close-with-external-script-3.html2
-rw-r--r--third_party/WebKit/LayoutTests/fast/parser/iframe-onload-document-close-with-external-script.html2
-rw-r--r--third_party/WebKit/LayoutTests/fast/text/webfont-synthetic-bold.html3
-rw-r--r--third_party/WebKit/LayoutTests/fast/tokenizer/resources/write-external-script-open.js2
-rw-r--r--third_party/WebKit/LayoutTests/fast/tokenizer/write-external-script-open.html5
-rw-r--r--third_party/WebKit/LayoutTests/http/tests/cache/cancel-multiple-post-xhrs-expected.txt3
-rw-r--r--third_party/WebKit/LayoutTests/http/tests/fouc/scroll-left-while-loading.html1
-rwxr-xr-xthird_party/WebKit/LayoutTests/http/tests/incremental/doc-write-before-end.pl2
-rw-r--r--third_party/WebKit/LayoutTests/http/tests/local/file-url-sent-as-referer.html1
-rw-r--r--third_party/WebKit/LayoutTests/http/tests/misc/stop-loading-on-resource-timing-buffer-full-crash-expected.txt3
-rw-r--r--third_party/WebKit/LayoutTests/http/tests/misc/stop-loading-on-resource-timing-buffer-full-crash.html14
-rw-r--r--third_party/WebKit/LayoutTests/http/tests/misc/window-dot-stop-expected.txt1
-rw-r--r--third_party/WebKit/LayoutTests/http/tests/multipart/invalid-image-data-standalone-expected.txt30
-rw-r--r--third_party/WebKit/LayoutTests/http/tests/multipart/invalid-image-data.html24
-rw-r--r--third_party/WebKit/LayoutTests/http/tests/navigation/go-back-to-error-page-expected.txt1
-rw-r--r--third_party/WebKit/LayoutTests/http/tests/navigation/go-back-to-error-page.html13
-rw-r--r--third_party/WebKit/LayoutTests/http/tests/navigation/lockedhistory-iframe.html2
-rw-r--r--third_party/WebKit/LayoutTests/http/tests/security/XFrameOptions/x-frame-options-deny-expected.txt1
-rw-r--r--third_party/WebKit/LayoutTests/http/tests/security/XFrameOptions/x-frame-options-multiple-headers-conflict-expected.txt1
-rw-r--r--third_party/WebKit/LayoutTests/http/tests/security/XFrameOptions/x-frame-options-multiple-headers-sameorigin-deny-expected.txt1
-rw-r--r--third_party/WebKit/LayoutTests/http/tests/security/XFrameOptions/x-frame-options-parent-same-origin-deny-expected.txt1
-rw-r--r--third_party/WebKit/LayoutTests/http/tests/security/cookies/base-about-blank.html1
-rw-r--r--third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-call.html2
-rw-r--r--third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-custom.html3
-rw-r--r--third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-frames.html3
-rw-r--r--third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-name-getter.html3
-rw-r--r--third_party/WebKit/LayoutTests/http/tests/security/xss-DENIED-xsl-document-expected.txt2
-rw-r--r--third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/html5-import-safe-expected.txt4
-rw-r--r--third_party/WebKit/LayoutTests/http/tests/svg/change-id-with-pending-resources.html1
-rw-r--r--third_party/WebKit/LayoutTests/http/tests/svg/tref-adoptNode-crash.html1
-rw-r--r--third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/navigation-should-abort-expected.txt2
-rw-r--r--third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/navigation-should-abort.html7
-rw-r--r--third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/reentrant-cancel-expected.txt2
-rw-r--r--third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/reentrant-cancel.html10
-rw-r--r--third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/resources/navigation-target.html4
-rw-r--r--third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/send-on-abort.html2
-rw-r--r--third_party/WebKit/LayoutTests/platform/linux/http/tests/multipart/invalid-image-data-expected.txt24
-rw-r--r--third_party/WebKit/LayoutTests/platform/win-xp/http/tests/multipart/invalid-image-data-expected.txt24
-rw-r--r--third_party/WebKit/LayoutTests/platform/win/http/tests/multipart/invalid-image-data-expected.txt24
-rw-r--r--third_party/WebKit/LayoutTests/security/block-test-expected.txt71
-rw-r--r--third_party/WebKit/LayoutTests/security/block-test-no-port-expected.txt1
-rw-r--r--third_party/WebKit/LayoutTests/svg/custom/bug79798.html1
-rw-r--r--third_party/WebKit/LayoutTests/svg/custom/draw-image-crash.html4
-rw-r--r--third_party/WebKit/LayoutTests/svg/custom/resources/linkingCircle-f.svg2
-rw-r--r--third_party/WebKit/LayoutTests/svg/dom/complex-svgView-specification.html10
-rw-r--r--third_party/WebKit/LayoutTests/svg/wicd/test-rightsizing-a.xhtml3
-rw-r--r--third_party/WebKit/LayoutTests/svg/wicd/test-rightsizing-b.xhtml9
-rw-r--r--third_party/WebKit/LayoutTests/svg/wicd/test-scalable-background-image1.xhtml10
-rw-r--r--third_party/WebKit/LayoutTests/svg/wicd/test-scalable-background-image2.xhtml10
-rw-r--r--third_party/WebKit/LayoutTests/webaudio/scriptprocessornode-rewrap.html10
-rw-r--r--third_party/WebKit/LayoutTests/webaudio/scriptprocessornode-upmix2-8channel-input.html9
-rw-r--r--third_party/WebKit/Source/bindings/core/v8/ScriptController.cpp4
-rw-r--r--third_party/WebKit/Source/core/dom/Document.cpp10
-rw-r--r--third_party/WebKit/Source/core/dom/Document.h1
-rw-r--r--third_party/WebKit/Source/core/dom/ProcessingInstruction.cpp2
-rw-r--r--third_party/WebKit/Source/core/fetch/Resource.cpp3
-rw-r--r--third_party/WebKit/Source/core/fetch/Resource.h3
-rw-r--r--third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp24
-rw-r--r--third_party/WebKit/Source/core/fetch/ResourceFetcher.h4
-rw-r--r--third_party/WebKit/Source/core/fetch/ResourceLoader.cpp21
-rw-r--r--third_party/WebKit/Source/core/fetch/ResourceLoader.h2
-rw-r--r--third_party/WebKit/Source/core/fetch/ResourceLoaderHost.h4
-rw-r--r--third_party/WebKit/Source/core/loader/FrameFetchContext.cpp1
-rw-r--r--third_party/WebKit/Source/core/loader/FrameLoader.cpp22
-rw-r--r--third_party/WebKit/Source/core/loader/NavigationScheduler.cpp2
-rw-r--r--third_party/WebKit/Source/web/tests/ActivityLoggerTest.cpp22
-rw-r--r--third_party/WebKit/Source/web/tests/WebFrameTest.cpp2
109 files changed, 387 insertions, 327 deletions
diff --git a/third_party/WebKit/LayoutTests/css3/masking/mask-repeat-space-border-expected.html b/third_party/WebKit/LayoutTests/css3/masking/mask-repeat-space-border-expected.html
index af706fc..5536b60 100644
--- a/third_party/WebKit/LayoutTests/css3/masking/mask-repeat-space-border-expected.html
+++ b/third_party/WebKit/LayoutTests/css3/masking/mask-repeat-space-border-expected.html
@@ -1,6 +1,7 @@
<!DOCTYPE html>
<html lang="en">
<head>
+ <script src="../../resources/run-after-display.js"></script>
<style>
#back {
width: 1000px;
@@ -46,6 +47,15 @@
<div id="back">
<div id="front" />
</div>
+ <script>
+ if (window.testRunner)
+ testRunner.waitUntilDone();
+
+ runAfterDisplay(function() {
+ if (window.testRunner)
+ testRunner.notifyDone();
+ });
+ </script>
</body>
</html>
diff --git a/third_party/WebKit/LayoutTests/css3/masking/mask-repeat-space-content-expected.html b/third_party/WebKit/LayoutTests/css3/masking/mask-repeat-space-content-expected.html
index 88de813..834c843 100644
--- a/third_party/WebKit/LayoutTests/css3/masking/mask-repeat-space-content-expected.html
+++ b/third_party/WebKit/LayoutTests/css3/masking/mask-repeat-space-content-expected.html
@@ -1,6 +1,7 @@
<!DOCTYPE html>
<html lang="en">
<head>
+ <script src="../../resources/run-after-display.js"></script>
<style>
#back {
width: 1000px;
@@ -46,6 +47,15 @@
<div id="back">
<div id="front" />
</div>
+ <script>
+ if (window.testRunner)
+ testRunner.waitUntilDone();
+
+ runAfterDisplay(function() {
+ if (window.testRunner)
+ testRunner.notifyDone();
+ });
+ </script>
</body>
</html>
diff --git a/third_party/WebKit/LayoutTests/css3/masking/mask-repeat-space-content.html b/third_party/WebKit/LayoutTests/css3/masking/mask-repeat-space-content.html
index e4bab68..a566643 100644
--- a/third_party/WebKit/LayoutTests/css3/masking/mask-repeat-space-content.html
+++ b/third_party/WebKit/LayoutTests/css3/masking/mask-repeat-space-content.html
@@ -27,6 +27,9 @@
<div id="back">
<div id="front" />
</div>
+ <script>
+ document.body.offsetLeft;
+ </script>
</body>
</html>
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/window-open-insert-list-crash.html b/third_party/WebKit/LayoutTests/editing/execCommand/window-open-insert-list-crash.html
index c51bb88..10c7116 100644
--- a/third_party/WebKit/LayoutTests/editing/execCommand/window-open-insert-list-crash.html
+++ b/third_party/WebKit/LayoutTests/editing/execCommand/window-open-insert-list-crash.html
@@ -18,8 +18,11 @@ document.body.appendChild(iframe);
function didReceiveMessage(event)
{
+ if (iframe === null)
+ return;
shouldBeEqualToString('event.data', 'FINISH');
document.body.removeChild(iframe);
+ iframe = null;
testPassed('Did not crash.');
window.finishJSTest();
}
diff --git a/third_party/WebKit/LayoutTests/editing/undo/crash-redo-with-iframes.html b/third_party/WebKit/LayoutTests/editing/undo/crash-redo-with-iframes.html
index ab6f7fd..52478ff 100644
--- a/third_party/WebKit/LayoutTests/editing/undo/crash-redo-with-iframes.html
+++ b/third_party/WebKit/LayoutTests/editing/undo/crash-redo-with-iframes.html
@@ -27,6 +27,7 @@ sample.appendChild(iframe3);
document.execCommand('SelectAll');
document.execCommand('CreateLink', false, 'foobar');
iframe1.contentWindow.document.write('0123456789');
+iframe1.contentWindow.document.close();
document.execCommand('Undo');
var iframe4 = document.createElement('iframe');
diff --git a/third_party/WebKit/LayoutTests/fast/dom/Document/document-close-nested-iframe-load.html b/third_party/WebKit/LayoutTests/fast/dom/Document/document-close-nested-iframe-load.html
index 7fa2bfc..5fe1e91 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/Document/document-close-nested-iframe-load.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/Document/document-close-nested-iframe-load.html
@@ -1,6 +1,8 @@
<script>
-if (window.testRunner)
+if (window.testRunner) {
testRunner.dumpAsText();
+ testRunner.waitUntilDone();
+}
</script>
FAIL
-<iframe onload="document.open(); document.close(); document.write('<iframe onload=document.open();document.close();document.write(/PASS/); >')"></iframe>
+<iframe onload="document.open(); document.close(); document.write('<iframe onload=\'document.open();document.close();document.write(/PASS/); document.close(); if(window.testRunner) testRunner.notifyDone();\' >')"></iframe>
diff --git a/third_party/WebKit/LayoutTests/fast/dom/HTMLHeadElement/head-link-style-href-check.html b/third_party/WebKit/LayoutTests/fast/dom/HTMLHeadElement/head-link-style-href-check.html
index 0a8c69e..290c101 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/HTMLHeadElement/head-link-style-href-check.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/HTMLHeadElement/head-link-style-href-check.html
@@ -22,6 +22,7 @@ function createAndAppend() {
oElm.style.height = '100px';
document.body.appendChild(oElm);
+ document.body.offsetLeft;
var oLink = document.createElement('link');
diff --git a/third_party/WebKit/LayoutTests/fast/dom/ImageDocument-image-deletion-expected.txt b/third_party/WebKit/LayoutTests/fast/dom/ImageDocument-image-deletion-expected.txt
deleted file mode 100644
index 969daa9..0000000
--- a/third_party/WebKit/LayoutTests/fast/dom/ImageDocument-image-deletion-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-Test for http://bugs.webkit.org/show_bug.cgi?id=16097 Safari crashes during load of LexisNexis search results.
-
-Testing that destroying the image element in a standalone image document does not lead to a crash.
-
-
diff --git a/third_party/WebKit/LayoutTests/fast/dom/ImageDocument-image-deletion.html b/third_party/WebKit/LayoutTests/fast/dom/ImageDocument-image-deletion.html
deleted file mode 100644
index e27c43a..0000000
--- a/third_party/WebKit/LayoutTests/fast/dom/ImageDocument-image-deletion.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<head>
- <script>
- if (window.testRunner)
- testRunner.dumpAsText();
-
- function test()
- {
- var f = document.getElementById("frame");
- f.contentDocument.open();
- f.contentDocument.close();
- }
- </script>
-</head>
-<body onload="test()">
- <p>
- Test for <i><a href="http://bugs.webkit.org/show_bug.cgi?id=16097">http://bugs.webkit.org/show_bug.cgi?id=16097</a>
- Safari crashes during load of LexisNexis search results</i>.
- </p>
- <p>
- Testing that destroying the image element in a standalone image
- document does not lead to a crash.
- </p>
- <iframe src="resources/apple.gif" id="frame"></iframe>
-</body>
diff --git a/third_party/WebKit/LayoutTests/fast/dom/MutationObserver/document-write.html b/third_party/WebKit/LayoutTests/fast/dom/MutationObserver/document-write.html
index b3741db..21cfde3 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/MutationObserver/document-write.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/MutationObserver/document-write.html
@@ -49,5 +49,5 @@ function finish() {
finish();
</script>
-<iframe onload="mutate(); check(); document.write('<script>check();</script>'); check(); finish();">
+<iframe onload="mutate(); check(); document.write('<script>check();</script>'); document.close(); check(); finish();">
</body>
diff --git a/third_party/WebKit/LayoutTests/fast/dom/StyleSheet/css-insert-import-rule-to-shadow-stylesheets.html b/third_party/WebKit/LayoutTests/fast/dom/StyleSheet/css-insert-import-rule-to-shadow-stylesheets.html
index 8f36cf2..63cfdb1 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/StyleSheet/css-insert-import-rule-to-shadow-stylesheets.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/StyleSheet/css-insert-import-rule-to-shadow-stylesheets.html
@@ -1,27 +1,25 @@
<!doctype html>
<html>
-<head>
+<body onload="runTest()";>
+<div id='sandbox'></div>
<script>
if (window.testRunner)
testRunner.waitUntilDone();
-function runTest() {
- var sandbox = document.getElementById('sandbox');
- var host = document.createElement('p');
- var shadowRoot = host.createShadowRoot();
- shadowRoot.innerHTML = '<style>div { width: 100px; height: 100px; }</style><div></div>';
- sandbox.appendChild(host);
- document.body.offsetLeft;
- shadowRoot.styleSheets[0].insertRule('@import url(../resources/css-insert-import-rule.css);', 0);
+var sandbox = document.getElementById('sandbox');
+var host = document.createElement('p');
+var shadowRoot = host.createShadowRoot();
+shadowRoot.innerHTML = '<style>div { width: 100px; height: 100px; }</style><div></div>';
+sandbox.appendChild(host);
+document.body.offsetLeft;
+shadowRoot.styleSheets[0].insertRule('@import url(../resources/css-insert-import-rule.css);', 0);
+function runTest() {
setTimeout(function(){
if (window.testRunner)
testRunner.notifyDone();
}, 0);
}
</script>
-</head>
-<body onload="runTest()";>
-<div id='sandbox'></div>
</body>
</html>
diff --git a/third_party/WebKit/LayoutTests/fast/dom/Window/window-open-no-multiple-windows-from-iframe.html b/third_party/WebKit/LayoutTests/fast/dom/Window/window-open-no-multiple-windows-from-iframe.html
index ed24c2d..f63facf 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/Window/window-open-no-multiple-windows-from-iframe.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/Window/window-open-no-multiple-windows-from-iframe.html
@@ -12,8 +12,10 @@ if (window.testRunner) {
function opened(result) {
// Called by the embedded iframe.
- if (result == window)
+ if (result == window) {
document.writeln("PASS");
+ document.close();
+ }
if (window.testRunner)
testRunner.notifyDone();
diff --git a/third_party/WebKit/LayoutTests/fast/dom/css-cached-import-rule.html b/third_party/WebKit/LayoutTests/fast/dom/css-cached-import-rule.html
index ea9e683..a9256ec 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/css-cached-import-rule.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/css-cached-import-rule.html
@@ -8,13 +8,14 @@ div {
</style>
<script>
+document.styleSheets[0].insertRule('@import url("resources/css-insert-import-rule.css");', 0);
+if (window.testRunner)
+ testRunner.waitUntilDone();
+
function test() {
- document.styleSheets[0].insertRule('@import url("resources/css-insert-import-rule.css");', 0);
- if (location.href.indexOf("?") == -1) {
- if (window.testRunner)
- testRunner.waitUntilDone();
+ if (location.href.indexOf("?") == -1)
location.href = location.href + "?";
- } else if (window.testRunner)
+ else if (window.testRunner)
testRunner.notifyDone();
}
</script>
diff --git a/third_party/WebKit/LayoutTests/fast/dom/css-insert-import-rule.html b/third_party/WebKit/LayoutTests/fast/dom/css-insert-import-rule.html
index cf99a5c..b0b15b0 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/css-insert-import-rule.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/css-insert-import-rule.html
@@ -8,12 +8,10 @@ div {
</style>
<script>
-function test() {
- document.styleSheets[0].insertRule('@import url("resources/css-insert-import-rule.css");', 0);
-}
+document.styleSheets[0].insertRule('@import url("resources/css-insert-import-rule.css");', 0);
</script>
</head>
-<body onload="test()";>
+<body>
<div></div>
</body>
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/adopt-node-with-shadow-root.html b/third_party/WebKit/LayoutTests/fast/dom/shadow/adopt-node-with-shadow-root.html
index ca57b93..5e2646f 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/shadow/adopt-node-with-shadow-root.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/adopt-node-with-shadow-root.html
@@ -11,7 +11,6 @@ function test() {
var foreignDocument = document.getElementById('root').contentDocument;
shadow = foreignDocument.getElementById('s').createShadowRoot();
shouldThrow("document.adoptNode(shadow)");
- location.reload();
}
</script>
</body>
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/import-rule-in-shadow-tree-needs-document-style-recalc.html b/third_party/WebKit/LayoutTests/fast/dom/shadow/import-rule-in-shadow-tree-needs-document-style-recalc.html
index 71a3d9a..94e2125 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/shadow/import-rule-in-shadow-tree-needs-document-style-recalc.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/import-rule-in-shadow-tree-needs-document-style-recalc.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<script src="../../../resources/run-after-display.js"></script>
<script>
onload = function() {
var host = document.getElementById('host');
@@ -25,6 +26,13 @@ onload = function() {
// Instead, use internals.updateStyleAndReturnAffectedElementCount
// (to emulate @import's network delay).
internals.updateStyleAndReturnAffectedElementCount();
+
+ if (window.testRunner)
+ testRunner.waitUntilDone();
+ runAfterDisplay(function() {
+ if (window.testRunner)
+ testRunner.notifyDone();
+ });
}
</script>
<div id="host"></div>
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/shadow-tree-listener-clearance.html b/third_party/WebKit/LayoutTests/fast/dom/shadow/shadow-tree-listener-clearance.html
index 5ce5cb8..e37db5b 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/shadow/shadow-tree-listener-clearance.html
+++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/shadow-tree-listener-clearance.html
@@ -24,6 +24,7 @@ function test()
window.child.contentDocument.open(); // This should clear event listeners
toBeListened.dispatchEvent(new CustomEvent("test"));
shouldBe("firedCount", "1");
+ window.child.contentDocument.close();
finishJSTest();
}
diff --git a/third_party/WebKit/LayoutTests/fast/events/mouseenter-mouseleave-crash.html b/third_party/WebKit/LayoutTests/fast/events/mouseenter-mouseleave-crash.html
index 4836cf1..84171a8 100644
--- a/third_party/WebKit/LayoutTests/fast/events/mouseenter-mouseleave-crash.html
+++ b/third_party/WebKit/LayoutTests/fast/events/mouseenter-mouseleave-crash.html
@@ -8,6 +8,7 @@
document.addEventListener('DOMContentLoaded', function () {
document.querySelector('#inner3').addEventListener('mouseenter', function () {
document.write("Please don't crash under ASAN.");
+ document.close();
});
if (window.testRunner) {
diff --git a/third_party/WebKit/LayoutTests/fast/events/popup-allowed-from-gesture-initiated-form-submit.html b/third_party/WebKit/LayoutTests/fast/events/popup-allowed-from-gesture-initiated-form-submit.html
index 3f3844a..bb1a807 100644
--- a/third_party/WebKit/LayoutTests/fast/events/popup-allowed-from-gesture-initiated-form-submit.html
+++ b/third_party/WebKit/LayoutTests/fast/events/popup-allowed-from-gesture-initiated-form-submit.html
@@ -14,10 +14,12 @@
var button = document.getElementById("button");
- if (window.eventSender) {
- eventSender.mouseMoveTo(button.offsetLeft + button.offsetWidth / 2, button.offsetTop + button.offsetHeight / 2);
- eventSender.mouseDown();
- eventSender.mouseUp();
+ window.onload = function() {
+ if (window.eventSender) {
+ eventSender.mouseMoveTo(button.offsetLeft + button.offsetWidth / 2, button.offsetTop + button.offsetHeight / 2);
+ eventSender.mouseDown();
+ eventSender.mouseUp();
+ }
}
}
</script>
diff --git a/third_party/WebKit/LayoutTests/fast/events/scroll-event-handler-count.html b/third_party/WebKit/LayoutTests/fast/events/scroll-event-handler-count.html
index afaba7b..f17219a 100644
--- a/third_party/WebKit/LayoutTests/fast/events/scroll-event-handler-count.html
+++ b/third_party/WebKit/LayoutTests/fast/events/scroll-event-handler-count.html
@@ -123,6 +123,7 @@ debug('Test moving event listeners from an attached document to an unattached on
nestedDocument.open('text/html', 'replace');
nestedDocument.write('<!DOCTYPE html>\n<script>\ndocument.onscroll=function(){};\n' +
'window.onscroll=function(){};</' + 'script>\n');
+ nestedDocument.close();
shouldBe('window.internals.scrollEventHandlerCount(document)', '3');
@@ -138,6 +139,7 @@ debug('Test moving a scroll event listener between documents belonging to the sa
var nestedDocument = iframe.contentWindow.document;
nestedDocument.open('text/html', 'replace');
nestedDocument.write('<!DOCTYPE html><div id=foo></div>');
+ nestedDocument.close();
var element = frames[0].document.getElementById('foo');
var listener = function() { }
diff --git a/third_party/WebKit/LayoutTests/fast/forms/button-in-forms-collection-expected.txt b/third_party/WebKit/LayoutTests/fast/forms/button-in-forms-collection-expected.txt
index 4664751..860aa37 100644
--- a/third_party/WebKit/LayoutTests/fast/forms/button-in-forms-collection-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/forms/button-in-forms-collection-expected.txt
@@ -1,3 +1,13 @@
+PASS document.test.elements.length is 2
+PASS document.test.elements[0].name is "foo"
+PASS document.test.elements[1].name is "bla"
+PASS document.test.foo.value is "Button1"
+PASS document.test.bla.value is "Button2"
PASS successfullyParsed is true
TEST COMPLETE
+The following tests for regression against 4405: <button> not listed in form collections. You should see a series of lines starting with PASS.
+
+ Button2
+
+
diff --git a/third_party/WebKit/LayoutTests/fast/forms/button-in-forms-collection.html b/third_party/WebKit/LayoutTests/fast/forms/button-in-forms-collection.html
index 37f8f76f..0bccbcc 100644
--- a/third_party/WebKit/LayoutTests/fast/forms/button-in-forms-collection.html
+++ b/third_party/WebKit/LayoutTests/fast/forms/button-in-forms-collection.html
@@ -5,21 +5,6 @@
<script>
if (window.testRunner)
testRunner.dumpAsText();
-
-function testPassed(msg)
-{
- document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
-}
-
-function testFailed(msg)
-{
- document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
-}
-
-function debug(a)
-{
- document.write("<p> " + a + "</p>");
-}
</script>
</head>
diff --git a/third_party/WebKit/LayoutTests/fast/frames/document-write-in-iframe-onload-2.html b/third_party/WebKit/LayoutTests/fast/frames/document-write-in-iframe-onload-2.html
index 0424a6a..3cbe7c0 100644
--- a/third_party/WebKit/LayoutTests/fast/frames/document-write-in-iframe-onload-2.html
+++ b/third_party/WebKit/LayoutTests/fast/frames/document-write-in-iframe-onload-2.html
@@ -3,4 +3,4 @@ if (window.testRunner)
testRunner.dumpAsText();
</script>
FAIL
-<iframe onload="document.close(); document.write('<p>PASS (1 of 2)<p>PASS (2 of 2)');"></iframe>
+<iframe onload="document.close(); document.write('<p>PASS (1 of 2)<p>PASS (2 of 2)'); document.close();"></iframe>
diff --git a/third_party/WebKit/LayoutTests/fast/frames/document-write-in-iframe-onload-3.html b/third_party/WebKit/LayoutTests/fast/frames/document-write-in-iframe-onload-3.html
index b37961e..c01cd96 100644
--- a/third_party/WebKit/LayoutTests/fast/frames/document-write-in-iframe-onload-3.html
+++ b/third_party/WebKit/LayoutTests/fast/frames/document-write-in-iframe-onload-3.html
@@ -3,4 +3,4 @@ if (window.testRunner)
testRunner.dumpAsText();
</script>
FAIL
-<iframe onload="document.write('<p>PASS (1 of 2)<p>PASS (2 of 2)');"></iframe>
+<iframe onload="document.write('<p>PASS (1 of 2)<p>PASS (2 of 2)'); document.close();"></iframe>
diff --git a/third_party/WebKit/LayoutTests/fast/frames/frameset-dynamic-resize.html b/third_party/WebKit/LayoutTests/fast/frames/frameset-dynamic-resize.html
index 704ba95..db6b27f 100644
--- a/third_party/WebKit/LayoutTests/fast/frames/frameset-dynamic-resize.html
+++ b/third_party/WebKit/LayoutTests/fast/frames/frameset-dynamic-resize.html
@@ -22,6 +22,7 @@ function runTest() {
else
document.write("FAIL, height should be 100, is: " + height);
+ document.close();
if (window.testRunner)
testRunner.notifyDone();
}
diff --git a/third_party/WebKit/LayoutTests/fast/frames/location-put-after-removal-expected.txt b/third_party/WebKit/LayoutTests/fast/frames/location-put-after-removal-expected.txt
index aee6f7e..e0c6fec 100644
--- a/third_party/WebKit/LayoutTests/fast/frames/location-put-after-removal-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/frames/location-put-after-removal-expected.txt
@@ -2,5 +2,4 @@ This page tests for a crash when assigning to the location property of a window
If the test passes, you'll see a PASS message below.
-
PASS: You didn't crash.
diff --git a/third_party/WebKit/LayoutTests/fast/html/imports/import-destroy-stress.html b/third_party/WebKit/LayoutTests/fast/html/imports/import-destroy-stress.html
index 9334c1e..29ef98a 100644
--- a/third_party/WebKit/LayoutTests/fast/html/imports/import-destroy-stress.html
+++ b/third_party/WebKit/LayoutTests/fast/html/imports/import-destroy-stress.html
@@ -10,8 +10,8 @@ var count = parseInt(window.localStorage['count'] || '0');
if (iteration < count) {
debug('PASS unless crash')
finishJSTest();
+} else {
+ window.localStorage['count'] = (count + 1).toString();
+ window.location.reload();
}
-
-window.localStorage['count'] = (count + 1).toString();
-window.location.reload();
</script>
diff --git a/third_party/WebKit/LayoutTests/fast/loader/create-frame-in-DOMContentLoaded.html b/third_party/WebKit/LayoutTests/fast/loader/create-frame-in-DOMContentLoaded.html
index 2e3d2a1..8aa074c 100644
--- a/third_party/WebKit/LayoutTests/fast/loader/create-frame-in-DOMContentLoaded.html
+++ b/third_party/WebKit/LayoutTests/fast/loader/create-frame-in-DOMContentLoaded.html
@@ -14,6 +14,8 @@ function handleDOMContentLoadedEvent()
frame = document.createElement("iframe");
document.body.appendChild(frame);
print("B) Exiting DOMContentLoaded event handler function.");
+ if (window.testRunner)
+ testRunner.notifyDone();
}
function handleLoadEvent()
{
@@ -22,8 +24,10 @@ function handleLoadEvent()
print("D) Exiting load event handler function.");
print("Test passed if messages A, B, C, D were all in order and there was no crash.");
}
-if (window.testRunner)
+if (window.testRunner) {
testRunner.dumpAsText();
+ testRunner.waitUntilDone();
+}
addEventListener("load", handleLoadEvent);
addEventListener("DOMContentLoaded", handleDOMContentLoadedEvent);
</script>
diff --git a/third_party/WebKit/LayoutTests/fast/loader/external-script-URL-location.html b/third_party/WebKit/LayoutTests/fast/loader/external-script-URL-location.html
index 0074557..b8d430b 100644
--- a/third_party/WebKit/LayoutTests/fast/loader/external-script-URL-location.html
+++ b/third_party/WebKit/LayoutTests/fast/loader/external-script-URL-location.html
@@ -1,8 +1,11 @@
<body onload="test()">
FAILURE
<script>
-if (window.testRunner)
+if (window.testRunner) {
testRunner.dumpAsText();
+ testRunner.waitUntilDone();
+}
+
function test()
{
document.write("<br>Test 1<br>File in URL: " + leafName(document.URL) + "<br><script src='resources/external-script-URL-location.js'></scr" + "ipt>");
diff --git a/third_party/WebKit/LayoutTests/fast/loader/open-in-srcdoc-unload.html b/third_party/WebKit/LayoutTests/fast/loader/open-in-srcdoc-unload.html
index 31a7582..8cf792e 100644
--- a/third_party/WebKit/LayoutTests/fast/loader/open-in-srcdoc-unload.html
+++ b/third_party/WebKit/LayoutTests/fast/loader/open-in-srcdoc-unload.html
@@ -5,5 +5,6 @@ if (window.testRunner)
frames[0].onunload = function () {
document.open();
+ document.close();
};
</script>
diff --git a/third_party/WebKit/LayoutTests/fast/loader/resources/document-destruction-within-unload-iframe.html b/third_party/WebKit/LayoutTests/fast/loader/resources/document-destruction-within-unload-iframe.html
index ffa2fc6..b3378f2 100644
--- a/third_party/WebKit/LayoutTests/fast/loader/resources/document-destruction-within-unload-iframe.html
+++ b/third_party/WebKit/LayoutTests/fast/loader/resources/document-destruction-within-unload-iframe.html
@@ -10,6 +10,7 @@ function runTest() {
function clearUs() {
document.write();
parent.done();
+ document.close();
}
</script>
<object data="does_not_exist"></object>
diff --git a/third_party/WebKit/LayoutTests/fast/loader/resources/external-script-URL-location.js b/third_party/WebKit/LayoutTests/fast/loader/resources/external-script-URL-location.js
index d95f4a2..13892e8 100644
--- a/third_party/WebKit/LayoutTests/fast/loader/resources/external-script-URL-location.js
+++ b/third_party/WebKit/LayoutTests/fast/loader/resources/external-script-URL-location.js
@@ -1,9 +1,12 @@
document.open();
document.write("<br>Test 2<br>File in URL: " + leafName(document.URL) + "<br>");
+if (window.testRunner)
+ testRunner.notifyDone();
+
function leafName(url) {
var tokens = new Array();
tokens = url.split('/');
var len = tokens.length;
return tokens[len-1];
-} \ No newline at end of file
+}
diff --git a/third_party/WebKit/LayoutTests/fast/loader/stateobjects/state-attribute-only-one-deserialization.html b/third_party/WebKit/LayoutTests/fast/loader/stateobjects/state-attribute-only-one-deserialization.html
index 0317c52..b987737 100644
--- a/third_party/WebKit/LayoutTests/fast/loader/stateobjects/state-attribute-only-one-deserialization.html
+++ b/third_party/WebKit/LayoutTests/fast/loader/stateobjects/state-attribute-only-one-deserialization.html
@@ -52,7 +52,9 @@
// Now let's go back to our original history entry which has a state object that we've stored a reference to already.
// This will fire our popstate event handler above.
- history.back();
+ window.onload = function() {
+ history.back();
+ };
</script>
</body>
</html>
diff --git a/third_party/WebKit/LayoutTests/fast/loader/stateobjects/state-attribute-popstate-event.html b/third_party/WebKit/LayoutTests/fast/loader/stateobjects/state-attribute-popstate-event.html
index d3652f1..eb88105 100644
--- a/third_party/WebKit/LayoutTests/fast/loader/stateobjects/state-attribute-popstate-event.html
+++ b/third_party/WebKit/LayoutTests/fast/loader/stateobjects/state-attribute-popstate-event.html
@@ -36,7 +36,9 @@
}
debug("Go back");
- history.back();
+ window.onload = function() {
+ history.back();
+ };
</script>
</body>
</html>
diff --git a/third_party/WebKit/LayoutTests/fast/loader/subframe-removes-itself-expected.txt b/third_party/WebKit/LayoutTests/fast/loader/subframe-removes-itself-expected.txt
index fbe7339..054f1a9 100644
--- a/third_party/WebKit/LayoutTests/fast/loader/subframe-removes-itself-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/loader/subframe-removes-itself-expected.txt
@@ -3,5 +3,6 @@ main frame - didFinishDocumentLoadForFrame
frame "<!--framePath //<!--frame0-->-->" - didCommitLoadForFrame
frame "<!--framePath //<!--frame0-->-->" - didFinishDocumentLoadForFrame
frame "<!--framePath //<!--frame0-->-->" - didFailLoadWithError
+main frame - didHandleOnloadEventsForFrame
main frame - didFinishLoadForFrame
-This tests a subframe that removes itself to make sure a delegate message to indicate the interrupted load fires.
+This tests a subframe that removes itself to make sure a delegate message to indicate the interrupted load fires.
diff --git a/third_party/WebKit/LayoutTests/fast/parser/adoption-agency-crash-03.html b/third_party/WebKit/LayoutTests/fast/parser/adoption-agency-crash-03.html
index 17cb7a3..0596633 100644
--- a/third_party/WebKit/LayoutTests/fast/parser/adoption-agency-crash-03.html
+++ b/third_party/WebKit/LayoutTests/fast/parser/adoption-agency-crash-03.html
@@ -2,4 +2,4 @@
if (window.testRunner)
testRunner.dumpAsText();
</script>
-<iframe onload="document.write('<a><blockquote>PASS 2 of 2<iframe onload=&quot;document.write(\'<a>\')&quot;></iframe><script>document.body.innerHTML = \'PASS 1 of 2\';</script>');">
+<iframe onload="document.write('<a><blockquote>PASS 2 of 2<iframe onload=&quot;document.write(\'<a>\'); document.close()&quot;></iframe><script>document.body.innerHTML = \'PASS 1 of 2\';</script>');">
diff --git a/third_party/WebKit/LayoutTests/fast/parser/document-close-nested-iframe-load.html b/third_party/WebKit/LayoutTests/fast/parser/document-close-nested-iframe-load.html
index 7fa2bfc..5d61016 100644
--- a/third_party/WebKit/LayoutTests/fast/parser/document-close-nested-iframe-load.html
+++ b/third_party/WebKit/LayoutTests/fast/parser/document-close-nested-iframe-load.html
@@ -1,6 +1,8 @@
<script>
-if (window.testRunner)
+if (window.testRunner) {
testRunner.dumpAsText();
+ testRunner.waitUntilDone();
+}
</script>
FAIL
-<iframe onload="document.open(); document.close(); document.write('<iframe onload=document.open();document.close();document.write(/PASS/); >')"></iframe>
+<iframe onload="document.open(); document.close(); document.write('<iframe onload=\'document.open();document.close();document.write(/PASS/); document.close(); if (window.testRunner) testRunner.notifyDone();\'>')"></iframe>
diff --git a/third_party/WebKit/LayoutTests/fast/parser/document-open-in-unload-expected.txt b/third_party/WebKit/LayoutTests/fast/parser/document-open-in-unload-expected.txt
index 23b2b46..7ef22e9 100644
--- a/third_party/WebKit/LayoutTests/fast/parser/document-open-in-unload-expected.txt
+++ b/third_party/WebKit/LayoutTests/fast/parser/document-open-in-unload-expected.txt
@@ -1 +1 @@
-This test passes if it doesn't crash.
+PASS
diff --git a/third_party/WebKit/LayoutTests/fast/parser/document-open-in-unload.html b/third_party/WebKit/LayoutTests/fast/parser/document-open-in-unload.html
index 471f163..077175f 100644
--- a/third_party/WebKit/LayoutTests/fast/parser/document-open-in-unload.html
+++ b/third_party/WebKit/LayoutTests/fast/parser/document-open-in-unload.html
@@ -6,5 +6,7 @@ if (window.testRunner)
frames[0].onunload = function () {
document.open();
+ document.write("PASS");
+ document.close();
};
</script>
diff --git a/third_party/WebKit/LayoutTests/fast/parser/document-write-ignores-later-network-bytes.html b/third_party/WebKit/LayoutTests/fast/parser/document-write-ignores-later-network-bytes.html
index a3defe1..30b4ca8 100644
--- a/third_party/WebKit/LayoutTests/fast/parser/document-write-ignores-later-network-bytes.html
+++ b/third_party/WebKit/LayoutTests/fast/parser/document-write-ignores-later-network-bytes.html
@@ -3,5 +3,5 @@
</script>
(This test generated a packet boundary by spamming a bunch of garbage characters. The exact number of garbage characters needed depends on your network stack. Note: The YZZZZ below should mark the beginning of a packet boundary.)
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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"/>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-<iframe onload="document.close(); document.write('<p>PASS');"></iframe>
+<iframe onload="document.close(); document.write('<p>PASS'); document.close();"></iframe>
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYZZZZZZZZZZZZZZZZZZZZZZZZZZ If this text appears, the test has FAILED!!!
diff --git a/third_party/WebKit/LayoutTests/fast/parser/document-write-onload-nesting.html b/third_party/WebKit/LayoutTests/fast/parser/document-write-onload-nesting.html
index 1091f8f..3b55780 100644
--- a/third_party/WebKit/LayoutTests/fast/parser/document-write-onload-nesting.html
+++ b/third_party/WebKit/LayoutTests/fast/parser/document-write-onload-nesting.html
@@ -2,4 +2,4 @@
if (window.testRunner)
testRunner.dumpAsText();
</script>
-<iframe onload="document.write('<p>PASS<iframe onload=&quot;document.write(\'<p>\')&quot;></iframe>');"></iframe>
+<iframe onload="document.write('<p>PASS<iframe onload=&quot;document.write(\'<p>\')&quot;></iframe>'); document.close();"></iframe>
diff --git a/third_party/WebKit/LayoutTests/fast/parser/iframe-onload-document-close-with-external-script-2.html b/third_party/WebKit/LayoutTests/fast/parser/iframe-onload-document-close-with-external-script-2.html
index e451fa9..914cc250 100644
--- a/third_party/WebKit/LayoutTests/fast/parser/iframe-onload-document-close-with-external-script-2.html
+++ b/third_party/WebKit/LayoutTests/fast/parser/iframe-onload-document-close-with-external-script-2.html
@@ -3,4 +3,4 @@ if (window.testRunner)
testRunner.dumpAsText();
</script>
<script src="non-existent.js"></script>
-<iframe onload="document.open(); document.write('This test passes if it does not crash');"></iframe>
+<iframe onload="document.open(); document.write('This test passes if it does not crash'); document.close();"></iframe>
diff --git a/third_party/WebKit/LayoutTests/fast/parser/iframe-onload-document-close-with-external-script-3.html b/third_party/WebKit/LayoutTests/fast/parser/iframe-onload-document-close-with-external-script-3.html
index 650deba..570e1b2 100644
--- a/third_party/WebKit/LayoutTests/fast/parser/iframe-onload-document-close-with-external-script-3.html
+++ b/third_party/WebKit/LayoutTests/fast/parser/iframe-onload-document-close-with-external-script-3.html
@@ -3,4 +3,4 @@ if (window.testRunner)
testRunner.dumpAsText();
</script>
<script src="non-existent.js"></script>
-<iframe onload="document.write('This test passes if it does not crash');"></iframe>
+<iframe onload="document.write('This test passes if it does not crash'); document.close();"></iframe>
diff --git a/third_party/WebKit/LayoutTests/fast/parser/iframe-onload-document-close-with-external-script.html b/third_party/WebKit/LayoutTests/fast/parser/iframe-onload-document-close-with-external-script.html
index 68bbbc8..0763021 100644
--- a/third_party/WebKit/LayoutTests/fast/parser/iframe-onload-document-close-with-external-script.html
+++ b/third_party/WebKit/LayoutTests/fast/parser/iframe-onload-document-close-with-external-script.html
@@ -3,4 +3,4 @@ if (window.testRunner)
testRunner.dumpAsText();
</script>
<script src="non-existent.js"></script>
-<iframe onload="document.close(); document.write('This test passes if it does not crash');"></iframe>
+<iframe onload="document.close(); document.write('This test passes if it does not crash'); document.close();"></iframe>
diff --git a/third_party/WebKit/LayoutTests/fast/text/webfont-synthetic-bold.html b/third_party/WebKit/LayoutTests/fast/text/webfont-synthetic-bold.html
index 3954828..8427bcd 100644
--- a/third_party/WebKit/LayoutTests/fast/text/webfont-synthetic-bold.html
+++ b/third_party/WebKit/LayoutTests/fast/text/webfont-synthetic-bold.html
@@ -23,5 +23,8 @@
not be rendered nice and crisp without being overly blurry.
</p>
</section>
+ <script>
+ document.body.offsetLeft;
+ </script>
</body>
</html>
diff --git a/third_party/WebKit/LayoutTests/fast/tokenizer/resources/write-external-script-open.js b/third_party/WebKit/LayoutTests/fast/tokenizer/resources/write-external-script-open.js
index 1fc67e5..0fc34c3 100644
--- a/third_party/WebKit/LayoutTests/fast/tokenizer/resources/write-external-script-open.js
+++ b/third_party/WebKit/LayoutTests/fast/tokenizer/resources/write-external-script-open.js
@@ -1,2 +1,4 @@
document.open();
document.write('<br>SUCCESS (2 of 2)<br>');
+if (window.testRunner)
+ testRunner.notifyDone();
diff --git a/third_party/WebKit/LayoutTests/fast/tokenizer/write-external-script-open.html b/third_party/WebKit/LayoutTests/fast/tokenizer/write-external-script-open.html
index 2c38e69..e23249a 100644
--- a/third_party/WebKit/LayoutTests/fast/tokenizer/write-external-script-open.html
+++ b/third_party/WebKit/LayoutTests/fast/tokenizer/write-external-script-open.html
@@ -1,8 +1,11 @@
<body onload="test()">
FAILURE
<script>
-if (window.testRunner)
+if (window.testRunner) {
testRunner.dumpAsText();
+ testRunner.waitUntilDone();
+}
+
function test()
{
document.write("SUCCESS (1 of 2)<script src='resources/write-external-script-open.js'></scr" + "ipt>");
diff --git a/third_party/WebKit/LayoutTests/http/tests/cache/cancel-multiple-post-xhrs-expected.txt b/third_party/WebKit/LayoutTests/http/tests/cache/cancel-multiple-post-xhrs-expected.txt
index 6eba105..7b31da1 100644
--- a/third_party/WebKit/LayoutTests/http/tests/cache/cancel-multiple-post-xhrs-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/cache/cancel-multiple-post-xhrs-expected.txt
@@ -1,4 +1,7 @@
http://127.0.0.1:8000/cache/resources/empty.txt - willSendRequest <NSURLRequest URL http://127.0.0.1:8000/cache/resources/empty.txt, main document URL http://127.0.0.1:8000/cache/cancel-multiple-post-xhrs.html, http method POST> redirectResponse (null)
http://127.0.0.1:8000/cache/resources/empty.txt - willSendRequest <NSURLRequest URL http://127.0.0.1:8000/cache/resources/empty.txt, main document URL http://127.0.0.1:8000/cache/cancel-multiple-post-xhrs.html, http method POST> redirectResponse (null)
http://127.0.0.1:8000/cache/resources/empty.txt - willSendRequest <NSURLRequest URL http://127.0.0.1:8000/cache/resources/empty.txt, main document URL http://127.0.0.1:8000/cache/cancel-multiple-post-xhrs.html, http method POST> redirectResponse (null)
+http://127.0.0.1:8000/cache/resources/empty.txt - didFinishLoading
+http://127.0.0.1:8000/cache/resources/empty.txt - didFinishLoading
+http://127.0.0.1:8000/cache/resources/empty.txt - didFinishLoading
diff --git a/third_party/WebKit/LayoutTests/http/tests/fouc/scroll-left-while-loading.html b/third_party/WebKit/LayoutTests/http/tests/fouc/scroll-left-while-loading.html
index b307cd5..e909de3 100644
--- a/third_party/WebKit/LayoutTests/http/tests/fouc/scroll-left-while-loading.html
+++ b/third_party/WebKit/LayoutTests/http/tests/fouc/scroll-left-while-loading.html
@@ -13,6 +13,7 @@ setTimeout(function(){
document.write("FAIL");
else
document.write("PASS");
+ document.close();
if (window.testRunner)
testRunner.notifyDone();
}, 0);
diff --git a/third_party/WebKit/LayoutTests/http/tests/incremental/doc-write-before-end.pl b/third_party/WebKit/LayoutTests/http/tests/incremental/doc-write-before-end.pl
index a89e5fd..56bbe15 100755
--- a/third_party/WebKit/LayoutTests/http/tests/incremental/doc-write-before-end.pl
+++ b/third_party/WebKit/LayoutTests/http/tests/incremental/doc-write-before-end.pl
@@ -12,7 +12,7 @@ print "\n";
print "\xef\xbb\xbf<!DOCTYPE html><body>";
print "<script>if (window.testRunner) window.testRunner.dumpAsText();</script>";
-print "<img src='404.gif' onerror='document.write(\"PASS\");'>";
+print "<img src='404.gif' onerror='document.write(\"PASS\"); document.close()'>";
# Dump some spaces to bypass CFNetwork buffering.
for ($count = 1; $count < 4000; $count++) {
print " ";
diff --git a/third_party/WebKit/LayoutTests/http/tests/local/file-url-sent-as-referer.html b/third_party/WebKit/LayoutTests/http/tests/local/file-url-sent-as-referer.html
index ed8420b..e6e03f3 100644
--- a/third_party/WebKit/LayoutTests/http/tests/local/file-url-sent-as-referer.html
+++ b/third_party/WebKit/LayoutTests/http/tests/local/file-url-sent-as-referer.html
@@ -5,6 +5,7 @@
{
var frameObj = document.getElementById("myFrame");
frameObj.contentWindow.document.write("<img src=\"http://127.0.0.1:8000/security/resources/showRefererImage.php\"/>");
+ frameObj.contentWindow.document.close();
}
</script>
</head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/misc/stop-loading-on-resource-timing-buffer-full-crash-expected.txt b/third_party/WebKit/LayoutTests/http/tests/misc/stop-loading-on-resource-timing-buffer-full-crash-expected.txt
index 45536ef..a9efafb 100644
--- a/third_party/WebKit/LayoutTests/http/tests/misc/stop-loading-on-resource-timing-buffer-full-crash-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/misc/stop-loading-on-resource-timing-buffer-full-crash-expected.txt
@@ -1 +1,4 @@
+PASS successfullyParsed is true
+
+TEST COMPLETE
PASS. No crash when stop loading on resource timing buffer full.
diff --git a/third_party/WebKit/LayoutTests/http/tests/misc/stop-loading-on-resource-timing-buffer-full-crash.html b/third_party/WebKit/LayoutTests/http/tests/misc/stop-loading-on-resource-timing-buffer-full-crash.html
index 173822f..02f7fad 100644
--- a/third_party/WebKit/LayoutTests/http/tests/misc/stop-loading-on-resource-timing-buffer-full-crash.html
+++ b/third_party/WebKit/LayoutTests/http/tests/misc/stop-loading-on-resource-timing-buffer-full-crash.html
@@ -1,7 +1,11 @@
<html>
-<head>
+<body>
<script src="/js-test-resources/js-test.js"></script>
<script>
+if (window.testRunner) {
+ testRunner.dumpAsText();
+ testRunner.waitUntilDone();
+}
performance.onwebkitresourcetimingbufferfull = function() {
window.stop();
@@ -11,13 +15,5 @@ performance.onwebkitresourcetimingbufferfull = function() {
performance.webkitSetResourceTimingBufferSize(1);
</script>
-</head>
-<body>
-<script>
-if (window.testRunner) {
- testRunner.dumpAsText();
- testRunner.waitUntilDone();
-}
-</script>
</body>
</html>
diff --git a/third_party/WebKit/LayoutTests/http/tests/misc/window-dot-stop-expected.txt b/third_party/WebKit/LayoutTests/http/tests/misc/window-dot-stop-expected.txt
index 0e2e312..11891da 100644
--- a/third_party/WebKit/LayoutTests/http/tests/misc/window-dot-stop-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/misc/window-dot-stop-expected.txt
@@ -1,4 +1,5 @@
http://127.0.0.1:8000/incremental/slow-utf8-text.pl - willSendRequest <NSURLRequest URL http://127.0.0.1:8000/incremental/slow-utf8-text.pl, main document URL http://127.0.0.1:8000/misc/window-dot-stop.html, http method GET> redirectResponse (null)
+http://127.0.0.1:8000/incremental/slow-utf8-text.pl - didFinishLoading
This tests for the successful use of window.stop()
diff --git a/third_party/WebKit/LayoutTests/http/tests/multipart/invalid-image-data-standalone-expected.txt b/third_party/WebKit/LayoutTests/http/tests/multipart/invalid-image-data-standalone-expected.txt
deleted file mode 100644
index c06eef8..0000000
--- a/third_party/WebKit/LayoutTests/http/tests/multipart/invalid-image-data-standalone-expected.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-layer at (0,0) size 800x600
- RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
- RenderBlock {HTML} at (0,0) size 800x600
- RenderBody {BODY} at (8,8) size 784x584
- RenderBlock {P} at (0,0) size 784x36
- RenderText {#text} at (0,0) size 53x18
- text run at (0,0) width 53: "Test for "
- RenderInline {I} at (0,0) size 776x36
- RenderInline {A} at (0,0) size 301x18 [color=#0000EE]
- RenderText {#text} at (53,0) size 301x18
- text run at (53,0) width 301: "http://bugs.webkit.org/show_bug.cgi?id=13759"
- RenderText {#text} at (354,0) size 776x36
- text run at (354,0) width 4: " "
- text run at (358,0) width 418: "REGRESSION (r20182-r20184): Incorrect rendering of multipart"
- text run at (0,18) width 45: "images"
- RenderText {#text} at (45,18) size 4x18
- text run at (45,18) width 4: "."
- RenderBlock {P} at (0,52) size 784x18
- RenderText {#text} at (0,0) size 244x18
- text run at (0,0) width 244: "There should be a green square below."
- RenderBlock (anonymous) at (0,86) size 784x124
- RenderPartObject {IFRAME} at (0,0) size 124x124 [border: (2px inset #000000)]
- layer at (0,0) size 120x120
- RenderView at (0,0) size 120x120
- layer at (0,0) size 120x120
- RenderBlock {HTML} at (0,0) size 120x120
- RenderBody {BODY} at (0,0) size 120x120
- RenderImage {IMG} at (0,0) size 100x100
- RenderText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/http/tests/multipart/invalid-image-data.html b/third_party/WebKit/LayoutTests/http/tests/multipart/invalid-image-data.html
deleted file mode 100644
index 561822b..0000000
--- a/third_party/WebKit/LayoutTests/http/tests/multipart/invalid-image-data.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<html>
-<head>
- <script>
- if (window.testRunner)
- testRunner.waitUntilDone();
-
- function loadedFirstPart()
- {
- if (window.testRunner)
- testRunner.notifyDone();
- }
- </script>
-</head>
-<body>
- <p>
- Test for <i><a href="http://bugs.webkit.org/show_bug.cgi?id=13759">http://bugs.webkit.org/show_bug.cgi?id=13759</a>
- REGRESSION (r20182-r20184): Incorrect rendering of multipart images</i>.
- </p>
- <p>
- There should be a bright green square below.
- </p>
- <img width="100" height="100" src="resources/multipart.php?interval=1&img1=2x2-green.png&img2=abe.png" onload="loadedFirstPart()">
-</body>
-</html>
diff --git a/third_party/WebKit/LayoutTests/http/tests/navigation/go-back-to-error-page-expected.txt b/third_party/WebKit/LayoutTests/http/tests/navigation/go-back-to-error-page-expected.txt
deleted file mode 100644
index 158bb8f..0000000
--- a/third_party/WebKit/LayoutTests/http/tests/navigation/go-back-to-error-page-expected.txt
+++ /dev/null
@@ -1 +0,0 @@
-PASS: Going back to a page that was previously treated as unreachable loads the actual page.
diff --git a/third_party/WebKit/LayoutTests/http/tests/navigation/go-back-to-error-page.html b/third_party/WebKit/LayoutTests/http/tests/navigation/go-back-to-error-page.html
deleted file mode 100644
index b0041a8..0000000
--- a/third_party/WebKit/LayoutTests/http/tests/navigation/go-back-to-error-page.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<script>
-if (window.testRunner) {
- testRunner.dumpAsText();
- testRunner.queueLoadHTMLString("<script>document.write('<div id=result>FAIL: The alternate HTML string was cached, but should not have been cached for an error page</div>');<\/script>", "http://127.0.0.1:8000/navigation/resources/", "http://127.0.0.1:8000/navigation/resources/page-treated-as-unreachable.html");
- testRunner.queueLoad("resources/page-to-go-back-from.html");
- testRunner.queueBackNavigation(1);
-} else
- document.write('This test must be run by DumpRenderTree!')
-</script>
-
-<p>This tests that going back to an error page (an unreachable URL for which there is substitute
-data) does not cause an assertion failure.</p>
-
diff --git a/third_party/WebKit/LayoutTests/http/tests/navigation/lockedhistory-iframe.html b/third_party/WebKit/LayoutTests/http/tests/navigation/lockedhistory-iframe.html
index a7a3134..e0c9a9c 100644
--- a/third_party/WebKit/LayoutTests/http/tests/navigation/lockedhistory-iframe.html
+++ b/third_party/WebKit/LayoutTests/http/tests/navigation/lockedhistory-iframe.html
@@ -15,7 +15,7 @@ function myCallbackFunction() {
<p>This test verifies that setting the iframe.src through javascript to # does not add a history item. If the test passes you'll see only one history item.</p>
<script type="text/javascript">
myFrame = document.createElement("iframe");
-myFrame.src = "javascript:document.write('<script type=text/javascript>window.parent.myCallbackFunction();<\/script>');";
+myFrame.src = "javascript:document.write('<script type=text/javascript>window.parent.myCallbackFunction();<\/script>'); document.close()";
document.body.appendChild(myFrame);
</script>
</body>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/XFrameOptions/x-frame-options-deny-expected.txt b/third_party/WebKit/LayoutTests/http/tests/security/XFrameOptions/x-frame-options-deny-expected.txt
index f26be6a..c8f0090 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/XFrameOptions/x-frame-options-deny-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/security/XFrameOptions/x-frame-options-deny-expected.txt
@@ -1,6 +1,7 @@
http://127.0.0.1:8000/security/XFrameOptions/resources/x-frame-options-deny.cgi - willSendRequest <NSURLRequest URL http://127.0.0.1:8000/security/XFrameOptions/resources/x-frame-options-deny.cgi, main document URL http://127.0.0.1:8000/security/XFrameOptions/x-frame-options-deny.html, http method GET> redirectResponse (null)
CONSOLE ERROR: Refused to display 'http://127.0.0.1:8000/security/XFrameOptions/resources/x-frame-options-deny.cgi' in a frame because it set 'X-Frame-Options' to 'deny'.
CONSOLE MESSAGE: line 14: PASS: Access to contentWindow.location.href threw an exception.
+http://127.0.0.1:8000/security/XFrameOptions/resources/x-frame-options-deny.cgi - didFinishLoading
There should be no content in the iframe below
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/XFrameOptions/x-frame-options-multiple-headers-conflict-expected.txt b/third_party/WebKit/LayoutTests/http/tests/security/XFrameOptions/x-frame-options-multiple-headers-conflict-expected.txt
index 7098735..454a586 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/XFrameOptions/x-frame-options-multiple-headers-conflict-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/security/XFrameOptions/x-frame-options-multiple-headers-conflict-expected.txt
@@ -1,6 +1,7 @@
http://127.0.0.1:8000/security/XFrameOptions/resources/x-frame-options-multiple-headers-conflict.cgi - willSendRequest <NSURLRequest URL http://127.0.0.1:8000/security/XFrameOptions/resources/x-frame-options-multiple-headers-conflict.cgi, main document URL http://127.0.0.1:8000/security/XFrameOptions/x-frame-options-multiple-headers-conflict.html, http method GET> redirectResponse (null)
CONSOLE ERROR: Multiple 'X-Frame-Options' headers with conflicting values ('ALLOWALL, DENY') encountered when loading 'http://127.0.0.1:8000/security/XFrameOptions/resources/x-frame-options-multiple-headers-conflict.cgi'. Falling back to 'DENY'.
CONSOLE ERROR: Refused to display 'http://127.0.0.1:8000/security/XFrameOptions/resources/x-frame-options-multiple-headers-conflict.cgi' in a frame because it set 'X-Frame-Options' to 'ALLOWALL, DENY'.
+http://127.0.0.1:8000/security/XFrameOptions/resources/x-frame-options-multiple-headers-conflict.cgi - didFinishLoading
The frame below should not load, and a console message should be generated that notes the invalid header.
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/XFrameOptions/x-frame-options-multiple-headers-sameorigin-deny-expected.txt b/third_party/WebKit/LayoutTests/http/tests/security/XFrameOptions/x-frame-options-multiple-headers-sameorigin-deny-expected.txt
index 5997162..595d88d 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/XFrameOptions/x-frame-options-multiple-headers-sameorigin-deny-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/security/XFrameOptions/x-frame-options-multiple-headers-sameorigin-deny-expected.txt
@@ -1,6 +1,7 @@
http://localhost:8000/security/XFrameOptions/resources/x-frame-options-multiple-headers-sameorigin.cgi - willSendRequest <NSURLRequest URL http://localhost:8000/security/XFrameOptions/resources/x-frame-options-multiple-headers-sameorigin.cgi, main document URL http://127.0.0.1:8000/security/XFrameOptions/x-frame-options-multiple-headers-sameorigin-deny.html, http method GET> redirectResponse (null)
CONSOLE ERROR: Refused to display 'http://localhost:8000/security/XFrameOptions/resources/x-frame-options-multiple-headers-sameorigin.cgi' in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN, SAMEORIGIN'.
CONSOLE MESSAGE: line 17: PASS: Access to contentWindow.location.href threw an exception.
+http://localhost:8000/security/XFrameOptions/resources/x-frame-options-multiple-headers-sameorigin.cgi - didFinishLoading
The frame below should not load, proving that 'sameorigin, sameorigin' === 'sameorigin'.
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/XFrameOptions/x-frame-options-parent-same-origin-deny-expected.txt b/third_party/WebKit/LayoutTests/http/tests/security/XFrameOptions/x-frame-options-parent-same-origin-deny-expected.txt
index 7811fa2..d0fb768 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/XFrameOptions/x-frame-options-parent-same-origin-deny-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/security/XFrameOptions/x-frame-options-parent-same-origin-deny-expected.txt
@@ -1,6 +1,7 @@
http://localhost:8000/security/XFrameOptions/resources/x-frame-options-parent-same-origin-allow.cgi - willSendRequest <NSURLRequest URL http://localhost:8000/security/XFrameOptions/resources/x-frame-options-parent-same-origin-allow.cgi, main document URL http://127.0.0.1:8000/security/XFrameOptions/x-frame-options-parent-same-origin-deny.html, http method GET> redirectResponse (null)
CONSOLE ERROR: Refused to display 'http://localhost:8000/security/XFrameOptions/resources/x-frame-options-parent-same-origin-allow.cgi' in a frame because it set 'X-Frame-Options' to 'sameorigin'.
CONSOLE MESSAGE: line 14: PASS: Access to contentWindow.location.href threw an exception.
+http://localhost:8000/security/XFrameOptions/resources/x-frame-options-parent-same-origin-allow.cgi - didFinishLoading
There should be no content in the iframe below
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/cookies/base-about-blank.html b/third_party/WebKit/LayoutTests/http/tests/security/cookies/base-about-blank.html
index e2d807a..f5265b1 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/cookies/base-about-blank.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/cookies/base-about-blank.html
@@ -18,6 +18,7 @@ function runTest() {
log("Running test.");
frames[1].document.open();
log(frames[1].document.cookie);
+ frames[1].document.close();
log("Test complete.");
if (window.testRunner)
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-call.html b/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-call.html
index 9438034..ee272fd 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-call.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-call.html
@@ -59,8 +59,6 @@ window.onload = function()
// - Tests for the Location object -
shouldThrow("window.location.toString.call(targetWindow.location)", '"SecurityError: Failed to execute \'toString\' on \'Location\': Blocked a frame with origin \\"http://127.0.0.1:8000\\" from accessing a cross-origin frame."');
- // Work around DRT bug that causes subsequent tests to fail.
- window.stop();
finishJSTest();
}
</script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-custom.html b/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-custom.html
index 491144b..fb770c3 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-custom.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-custom.html
@@ -41,9 +41,6 @@ window.onload = function()
shouldBeTrue("canGet('targetWindow.toString')");
shouldBeFalse("canSet('targetWindow.toString')");
shouldBe("toString('targetWindow', '')", "'[object Window]'");
-
- // Work around DRT bug that causes subsequent tests to fail.
- window.stop();
}
</script>
</body>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-frames.html b/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-frames.html
index bd77d38..d5ed7df 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-frames.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-frames.html
@@ -20,9 +20,6 @@ window.onload = function()
shouldBe("targetWindow.frames.length", 1);
shouldBeTrue("canGet('targetWindow.frames[0]')");
shouldBeTrue("canGet('targetWindow[0]')");
-
- // Work around DRT bug that causes subsequent tests to fail.
- window.stop();
}
</script>
</body>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-name-getter.html b/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-name-getter.html
index 8b267a9..9e5c0c5a 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-name-getter.html
+++ b/third_party/WebKit/LayoutTests/http/tests/security/cross-frame-access-name-getter.html
@@ -21,9 +21,6 @@ window.onload = function()
// element by name
shouldBeFalse("canGet('targetWindow.testimage')");
-
- // Work around DRT bug that causes subsequent tests to fail.
- window.stop();
}
</script>
</body>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xss-DENIED-xsl-document-expected.txt b/third_party/WebKit/LayoutTests/http/tests/security/xss-DENIED-xsl-document-expected.txt
index ae21c77..4cef621 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xss-DENIED-xsl-document-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xss-DENIED-xsl-document-expected.txt
@@ -1,3 +1,3 @@
-CONSOLE ERROR: Unsafe attempt to load URL http://localhost:8000/security/resources/target.xml from frame with URL http://127.0.0.1:8000/security/xss-DENIED-xsl-document.xml. Domains, protocols and ports must match.
+CONSOLE ERROR: line 2: Unsafe attempt to load URL http://localhost:8000/security/resources/target.xml from frame with URL http://127.0.0.1:8000/security/xss-DENIED-xsl-document.xml. Domains, protocols and ports must match.
This test includes content via a cross-origin document() command. It passes if the load fails and thus there is no text below this line.
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/html5-import-safe-expected.txt b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/html5-import-safe-expected.txt
index 91e11fa..ddf0cb2 100644
--- a/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/html5-import-safe-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/security/xssAuditor/html5-import-safe-expected.txt
@@ -4,8 +4,4 @@ This test passes if the "safe" HTML5 import occurs, because XSSAuditor gives a p
--------
Frame: '<!--framePath //<!--frame0-->-->'
--------
-
Page rendered here.
-
-
-
diff --git a/third_party/WebKit/LayoutTests/http/tests/svg/change-id-with-pending-resources.html b/third_party/WebKit/LayoutTests/http/tests/svg/change-id-with-pending-resources.html
index 8c94040..f0bd022 100644
--- a/third_party/WebKit/LayoutTests/http/tests/svg/change-id-with-pending-resources.html
+++ b/third_party/WebKit/LayoutTests/http/tests/svg/change-id-with-pending-resources.html
@@ -12,6 +12,7 @@
document.write("");
q.getElementById('d').id = "maskedGradient";
document.write("If this text is visible and the test did not crash, this test passes");
+ document.close();
if (window.testRunner)
testRunner.notifyDone();
}
diff --git a/third_party/WebKit/LayoutTests/http/tests/svg/tref-adoptNode-crash.html b/third_party/WebKit/LayoutTests/http/tests/svg/tref-adoptNode-crash.html
index afa5e7f..c47b0bc 100644
--- a/third_party/WebKit/LayoutTests/http/tests/svg/tref-adoptNode-crash.html
+++ b/third_party/WebKit/LayoutTests/http/tests/svg/tref-adoptNode-crash.html
@@ -17,6 +17,7 @@
r.surroundContents( e );
e.id = 's';
document.write("If this text is visible and the test did not crash, this test passes");
+ document.close();
if (window.testRunner)
testRunner.notifyDone();
}
diff --git a/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/navigation-should-abort-expected.txt b/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/navigation-should-abort-expected.txt
index faa6337..435e44e 100644
--- a/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/navigation-should-abort-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/navigation-should-abort-expected.txt
@@ -1,2 +1,2 @@
-CONSOLE MESSAGE: line 14: PASS: Expected 'abort', got 'abort'.
+CONSOLE MESSAGE: line 16: PASS: Expected 'abort', got 'abort'.
If this text shows up, you've successfully navigated to 'navigation-target.html'.
diff --git a/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/navigation-should-abort.html b/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/navigation-should-abort.html
index 21bb335..3eded8a 100644
--- a/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/navigation-should-abort.html
+++ b/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/navigation-should-abort.html
@@ -2,8 +2,10 @@
<html>
<head>
<script>
- if (window.testRunner)
+ if (window.testRunner) {
testRunner.dumpAsText();
+ testRunner.waitUntilDone();
+ }
var req = new XMLHttpRequest();
req.open("GET", "resources/endlessxml.php");
@@ -15,8 +17,7 @@
};
req.send(null);
- if (window.testRunner)
- testRunner.queueLoad("resources/navigation-target.html");
+ location = "resources/navigation-target.html";
</script>
</head>
<body>
diff --git a/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/reentrant-cancel-expected.txt b/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/reentrant-cancel-expected.txt
index 3b81043..7fef958 100644
--- a/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/reentrant-cancel-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/reentrant-cancel-expected.txt
@@ -1,4 +1,4 @@
-CONSOLE ERROR: line 26: Uncaught InvalidStateError: Failed to execute 'send' on 'XMLHttpRequest': The object's state must be OPENED.
+CONSOLE ERROR: line 34: Uncaught InvalidStateError: Failed to execute 'send' on 'XMLHttpRequest': The object's state must be OPENED.
insertedText
This tests that when we re-entrantly create and cancel XHRs, we don't try to disconnect the same CachedResourceClient multiple times from its CachedResource. We pass if we don't crash.
DOMContentLoadedload
diff --git a/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/reentrant-cancel.html b/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/reentrant-cancel.html
index 2916ae6..3b3f976 100644
--- a/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/reentrant-cancel.html
+++ b/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/reentrant-cancel.html
@@ -2,8 +2,10 @@
<html>
<body>
<script>
-if (window.testRunner)
+if (window.testRunner) {
testRunner.dumpAsText();
+ testRunner.waitUntilDone();
+}
function log(str)
{
@@ -23,6 +25,12 @@ var xhr = new XMLHttpRequest;
function sendXHR()
{
xhr.open("GET", "", true);
+ xhr.onreadystatechange = function() {
+ if (xhr.readyState != 4)
+ return;
+ if (window.testRunner)
+ testRunner.notifyDone();
+ };
xhr.send();
}
window.addEventListener("DOMSubtreeModified", sendXHR);
diff --git a/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/resources/navigation-target.html b/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/resources/navigation-target.html
index 0098c7d..f2dd590 100644
--- a/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/resources/navigation-target.html
+++ b/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/resources/navigation-target.html
@@ -6,4 +6,8 @@
<body>
<p>If this text shows up, you've successfully navigated to 'navigation-target.html'.</p>
</body>
+<script>
+if (window.testRunner)
+ testRunner.notifyDone();
+</script>
</html>
diff --git a/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/send-on-abort.html b/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/send-on-abort.html
index 727012b..611f24e6 100644
--- a/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/send-on-abort.html
+++ b/third_party/WebKit/LayoutTests/http/tests/xmlhttprequest/send-on-abort.html
@@ -24,5 +24,5 @@ xhr.onabort = abortHandler;
xhr.onreadystatechange = onreadystatechangeHandler;
xhr.open("GET", "foo.txt", true);
xhr.send(null);
-location.href = "data:text/html,<script>if (window.testRunner) testRunner.notifyDone()</scr" + "ipt>PASS: No assertion failure.";
+location.href = "data:text/html,PASS: No assertion failure.<script>if (window.testRunner) testRunner.notifyDone()</scr" + "ipt>";
</script>
diff --git a/third_party/WebKit/LayoutTests/platform/linux/http/tests/multipart/invalid-image-data-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/http/tests/multipart/invalid-image-data-expected.txt
deleted file mode 100644
index fca8593..0000000
--- a/third_party/WebKit/LayoutTests/platform/linux/http/tests/multipart/invalid-image-data-expected.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-layer at (0,0) size 800x600
- RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
- RenderBlock {HTML} at (0,0) size 800x600
- RenderBody {BODY} at (8,8) size 784x584
- RenderBlock {P} at (0,0) size 784x40
- RenderText {#text} at (0,0) size 51x19
- text run at (0,0) width 51: "Test for "
- RenderInline {I} at (0,0) size 779x39
- RenderInline {A} at (0,0) size 305x19 [color=#0000EE]
- RenderText {#text} at (51,0) size 305x19
- text run at (51,0) width 305: "http://bugs.webkit.org/show_bug.cgi?id=13759"
- RenderText {#text} at (356,0) size 779x39
- text run at (356,0) width 4: " "
- text run at (360,0) width 419: "REGRESSION (r20182-r20184): Incorrect rendering of multipart"
- text run at (0,20) width 45: "images"
- RenderText {#text} at (45,20) size 4x19
- text run at (45,20) width 4: "."
- RenderBlock {P} at (0,56) size 784x20
- RenderText {#text} at (0,0) size 272x19
- text run at (0,0) width 272: "There should be a bright green square below."
- RenderBlock (anonymous) at (0,92) size 784x100
- RenderImage {IMG} at (0,0) size 100x100
- RenderText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/win-xp/http/tests/multipart/invalid-image-data-expected.txt b/third_party/WebKit/LayoutTests/platform/win-xp/http/tests/multipart/invalid-image-data-expected.txt
deleted file mode 100644
index fca8593..0000000
--- a/third_party/WebKit/LayoutTests/platform/win-xp/http/tests/multipart/invalid-image-data-expected.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-layer at (0,0) size 800x600
- RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
- RenderBlock {HTML} at (0,0) size 800x600
- RenderBody {BODY} at (8,8) size 784x584
- RenderBlock {P} at (0,0) size 784x40
- RenderText {#text} at (0,0) size 51x19
- text run at (0,0) width 51: "Test for "
- RenderInline {I} at (0,0) size 779x39
- RenderInline {A} at (0,0) size 305x19 [color=#0000EE]
- RenderText {#text} at (51,0) size 305x19
- text run at (51,0) width 305: "http://bugs.webkit.org/show_bug.cgi?id=13759"
- RenderText {#text} at (356,0) size 779x39
- text run at (356,0) width 4: " "
- text run at (360,0) width 419: "REGRESSION (r20182-r20184): Incorrect rendering of multipart"
- text run at (0,20) width 45: "images"
- RenderText {#text} at (45,20) size 4x19
- text run at (45,20) width 4: "."
- RenderBlock {P} at (0,56) size 784x20
- RenderText {#text} at (0,0) size 272x19
- text run at (0,0) width 272: "There should be a bright green square below."
- RenderBlock (anonymous) at (0,92) size 784x100
- RenderImage {IMG} at (0,0) size 100x100
- RenderText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/platform/win/http/tests/multipart/invalid-image-data-expected.txt b/third_party/WebKit/LayoutTests/platform/win/http/tests/multipart/invalid-image-data-expected.txt
deleted file mode 100644
index 4ba2e0b..0000000
--- a/third_party/WebKit/LayoutTests/platform/win/http/tests/multipart/invalid-image-data-expected.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-layer at (0,0) size 800x600
- RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
- RenderBlock {HTML} at (0,0) size 800x600
- RenderBody {BODY} at (8,8) size 784x584
- RenderBlock {P} at (0,0) size 784x36
- RenderText {#text} at (0,0) size 55x17
- text run at (0,0) width 55: "Test for "
- RenderInline {I} at (0,0) size 723x35
- RenderInline {A} at (0,0) size 306x17 [color=#0000EE]
- RenderText {#text} at (54,0) size 306x17
- text run at (54,0) width 306: "http://bugs.webkit.org/show_bug.cgi?id=13759"
- RenderText {#text} at (359,0) size 723x35
- text run at (359,0) width 5: " "
- text run at (363,0) width 360: "REGRESSION (r20182-r20184): Incorrect rendering of"
- text run at (0,18) width 109: "multipart images"
- RenderText {#text} at (108,18) size 5x17
- text run at (108,18) width 5: "."
- RenderBlock {P} at (0,52) size 784x18
- RenderText {#text} at (0,0) size 289x17
- text run at (0,0) width 289: "There should be a bright green square below."
- RenderBlock (anonymous) at (0,86) size 784x100
- RenderImage {IMG} at (0,0) size 100x100
- RenderText {#text} at (0,0) size 0x0
diff --git a/third_party/WebKit/LayoutTests/security/block-test-expected.txt b/third_party/WebKit/LayoutTests/security/block-test-expected.txt
index 6a4ce7f..5baec85 100644
--- a/third_party/WebKit/LayoutTests/security/block-test-expected.txt
+++ b/third_party/WebKit/LayoutTests/security/block-test-expected.txt
@@ -1,147 +1,218 @@
http://255.255.255.255:1/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:1/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:1/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:1/test.jpg
http://255.255.255.255:7/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:7/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:7/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:7/test.jpg
http://255.255.255.255:9/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:9/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:9/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:9/test.jpg
http://255.255.255.255:11/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:11/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:11/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:11/test.jpg
http://255.255.255.255:13/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:13/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:13/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:13/test.jpg
http://255.255.255.255:15/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:15/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:15/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:15/test.jpg
http://255.255.255.255:17/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:17/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:17/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:17/test.jpg
http://255.255.255.255:19/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:19/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:19/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:19/test.jpg
http://255.255.255.255:20/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:20/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:20/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:20/test.jpg
http://255.255.255.255:21/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:21/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:21/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:21/test.jpg
http://255.255.255.255:22/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:22/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:22/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:22/test.jpg
http://255.255.255.255:23/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:23/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:23/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:23/test.jpg
http://255.255.255.255:25/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:25/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:25/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:25/test.jpg
http://255.255.255.255:37/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:37/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:37/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:37/test.jpg
http://255.255.255.255:42/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:42/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:42/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:42/test.jpg
http://255.255.255.255:43/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:43/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:43/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:43/test.jpg
http://255.255.255.255:53/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:53/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:53/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:53/test.jpg
http://255.255.255.255:77/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:77/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:77/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:77/test.jpg
http://255.255.255.255:79/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:79/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:79/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:79/test.jpg
http://255.255.255.255:87/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:87/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:87/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:87/test.jpg
http://255.255.255.255:95/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:95/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:95/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:95/test.jpg
http://255.255.255.255:101/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:101/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:101/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:101/test.jpg
http://255.255.255.255:102/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:102/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:102/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:102/test.jpg
http://255.255.255.255:103/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:103/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:103/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:103/test.jpg
http://255.255.255.255:104/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:104/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:104/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:104/test.jpg
http://255.255.255.255:109/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:109/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:109/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:109/test.jpg
http://255.255.255.255:110/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:110/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:110/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:110/test.jpg
http://255.255.255.255:111/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:111/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:111/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:111/test.jpg
http://255.255.255.255:113/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:113/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:113/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:113/test.jpg
http://255.255.255.255:115/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:115/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:115/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:115/test.jpg
http://255.255.255.255:117/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:117/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:117/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:117/test.jpg
http://255.255.255.255:119/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:119/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:119/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:119/test.jpg
http://255.255.255.255:123/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:123/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:123/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:123/test.jpg
http://255.255.255.255:135/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:135/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:135/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:135/test.jpg
http://255.255.255.255:139/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:139/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:139/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:139/test.jpg
http://255.255.255.255:143/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:143/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:143/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:143/test.jpg
http://255.255.255.255:179/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:179/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:179/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:179/test.jpg
http://255.255.255.255:389/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:389/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:389/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:389/test.jpg
http://255.255.255.255:465/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:465/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:465/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:465/test.jpg
http://255.255.255.255:512/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:512/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:512/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:512/test.jpg
http://255.255.255.255:513/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:513/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:513/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:513/test.jpg
http://255.255.255.255:514/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:514/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:514/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:514/test.jpg
http://255.255.255.255:515/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:515/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:515/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:515/test.jpg
http://255.255.255.255:526/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:526/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:526/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:526/test.jpg
http://255.255.255.255:530/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:530/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:530/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:530/test.jpg
http://255.255.255.255:531/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:531/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:531/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:531/test.jpg
http://255.255.255.255:532/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:532/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:532/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:532/test.jpg
http://255.255.255.255:540/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:540/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:540/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:540/test.jpg
http://255.255.255.255:556/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:556/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:556/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:556/test.jpg
http://255.255.255.255:563/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:563/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:563/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:563/test.jpg
http://255.255.255.255:587/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:587/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:587/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:587/test.jpg
http://255.255.255.255:601/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:601/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:601/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:601/test.jpg
http://255.255.255.255:636/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:636/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:636/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:636/test.jpg
http://255.255.255.255:993/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:993/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:993/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:993/test.jpg
http://255.255.255.255:995/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:995/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:995/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:995/test.jpg
http://255.255.255.255:2049/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:2049/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:2049/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:2049/test.jpg
http://255.255.255.255:3659/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:3659/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:3659/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:3659/test.jpg
http://255.255.255.255:4045/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:4045/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:4045/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:4045/test.jpg
http://255.255.255.255:6000/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:6000/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:6000/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:6000/test.jpg
http://255.255.255.255:6665/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:6665/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:6665/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:6665/test.jpg
http://255.255.255.255:6666/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:6666/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:6666/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:6666/test.jpg
http://255.255.255.255:6667/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:6667/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:6667/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:6667/test.jpg
http://255.255.255.255:6668/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:6668/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:6668/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:6668/test.jpg
http://255.255.255.255:6669/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:6669/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:6669/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:6669/test.jpg
http://255.255.255.255:65535/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:65535/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:65535/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:65535/test.jpg
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:65536/test.jpg
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:4294967295/test.jpg
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:4294967296/test.jpg
ftp://255.255.255.255/test.jpg - willSendRequest <NSURLRequest URL ftp://255.255.255.255/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+ftp://255.255.255.255/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for ftp://255.255.255.255/test.jpg
ftp://255.255.255.255/test.jpg - willSendRequest <NSURLRequest URL ftp://255.255.255.255/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+ftp://255.255.255.255/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for ftp://255.255.255.255:21/test.jpg
ftp://255.255.255.255:22/test.jpg - willSendRequest <NSURLRequest URL ftp://255.255.255.255:22/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+ftp://255.255.255.255:22/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for ftp://255.255.255.255:22/test.jpg
http://255.255.255.255:0/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:0/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255:0/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:0/test.jpg
http://255.255.255.255/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:80/test.jpg
http://255.255.255.255/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
+http://255.255.255.255/test.jpg - didFinishLoading
CONSOLE MESSAGE: line 32: PASS: error event fired for http://255.255.255.255:/test.jpg
This test attempts to change the src of an IMG tag to all black listed ports to confirm that each fires an error event. It also tries the FTP ports for exemptions.
diff --git a/third_party/WebKit/LayoutTests/security/block-test-no-port-expected.txt b/third_party/WebKit/LayoutTests/security/block-test-no-port-expected.txt
index 930a0ad..15b7a95 100644
--- a/third_party/WebKit/LayoutTests/security/block-test-no-port-expected.txt
+++ b/third_party/WebKit/LayoutTests/security/block-test-no-port-expected.txt
@@ -1,4 +1,5 @@
http://255.255.255.255/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255/test.jpg, main document URL block-test-no-port.html, http method GET> redirectResponse (null)
+http://255.255.255.255/test.jpg - didFinishLoading
This test attempts to change the src of an IMG tag to a blocked IP with no port to confirm that WebKit returns the correct error for it - blocked instead of cannot find. Due to the nature of this test, the results can only be processed automatically via DumpRenderTree. In addition, on some systems the results may depend on the behavior of the proxy.
diff --git a/third_party/WebKit/LayoutTests/svg/custom/bug79798.html b/third_party/WebKit/LayoutTests/svg/custom/bug79798.html
index 8ff1dcc..6e881e5 100644
--- a/third_party/WebKit/LayoutTests/svg/custom/bug79798.html
+++ b/third_party/WebKit/LayoutTests/svg/custom/bug79798.html
@@ -19,6 +19,7 @@
q.execCommand('formatBlock', 1, 'h1');
q.execCommand('formatBlock', 1, 'h1');
document.open();
+ document.close();
}
</script>
<object data="resources/bug79798.svg" id="root" onload="go()"/</object>
diff --git a/third_party/WebKit/LayoutTests/svg/custom/draw-image-crash.html b/third_party/WebKit/LayoutTests/svg/custom/draw-image-crash.html
index 8b7065a..3770985 100644
--- a/third_party/WebKit/LayoutTests/svg/custom/draw-image-crash.html
+++ b/third_party/WebKit/LayoutTests/svg/custom/draw-image-crash.html
@@ -6,7 +6,7 @@ This test passes if it does not crash and 'PASS' is printed.<br/>
if (window.testRunner)
testRunner.waitUntilDone();
-setTimeout(function() {
+window.onload = function() {
if (location.hash == '#done') {
document.write('PASS');
if (window.testRunner) {
@@ -17,7 +17,7 @@ setTimeout(function() {
location.hash = 'done';
window.location.reload();
}
-}, 0);
+}
</script>
</html>
diff --git a/third_party/WebKit/LayoutTests/svg/custom/resources/linkingCircle-f.svg b/third_party/WebKit/LayoutTests/svg/custom/resources/linkingCircle-f.svg
index 95b1b68..d78fd6a 100644
--- a/third_party/WebKit/LayoutTests/svg/custom/resources/linkingCircle-f.svg
+++ b/third_party/WebKit/LayoutTests/svg/custom/resources/linkingCircle-f.svg
@@ -4,7 +4,7 @@
<!-- linkingCircle-f.svg -->
<!-- Auxiliary file for linking tests. -->
<!-- ====================================================================== -->
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="linkingCircle-f.svg" width="480" height="360" onload="report()">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="linkingCircle-f.svg" width="480" height="360" onload="setTimeout(report, 0);">
<script>
function report() {
if (window.testRunner)
diff --git a/third_party/WebKit/LayoutTests/svg/dom/complex-svgView-specification.html b/third_party/WebKit/LayoutTests/svg/dom/complex-svgView-specification.html
index 0e38cc4..18ab4ec 100644
--- a/third_party/WebKit/LayoutTests/svg/dom/complex-svgView-specification.html
+++ b/third_party/WebKit/LayoutTests/svg/dom/complex-svgView-specification.html
@@ -1,5 +1,15 @@
<!DOCTYPE html>
<html>
+<script src="../../resources/run-after-display.js"></script>
+<script>
+if (window.testRunner)
+ testRunner.waitUntilDone();
+
+runAfterDisplay(function() {
+ if (window.testRunner)
+ testRunner.notifyDone();
+})
+</script>
<body style="margin: 0">
<iframe style="border: 0; display: block" width="120" height="120" src="resources/viewspec-target.svg#svgView(viewBox(0,0,100,50);preserveAspectRatio(xMinYMid slice);transform(translate(0 10) translate(25 25) rotate(45) translate(-25 -25) scale(0.7 0.7)))"/>
</body>
diff --git a/third_party/WebKit/LayoutTests/svg/wicd/test-rightsizing-a.xhtml b/third_party/WebKit/LayoutTests/svg/wicd/test-rightsizing-a.xhtml
index 4f23265..c4c837b 100644
--- a/third_party/WebKit/LayoutTests/svg/wicd/test-rightsizing-a.xhtml
+++ b/third_party/WebKit/LayoutTests/svg/wicd/test-rightsizing-a.xhtml
@@ -35,6 +35,9 @@
</p>
<p><br/><a href="javascript:history.back()">Back</a></p>
</div>
+ <script>
+ document.body.offsetLeft;
+ </script>
</body>
</html>
diff --git a/third_party/WebKit/LayoutTests/svg/wicd/test-rightsizing-b.xhtml b/third_party/WebKit/LayoutTests/svg/wicd/test-rightsizing-b.xhtml
index e50faa5..c8858ed 100644
--- a/third_party/WebKit/LayoutTests/svg/wicd/test-rightsizing-b.xhtml
+++ b/third_party/WebKit/LayoutTests/svg/wicd/test-rightsizing-b.xhtml
@@ -28,6 +28,15 @@
</p>
<p><br/><a href="javascript:history.back()">Back</a></p>
</div>
+ <script src="../../resources/run-after-display.js"></script>
+ <script>
+ if (window.testRunner)
+ testRunner.waitUntilDone();
+ runAfterDisplay(function() {
+ if (window.testRunner)
+ testRunner.notifyDone();
+ });
+ </script>
</body>
</html>
diff --git a/third_party/WebKit/LayoutTests/svg/wicd/test-scalable-background-image1.xhtml b/third_party/WebKit/LayoutTests/svg/wicd/test-scalable-background-image1.xhtml
index ada561d..2ca5b02 100644
--- a/third_party/WebKit/LayoutTests/svg/wicd/test-scalable-background-image1.xhtml
+++ b/third_party/WebKit/LayoutTests/svg/wicd/test-scalable-background-image1.xhtml
@@ -7,6 +7,16 @@
<link rel="stylesheet" type="text/css" href="resources/test-scalable-background-image1.css"/>
</head>
<body>
+ <script src="../../resources/run-after-display.js"></script>
+ <script>
+ if (window.testRunner)
+ testRunner.waitUntilDone();
+
+ runAfterDisplay(function() {
+ if (window.testRunner)
+ testRunner.notifyDone();
+ });
+ </script>
<h1>scalable CSS background</h1>
<h4>WICD Core 1.0 #11</h4>
<p>
diff --git a/third_party/WebKit/LayoutTests/svg/wicd/test-scalable-background-image2.xhtml b/third_party/WebKit/LayoutTests/svg/wicd/test-scalable-background-image2.xhtml
index b6f9da6..4a30d43 100644
--- a/third_party/WebKit/LayoutTests/svg/wicd/test-scalable-background-image2.xhtml
+++ b/third_party/WebKit/LayoutTests/svg/wicd/test-scalable-background-image2.xhtml
@@ -7,6 +7,16 @@
<link rel="stylesheet" type="text/css" href="resources/test-scalable-background-image2.css"/>
</head>
<body>
+ <script src="../../resources/run-after-display.js"></script>
+ <script>
+ if (window.testRunner)
+ testRunner.waitUntilDone();
+
+ runAfterDisplay(function() {
+ if (window.testRunner)
+ testRunner.notifyDone();
+ });
+ </script>
<h1>scalable fullscreen background</h1>
<h4>WICD Core 1.0 #12</h4>
<p>
diff --git a/third_party/WebKit/LayoutTests/webaudio/scriptprocessornode-rewrap.html b/third_party/WebKit/LayoutTests/webaudio/scriptprocessornode-rewrap.html
index 12bbdc5..e42e429 100644
--- a/third_party/WebKit/LayoutTests/webaudio/scriptprocessornode-rewrap.html
+++ b/third_party/WebKit/LayoutTests/webaudio/scriptprocessornode-rewrap.html
@@ -1,5 +1,6 @@
<!DOCTYPE html>
<html>
+<body>
<script src=../resources/js-test.js></script>
<script src="resources/compatibility.js"></script>
<script>
@@ -13,11 +14,8 @@ var sourceChannels = 2;
var inputChannels = 8;
var outputChannels = 6;
runJSNodeTest();
-var docElement = document.body ? document.body : document.documentElement;
-function initCF() {
- try { tCF122 = document.createElementNS("http://www.w3.org/1999/xhtml", "iframe"); } catch(e) {}
- try { docElement.appendChild(tCF122); } catch(e) {}
-}
-document.addEventListener("DOMContentLoaded", initCF, false);
+var i = document.createElement("iframe");
+document.body.appendChild(i);
</script>
+</body>
</html>
diff --git a/third_party/WebKit/LayoutTests/webaudio/scriptprocessornode-upmix2-8channel-input.html b/third_party/WebKit/LayoutTests/webaudio/scriptprocessornode-upmix2-8channel-input.html
index 1fb2be2..ab0bc0c 100644
--- a/third_party/WebKit/LayoutTests/webaudio/scriptprocessornode-upmix2-8channel-input.html
+++ b/third_party/WebKit/LayoutTests/webaudio/scriptprocessornode-upmix2-8channel-input.html
@@ -21,14 +21,11 @@ var sourceChannels = 2;
var inputChannels = 8;
var outputChannels = 6;
+window.jsTestIsAsync = true;
+
function runTest() {
- if (window.testRunner) {
+ if (window.testRunner)
testRunner.dumpAsText();
- testRunner.waitUntilDone();
- }
-
- window.jsTestIsAsync = true;
-
runJSNodeTest();
}
diff --git a/third_party/WebKit/Source/bindings/core/v8/ScriptController.cpp b/third_party/WebKit/Source/bindings/core/v8/ScriptController.cpp
index a3facd5..2e3a2a9 100644
--- a/third_party/WebKit/Source/bindings/core/v8/ScriptController.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/ScriptController.cpp
@@ -66,6 +66,7 @@
#include "core/loader/DocumentLoader.h"
#include "core/loader/FrameLoader.h"
#include "core/loader/FrameLoaderClient.h"
+#include "core/loader/ProgressTracker.h"
#include "core/plugins/PluginView.h"
#include "platform/NotImplemented.h"
#include "platform/TraceEvent.h"
@@ -542,6 +543,9 @@ bool ScriptController::executeScriptIfJavaScriptURL(const KURL& url)
|| !m_frame->document()->contentSecurityPolicy()->allowJavaScriptURLs(m_frame->document()->url(), eventHandlerPosition().m_line))
return true;
+ if (m_frame->loader().stateMachine()->isDisplayingInitialEmptyDocument())
+ m_frame->loader().progress().progressStarted();
+
// We need to hold onto the LocalFrame here because executing script can
// destroy the frame.
RefPtrWillBeRawPtr<LocalFrame> protect(m_frame.get());
diff --git a/third_party/WebKit/Source/core/dom/Document.cpp b/third_party/WebKit/Source/core/dom/Document.cpp
index 3d9b2ff..748f304 100644
--- a/third_party/WebKit/Source/core/dom/Document.cpp
+++ b/third_party/WebKit/Source/core/dom/Document.cpp
@@ -2490,8 +2490,10 @@ void Document::implicitClose()
ASSERT(!inStyleRecalc());
if (processingLoadEvent() || !m_parser)
return;
- if (frame() && frame()->navigationScheduler().locationChangePending())
+ if (frame() && frame()->navigationScheduler().locationChangePending()) {
+ suppressLoadEvent();
return;
+ }
// The call to dispatchWindowLoadEvent can detach the LocalDOMWindow and cause it (and its
// attached Document) to be destroyed.
@@ -4424,12 +4426,16 @@ void Document::applyXSLTransform(ProcessingInstruction* pi)
String resultMIMEType;
String newSource;
String resultEncoding;
- if (!processor->transformToString(this, resultMIMEType, newSource, resultEncoding))
+ setParsing(true);
+ if (!processor->transformToString(this, resultMIMEType, newSource, resultEncoding)) {
+ setParsing(false);
return;
+ }
// FIXME: If the transform failed we should probably report an error (like Mozilla does).
LocalFrame* ownerFrame = frame();
processor->createDocumentFromSource(newSource, resultEncoding, resultMIMEType, this, ownerFrame);
InspectorInstrumentation::frameDocumentUpdated(ownerFrame);
+ setParsing(false);
}
void Document::setTransformSource(PassOwnPtr<TransformSource> source)
diff --git a/third_party/WebKit/Source/core/dom/Document.h b/third_party/WebKit/Source/core/dom/Document.h
index d81b946..060a5f34 100644
--- a/third_party/WebKit/Source/core/dom/Document.h
+++ b/third_party/WebKit/Source/core/dom/Document.h
@@ -904,6 +904,7 @@ public:
bool processingLoadEvent() const { return m_loadEventProgress == LoadEventInProgress; }
bool loadEventFinished() const { return m_loadEventProgress >= LoadEventCompleted; }
bool unloadStarted() const { return m_loadEventProgress >= PageHideInProgress; }
+ void suppressLoadEvent() { m_loadEventProgress = LoadEventCompleted; }
void setContainsPlugins() { m_containsPlugins = true; }
bool containsPlugins() const { return m_containsPlugins; }
diff --git a/third_party/WebKit/Source/core/dom/ProcessingInstruction.cpp b/third_party/WebKit/Source/core/dom/ProcessingInstruction.cpp
index 4b59f89..d011233 100644
--- a/third_party/WebKit/Source/core/dom/ProcessingInstruction.cpp
+++ b/third_party/WebKit/Source/core/dom/ProcessingInstruction.cpp
@@ -26,6 +26,7 @@
#include "core/css/MediaList.h"
#include "core/css/StyleSheetContents.h"
#include "core/dom/Document.h"
+#include "core/dom/IncrementLoadEventDelayCount.h"
#include "core/dom/StyleEngine.h"
#include "core/fetch/CSSStyleSheetResource.h"
#include "core/fetch/FetchRequest.h"
@@ -219,6 +220,7 @@ void ProcessingInstruction::setXSLStyleSheet(const String& href, const KURL& bas
ASSERT(m_isXSL);
m_sheet = XSLStyleSheet::create(this, href, baseURL);
RefPtrWillBeRawPtr<Document> protect(&document());
+ OwnPtr<IncrementLoadEventDelayCount> delay = IncrementLoadEventDelayCount::create(document());
parseStyleSheet(sheet);
}
diff --git a/third_party/WebKit/Source/core/fetch/Resource.cpp b/third_party/WebKit/Source/core/fetch/Resource.cpp
index ad667a4..a6b05f2 100644
--- a/third_party/WebKit/Source/core/fetch/Resource.cpp
+++ b/third_party/WebKit/Source/core/fetch/Resource.cpp
@@ -265,11 +265,10 @@ void Resource::finishOnePart()
checkNotify();
}
-void Resource::finish(double finishTime)
+void Resource::finish()
{
ASSERT(!m_resourceToRevalidate);
ASSERT(!errorOccurred());
- m_loadFinishTime = finishTime;
finishOnePart();
if (!errorOccurred())
m_status = Cached;
diff --git a/third_party/WebKit/Source/core/fetch/Resource.h b/third_party/WebKit/Source/core/fetch/Resource.h
index 985222b..2a69262 100644
--- a/third_party/WebKit/Source/core/fetch/Resource.h
+++ b/third_party/WebKit/Source/core/fetch/Resource.h
@@ -175,7 +175,8 @@ public:
// Computes the status of an object after loading.
// Updates the expire date on the cache entry file
- void finish(double finishTime = 0.0);
+ void setLoadFinishTime(double finishTime) { m_loadFinishTime = finishTime; }
+ void finish();
// FIXME: Remove the stringless variant once all the callsites' error messages are updated.
bool passesAccessControlCheck(SecurityOrigin*);
diff --git a/third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp b/third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp
index f166650..5b56f90 100644
--- a/third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp
+++ b/third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp
@@ -1165,21 +1165,11 @@ void ResourceFetcher::redirectReceived(Resource* resource, const ResourceRespons
it->value->addRedirect(redirectResponse);
}
-void ResourceFetcher::didLoadResource(Resource* resource)
+void ResourceFetcher::didLoadResource()
{
RefPtr<DocumentLoader> protectDocumentLoader(m_documentLoader);
RefPtrWillBeRawPtr<Document> protectDocument(m_document.get());
- if (resource && resource->response().isHTTP() && ((!resource->errorOccurred() && !resource->wasCanceled()) || resource->response().httpStatusCode() == 304) && document()) {
- ResourceTimingInfoMap::iterator it = m_resourceTimingInfoMap.find(resource);
- if (it != m_resourceTimingInfoMap.end()) {
- RefPtr<ResourceTimingInfo> info = it->value;
- m_resourceTimingInfoMap.remove(it);
- populateResourceTiming(info.get(), resource, false);
- reportResourceTiming(info.get(), document(), resource->type() == Resource::MainResource);
- }
- }
-
if (frame())
frame()->loader().loadDone();
scheduleDocumentResourcesGC();
@@ -1316,9 +1306,19 @@ void ResourceFetcher::clearPreloads()
m_preloads.clear();
}
-void ResourceFetcher::didFinishLoading(const Resource* resource, double finishTime, int64_t encodedDataLength)
+void ResourceFetcher::didFinishLoading(Resource* resource, double finishTime, int64_t encodedDataLength)
{
TRACE_EVENT_ASYNC_END0("net", "Resource", resource);
+
+ if (resource && resource->response().isHTTP() && resource->response().httpStatusCode() < 400 && document()) {
+ ResourceTimingInfoMap::iterator it = m_resourceTimingInfoMap.find(resource);
+ if (it != m_resourceTimingInfoMap.end()) {
+ RefPtr<ResourceTimingInfo> info = it->value;
+ m_resourceTimingInfoMap.remove(it);
+ populateResourceTiming(info.get(), resource, false);
+ reportResourceTiming(info.get(), document(), resource->type() == Resource::MainResource);
+ }
+ }
context().dispatchDidFinishLoading(m_documentLoader, resource->identifier(), finishTime, encodedDataLength);
}
diff --git a/third_party/WebKit/Source/core/fetch/ResourceFetcher.h b/third_party/WebKit/Source/core/fetch/ResourceFetcher.h
index a285df7..3c68ff3 100644
--- a/third_party/WebKit/Source/core/fetch/ResourceFetcher.h
+++ b/third_party/WebKit/Source/core/fetch/ResourceFetcher.h
@@ -136,9 +136,9 @@ public:
// ResourceLoaderHost
virtual void incrementRequestCount(const Resource*) override;
virtual void decrementRequestCount(const Resource*) override;
- virtual void didLoadResource(Resource*) override;
+ virtual void didLoadResource() override;
virtual void redirectReceived(Resource*, const ResourceResponse&) override;
- virtual void didFinishLoading(const Resource*, double finishTime, int64_t encodedDataLength) override;
+ virtual void didFinishLoading(Resource*, double finishTime, int64_t encodedDataLength) override;
virtual void didChangeLoadingPriority(const Resource*, ResourceLoadPriority, int intraPriorityValue) override;
virtual void didFailLoading(const Resource*, const ResourceError&) override;
virtual void willSendRequest(unsigned long identifier, ResourceRequest&, const ResourceResponse& redirectResponse, const FetchInitiatorInfo&) override;
diff --git a/third_party/WebKit/Source/core/fetch/ResourceLoader.cpp b/third_party/WebKit/Source/core/fetch/ResourceLoader.cpp
index 9cf69a6..36af6b1 100644
--- a/third_party/WebKit/Source/core/fetch/ResourceLoader.cpp
+++ b/third_party/WebKit/Source/core/fetch/ResourceLoader.cpp
@@ -102,8 +102,8 @@ void ResourceLoader::releaseResources()
{
ASSERT(m_state != Terminated);
ASSERT(m_notifiedLoadComplete);
- m_requestCountTracker.clear();
- m_host->didLoadResource(m_resource);
+ ASSERT(!m_requestCountTracker);
+ m_host->didLoadResource();
if (m_state == Terminated)
return;
m_resource->clearLoader();
@@ -233,7 +233,7 @@ void ResourceLoader::didFinishLoadingOnePart(double finishTime, int64_t encodedD
if (m_notifiedLoadComplete)
return;
- m_notifiedLoadComplete = true;
+ didComplete();
m_host->didFinishLoading(m_resource, finishTime, encodedDataLength);
}
@@ -286,7 +286,7 @@ void ResourceLoader::cancel(const ResourceError& error)
}
if (!m_notifiedLoadComplete) {
- m_notifiedLoadComplete = true;
+ didComplete();
m_host->didFailLoading(m_resource, nonNullError);
}
@@ -423,7 +423,7 @@ void ResourceLoader::didReceiveResponse(blink::WebURLLoader*, const blink::WebUR
m_state = Finishing;
if (!m_notifiedLoadComplete) {
- m_notifiedLoadComplete = true;
+ didComplete();
m_host->didFailLoading(m_resource, ResourceError::cancelledError(m_request.url()));
}
@@ -470,10 +470,11 @@ void ResourceLoader::didFinishLoading(blink::WebURLLoader*, double finishTime, i
RefPtrWillBeRawPtr<ResourceLoader> protect(this);
ResourcePtr<Resource> protectResource(m_resource);
m_state = Finishing;
+ m_resource->setLoadFinishTime(finishTime);
didFinishLoadingOnePart(finishTime, encodedDataLength);
if (m_state == Terminated)
return;
- m_resource->finish(finishTime);
+ m_resource->finish();
// If the load has been cancelled by a delegate in response to didFinishLoad(), do not release
// the resources a second time, they have been released by cancel.
@@ -495,7 +496,7 @@ void ResourceLoader::didFail(blink::WebURLLoader*, const blink::WebURLError& err
m_resource->setResourceError(error);
if (!m_notifiedLoadComplete) {
- m_notifiedLoadComplete = true;
+ didComplete();
m_host->didFailLoading(m_resource, error);
}
if (m_state == Terminated)
@@ -549,6 +550,12 @@ void ResourceLoader::requestSynchronously()
didFinishLoading(0, monotonicallyIncreasingTime(), encodedDataLength);
}
+void ResourceLoader::didComplete()
+{
+ m_notifiedLoadComplete = true;
+ m_requestCountTracker.clear();
+}
+
ResourceRequest& ResourceLoader::applyOptions(ResourceRequest& request) const
{
request.setAllowStoredCredentials(m_options.allowCredentials == AllowStoredCredentials);
diff --git a/third_party/WebKit/Source/core/fetch/ResourceLoader.h b/third_party/WebKit/Source/core/fetch/ResourceLoader.h
index 362b5c1..b91cc75 100644
--- a/third_party/WebKit/Source/core/fetch/ResourceLoader.h
+++ b/third_party/WebKit/Source/core/fetch/ResourceLoader.h
@@ -108,6 +108,8 @@ private:
bool responseNeedsAccessControlCheck() const;
+ void didComplete();
+
ResourceRequest& applyOptions(ResourceRequest&) const;
OwnPtr<blink::WebURLLoader> m_loader;
diff --git a/third_party/WebKit/Source/core/fetch/ResourceLoaderHost.h b/third_party/WebKit/Source/core/fetch/ResourceLoaderHost.h
index 3062ea8..2386134 100644
--- a/third_party/WebKit/Source/core/fetch/ResourceLoaderHost.h
+++ b/third_party/WebKit/Source/core/fetch/ResourceLoaderHost.h
@@ -47,10 +47,10 @@ class ResourceLoaderHost : public WillBeGarbageCollectedMixin {
public:
virtual void incrementRequestCount(const Resource*) = 0;
virtual void decrementRequestCount(const Resource*) = 0;
- virtual void didLoadResource(Resource*) = 0;
+ virtual void didLoadResource() = 0;
virtual void redirectReceived(Resource*, const ResourceResponse&) = 0;
- virtual void didFinishLoading(const Resource*, double finishTime, int64_t encodedDataLength) = 0;
+ virtual void didFinishLoading(Resource*, double finishTime, int64_t encodedDataLength) = 0;
virtual void didChangeLoadingPriority(const Resource*, ResourceLoadPriority, int intraPriorityValue) = 0;
virtual void didFailLoading(const Resource*, const ResourceError&) = 0;
diff --git a/third_party/WebKit/Source/core/loader/FrameFetchContext.cpp b/third_party/WebKit/Source/core/loader/FrameFetchContext.cpp
index 57d55d5..313fab1 100644
--- a/third_party/WebKit/Source/core/loader/FrameFetchContext.cpp
+++ b/third_party/WebKit/Source/core/loader/FrameFetchContext.cpp
@@ -186,6 +186,7 @@ void FrameFetchContext::dispatchDidFinishLoading(DocumentLoader* loader, unsigne
void FrameFetchContext::dispatchDidFail(DocumentLoader* loader, unsigned long identifier, const ResourceError& error, bool isInternalRequest)
{
m_frame->loader().progress().completeProgress(identifier);
+ m_frame->loader().client()->dispatchDidFinishLoading(loader, identifier);
TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "ResourceFinish", "data", InspectorResourceFinishEvent::data(identifier, 0, true));
// FIXME(361045): remove InspectorInstrumentation calls once DevTools Timeline migrates to tracing.
InspectorInstrumentation::didFailLoading(m_frame, identifier, error);
diff --git a/third_party/WebKit/Source/core/loader/FrameLoader.cpp b/third_party/WebKit/Source/core/loader/FrameLoader.cpp
index e01198c..c614d65 100644
--- a/third_party/WebKit/Source/core/loader/FrameLoader.cpp
+++ b/third_party/WebKit/Source/core/loader/FrameLoader.cpp
@@ -243,8 +243,10 @@ bool FrameLoader::closeURL()
void FrameLoader::didExplicitOpen()
{
// Calling document.open counts as committing the first real document load.
- if (!m_stateMachine.committedFirstRealDocumentLoad())
+ if (!m_stateMachine.committedFirstRealDocumentLoad()) {
m_stateMachine.advanceTo(FrameLoaderStateMachine::CommittedFirstRealLoad);
+ m_progressTracker->progressStarted();
+ }
// Prevent window.open(url) -- eg window.open("about:blank") -- from blowing away results
// from a subsequent window.document.open / window.document.write call.
@@ -961,6 +963,7 @@ FrameLoadType FrameLoader::loadType() const
return m_loadType;
}
+#if defined(ENABLE_LOAD_COMPLETION_HACKS)
// This function is an incomprehensible mess and is only used in checkLoadCompleteForThisFrame.
// If you're thinking of using it elsewhere, stop right now and reconsider your life.
static bool isDocumentDoneLoading(Document* document)
@@ -969,10 +972,8 @@ static bool isDocumentDoneLoading(Document* document)
return true;
if (document->loader()->isLoadingMainResource())
return false;
- if (!document->loadEventFinished()) {
- if (document->loader()->isLoading() || document->isDelayingLoadEvent())
- return false;
- }
+ if (!document->loadEventFinished())
+ return false;
if (document->fetcher()->requestCount())
return false;
if (document->processingLoadEvent())
@@ -981,6 +982,7 @@ static bool isDocumentDoneLoading(Document* document)
return false;
return true;
}
+#endif
bool FrameLoader::checkLoadCompleteForThisFrame()
{
@@ -1016,8 +1018,16 @@ bool FrameLoader::checkLoadCompleteForThisFrame()
return true;
if (m_provisionalDocumentLoader || !m_documentLoader)
return false;
+
+#if defined(ENABLE_LOAD_COMPLETION_HACKS)
if (!isDocumentDoneLoading(m_frame->document()) && !m_inStopAllLoaders)
return false;
+#else
+ if (m_inStopAllLoaders)
+ m_frame->document()->suppressLoadEvent();
+ if (!m_frame->document()->loadEventFinished())
+ return false;
+#endif
m_state = FrameStateComplete;
@@ -1276,6 +1286,8 @@ void FrameLoader::loadWithNavigationAction(const NavigationAction& action, Frame
if ((!m_policyDocumentLoader->shouldContinueForNavigationPolicy(request, shouldCheckMainWorldContentSecurityPolicy, isTransitionNavigation) || !shouldClose()) && m_policyDocumentLoader) {
m_policyDocumentLoader->detachFromFrame();
m_policyDocumentLoader = nullptr;
+ if (!m_stateMachine.committedFirstRealDocumentLoad())
+ m_state = FrameStateComplete;
checkCompleted();
return;
}
diff --git a/third_party/WebKit/Source/core/loader/NavigationScheduler.cpp b/third_party/WebKit/Source/core/loader/NavigationScheduler.cpp
index 6429a41..f313432 100644
--- a/third_party/WebKit/Source/core/loader/NavigationScheduler.cpp
+++ b/third_party/WebKit/Source/core/loader/NavigationScheduler.cpp
@@ -150,7 +150,7 @@ public:
class ScheduledLocationChange final : public ScheduledURLNavigation {
public:
ScheduledLocationChange(Document* originDocument, const String& url, bool lockBackForwardList)
- : ScheduledURLNavigation(0.0, originDocument, url, lockBackForwardList, true) { }
+ : ScheduledURLNavigation(0.0, originDocument, url, lockBackForwardList, !protocolIsJavaScript(url)) { }
};
class ScheduledReload final : public ScheduledNavigation {
diff --git a/third_party/WebKit/Source/web/tests/ActivityLoggerTest.cpp b/third_party/WebKit/Source/web/tests/ActivityLoggerTest.cpp
index 85ced5b..a687176 100644
--- a/third_party/WebKit/Source/web/tests/ActivityLoggerTest.cpp
+++ b/third_party/WebKit/Source/web/tests/ActivityLoggerTest.cpp
@@ -132,7 +132,8 @@ TEST_F(ActivityLoggerTest, ScriptElement)
"script = document.createElement('script');"
"script.src = 'data:text/javascript;charset=utf-8,';"
"document.body.appendChild(script);"
- "document.write('<body><script src=\\\'data:text/javascript;charset=utf-8,\\\'></script></body>');";
+ "document.write('<body><script src=\\\'data:text/javascript;charset=utf-8,\\\'></script></body>');"
+ "document.close();";
const char* expectedActivities =
"blinkAddElement | script | data:text/javascript;charset=utf-8,\n"
"blinkAddElement | script | \n"
@@ -157,7 +158,8 @@ TEST_F(ActivityLoggerTest, IFrameElement)
"iframe = document.createElement('iframe');"
"iframe.src = 'data:text/html;charset=utf-8,';"
"document.body.appendChild(iframe);"
- "document.write('<body><iframe src=\\\'data:text/html;charset=utf-8,\\\'></iframe></body>');";
+ "document.write('<body><iframe src=\\\'data:text/html;charset=utf-8,\\\'></iframe></body>');"
+ "document.close();";
const char* expectedActivities =
"blinkAddElement | iframe | data:text/html;charset=utf-8,\n"
"blinkRequestResource | Main resource | data:text/html;charset=utf-8,\n"
@@ -183,7 +185,8 @@ TEST_F(ActivityLoggerTest, AnchorElement)
"a = document.createElement('a');"
"a.href = 'data:text/css;charset=utf-8,';"
"document.body.appendChild(a);"
- "document.write('<body><a href=\\\'data:text/css;charset=utf-8,\\\'></a></body>');";
+ "document.write('<body><a href=\\\'data:text/css;charset=utf-8,\\\'></a></body>');"
+ "document.close();";
const char* expectedActivities =
"blinkAddElement | a | data:text/css;charset=utf-8,\n"
"blinkAddElement | a | \n"
@@ -207,7 +210,8 @@ TEST_F(ActivityLoggerTest, LinkElement)
"link.rel = 'stylesheet';"
"link.href = 'data:text/css;charset=utf-8,';"
"document.body.appendChild(link);"
- "document.write('<body><link rel=\\\'stylesheet\\\' href=\\\'data:text/css;charset=utf-8,\\\'></link></body>');";
+ "document.write('<body><link rel=\\\'stylesheet\\\' href=\\\'data:text/css;charset=utf-8,\\\'></link></body>');"
+ "document.close();";
const char* expectedActivities =
"blinkAddElement | link | stylesheet | data:text/css;charset=utf-8,\n"
"blinkRequestResource | CSS stylesheet | data:text/css;charset=utf-8,\n"
@@ -234,7 +238,8 @@ TEST_F(ActivityLoggerTest, InputElement)
"input.type = 'submit';"
"input.formAction = 'data:text/html;charset=utf-8,';"
"document.body.appendChild(input);"
- "document.write('<body><input type=\\\'submit\\\' formaction=\\\'data:text/html;charset=utf-8,\\\'></input></body>');";
+ "document.write('<body><input type=\\\'submit\\\' formaction=\\\'data:text/html;charset=utf-8,\\\'></input></body>');"
+ "document.close();";
const char* expectedActivities =
"blinkAddElement | input | submit | data:text/html;charset=utf-8,\n"
"blinkAddElement | input | | \n"
@@ -259,7 +264,8 @@ TEST_F(ActivityLoggerTest, ButtonElement)
"button.formMethod = 'post';"
"button.formAction = 'data:text/html;charset=utf-8,';"
"document.body.appendChild(button);"
- "document.write('<body><button type=\\\'submit\\\' formmethod=\\\'post\\\' formaction=\\\'data:text/html;charset=utf-8,\\\'></button></body>');";
+ "document.write('<body><button type=\\\'submit\\\' formmethod=\\\'post\\\' formaction=\\\'data:text/html;charset=utf-8,\\\'></button></body>');"
+ "document.close();";
const char* expectedActivities =
"blinkAddElement | button | submit | post | data:text/html;charset=utf-8,\n"
"blinkAddElement | button | | | \n"
@@ -283,7 +289,8 @@ TEST_F(ActivityLoggerTest, FormElement)
"form.method = 'post';"
"form.action = 'data:text/html;charset=utf-8,';"
"document.body.appendChild(form);"
- "document.write('<body><form method=\\\'post\\\' action=\\\'data:text/html;charset=utf-8,\\\'></form></body>');";
+ "document.write('<body><form method=\\\'post\\\' action=\\\'data:text/html;charset=utf-8,\\\'></form></body>');"
+ "document.close();";
const char* expectedActivities =
"blinkAddElement | form | post | data:text/html;charset=utf-8,\n"
"blinkAddElement | form | | \n"
@@ -499,6 +506,7 @@ TEST_F(ActivityLoggerTest, RequestResource)
"document.write('<img src=\\\'data:text/html;charset=utf-8,B\\\'></img>');"
"document.write('<link rel=\\\'stylesheet\\\' href=\\\'data:text/html;charset=utf-8,C\\\'></link>');"
"document.write('<script src=\\\'data:text/html;charset=utf-8,D\\\'></script>');"
+ "document.close();"
"var xhr = new XMLHttpRequest(); xhr.open('GET', 'data:text/html;charset=utf-8,E'); xhr.send();";
const char* expectedActivities =
"blinkAddElement | iframe | data:text/html;charset=utf-8,A\n"
diff --git a/third_party/WebKit/Source/web/tests/WebFrameTest.cpp b/third_party/WebKit/Source/web/tests/WebFrameTest.cpp
index d72a9e8..475e975 100644
--- a/third_party/WebKit/Source/web/tests/WebFrameTest.cpp
+++ b/third_party/WebKit/Source/web/tests/WebFrameTest.cpp
@@ -5328,7 +5328,7 @@ TEST_F(WebFrameTest, DidWriteToInitialDocumentBeforeModalDialog)
// initial empty document state of the state machine. We normally set a
// timer to notify the client.
newView->mainFrame()->executeScript(
- WebScriptSource("window.opener.document.write('Modified');"));
+ WebScriptSource("window.opener.document.write('Modified'); window.opener.document.close();"));
EXPECT_FALSE(webFrameClient.m_didAccessInitialDocument);
// Make sure that a modal dialog forces us to notify right away.