Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(90)

Unified Diff: third_party/WebKit/LayoutTests/http/tests/loading/doc-write-sync-third-party-script-reload.html

Issue 1883873002: Do not block document.written scripts in page reloads (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removed comments from test and added spaces between parameters. Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/LayoutTests/http/tests/loading/doc-write-sync-third-party-script-reload.html
diff --git a/third_party/WebKit/LayoutTests/http/tests/loading/doc-write-sync-third-party-script-reload.html b/third_party/WebKit/LayoutTests/http/tests/loading/doc-write-sync-third-party-script-reload.html
new file mode 100644
index 0000000000000000000000000000000000000000..f4d03d2f633c1f5e32305518b4c9c5fe57127e26
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/http/tests/loading/doc-write-sync-third-party-script-reload.html
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<script src="../resources/testharness.js"></script>
+<script src="../resources/testharnessreport.js"></script>
+<script>
+ var reloadTestSuccess = false;
+</script>
+
+<script>
+ test(function () {
+ assert_true(window.internals !== null);
+ }, "window.internals is required for the test to run");
+
+ internals.settings.setDisallowFetchForDocWrittenScriptsInMainFrameOnSlowConnections(true);
+ internals.setNetworkStateNotifierTestOnly(true);
+ internals.setNetworkConnectionInfo('cellular2g', 1.0);
+ internals.evictAllResources();
+
+ window.addEventListener('beforeunload', function() {
+ internals.settings.setDisallowFetchForDocWrittenScriptsInMainFrameOnSlowConnections(false);
+ internals.setNetworkStateNotifierTestOnly(false);
+ // Remove localStorage items, just in case they haven't been
+ // already removed, due to test failure.
+ if (window.localStorage.getItem("errorCount") !== null) {
+ window.localStorage.removeItem("errorCount");
+ }
+
+ if (window.localStorage.getItem("successCount") !== null) {
+ window.localStorage.removeItem("successCount");
+ }
+ }, false);
+
+ if (window.localStorage.getItem("errorCount") === null) {
+ window.localStorage.setItem("errorCount", 0);
+ }
+
+ if (window.localStorage.getItem("successCount") === null) {
+ window.localStorage.setItem("successCount", 0);
+ }
+
+ var crossOrigin = 'http://localhost:8000';
+ var filePath = '/loading/resources/js-loaded.js?reload';
+
+ // First time the script will be blocked and onError will reload the page.
+ // On reload the script should not be blocked.
+ // This tests two types of reload, one with and one without cache bypass.
+ // The script should not be blocked in both cases.
+ src = crossOrigin + filePath;
+ document.write('<scr' + 'ipt src="' + src + '" onload="test(successTest,\'Load Success\')" onError="test(errorTest,\'Load Error\')"></scr' + 'ipt>');
+
+ var successTest = function() {
+ assert_equals(+window.localStorage.getItem("errorCount"), 1);
+
+ var successCount = +window.localStorage.getItem("successCount");
+ assert_greater_than_equal(successCount, 0);
+
+ if (successCount == 0)
+ {
+ window.localStorage.setItem("successCount", 1);
+ internals.forceReload(true);
+ return;
+ }
+
+ assert_equals(successCount, 1);
+ window.localStorage.removeItem("errorCount");
+ window.localStorage.removeItem("successCount");
+ reloadTestSuccess=true;
+ }
+
+ var errorTest = function() {
+ assert_equals(+window.localStorage.getItem("errorCount"), 0);
+ assert_equals(+window.localStorage.getItem("successCount"), 0);
+ window.localStorage.setItem("errorCount", 1);
+ internals.forceReload(false);
+ }
+
+</script>
+
+<script>
+ test(function () {
+ assert_true(reloadTestSuccess);
+ }, "cross origin doc.written scripts are not blocked in a page reload");
+</script>

Powered by Google App Engine
This is Rietveld 408576698