From 279369534d529c705a4d4579fb93a1a7ae877622 Mon Sep 17 00:00:00 2001 From: Domenic Denicola Date: Fri, 6 Aug 2021 20:02:35 +0000 Subject: [PATCH] Tentative WPTs for overlapping navigations/traverals See https://github.com/whatwg/html/issues/6927. This will help app history which needs its own versions of these tests. Change-Id: I84c67c6f23149d9c106f011ec13807d68d749633 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3067883 Reviewed-by: Nate Chapin Commit-Queue: Domenic Denicola Cr-Commit-Position: refs/heads/master@{#909433} --- third_party/blink/web_tests/TestExpectations | 4 + .../tentative/README.md | 13 ++ ...cross-document-nav-cross-document-nav.html | 30 ++++ ...document-nav-cross-document-traversal.html | 38 ++++ .../cross-document-nav-same-document-nav.html | 44 +++++ ...-document-nav-same-document-traversal.html | 36 ++++ .../tentative/cross-document-nav-stop.html | 21 +++ ...document-traversal-cross-document-nav.html | 78 ++++++++ ...nt-traversal-cross-document-traversal.html | 169 ++++++++++++++++++ ...t-traversal-same-document-nav-expected.txt | 5 + ...-document-traversal-same-document-nav.html | 69 +++++++ ...ersal-same-document-traversal-expected.txt | 5 + ...ent-traversal-same-document-traversal.html | 108 +++++++++++ .../cross-document-traversal-stop.html | 40 +++++ .../tentative/resources/helpers.mjs | 45 +++++ .../tentative/resources/slow.py | 7 + .../same-document-nav-cross-document-nav.html | 41 +++++ ...document-nav-cross-document-traversal.html | 70 ++++++++ .../same-document-nav-same-document-nav.html | 61 +++++++ ...-document-nav-same-document-traversal.html | 55 ++++++ .../tentative/same-document-nav-stop.html | 28 +++ ...document-traversal-cross-document-nav.html | 44 +++++ ...nt-traversal-cross-document-traversal.html | 98 ++++++++++ ...t-traversal-same-document-nav-expected.txt | 5 + ...-document-traversal-same-document-nav.html | 59 ++++++ ...al-same-document-traversal-hashchange.html | 164 +++++++++++++++++ ...sal-same-document-traversal-pushstate.html | 153 ++++++++++++++++ .../same-document-traversal-stop.html | 35 ++++ 28 files changed, 1525 insertions(+) create mode 100644 third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/README.md create mode 100644 third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-nav-cross-document-nav.html create mode 100644 third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-nav-cross-document-traversal.html create mode 100644 third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-nav-same-document-nav.html create mode 100644 third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-nav-same-document-traversal.html create mode 100644 third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-nav-stop.html create mode 100644 third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-cross-document-nav.html create mode 100644 third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-cross-document-traversal.html create mode 100644 third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-same-document-nav-expected.txt create mode 100644 third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-same-document-nav.html create mode 100644 third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-same-document-traversal-expected.txt create mode 100644 third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-same-document-traversal.html create mode 100644 third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-stop.html create mode 100644 third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/resources/helpers.mjs create mode 100644 third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/resources/slow.py create mode 100644 third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-nav-cross-document-nav.html create mode 100644 third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-nav-cross-document-traversal.html create mode 100644 third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-nav-same-document-nav.html create mode 100644 third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-nav-same-document-traversal.html create mode 100644 third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-nav-stop.html create mode 100644 third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-traversal-cross-document-nav.html create mode 100644 third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-traversal-cross-document-traversal.html create mode 100644 third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-traversal-same-document-nav-expected.txt create mode 100644 third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-traversal-same-document-nav.html create mode 100644 third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-traversal-same-document-traversal-hashchange.html create mode 100644 third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-traversal-same-document-traversal-pushstate.html create mode 100644 third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-traversal-stop.html diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations index 87f8068db5d9d1..bbeadc0334c95a 100644 --- a/third_party/blink/web_tests/TestExpectations +++ b/third_party/blink/web_tests/TestExpectations @@ -2055,6 +2055,10 @@ crbug.com/706350 external/wpt/html/browsers/browsing-the-web/history-traversal/w crbug.com/706350 external/wpt/html/browsers/browsing-the-web/history-traversal/window-name-after-same-origin-aux-frame-navigation.sub.html [ Skip ] crbug.com/706350 external/wpt/html/browsers/browsing-the-web/history-traversal/window-name-after-same-origin-sub-frame-navigation.sub.html [ Skip ] +crbug.com/1236768 external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-cross-document-traversal.html [ Timeout ] +crbug.com/1236768 external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-traversal-same-document-traversal-hashchange.html [ Timeout ] +crbug.com/1236768 external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/same-document-traversal-same-document-traversal-pushstate.html [ Timeout ] + crbug.com/876485 fast/performance/performance-measure-null-exception.html [ Failure ] crbug.com/713587 external/wpt/css/css-ui/caret-color-006.html [ Skip ] diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/README.md b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/README.md new file mode 100644 index 00000000000000..02d2e94a0dff2f --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/README.md @@ -0,0 +1,13 @@ +# Overlapping navigation and traversal tests + +While developing [app history](https://wicg.github.io/app-history/), @domenic +noticed that cancelation of navigations and history traversals is not very +well-defined in the spec. + +On the spec side, this will probably be fixed as part of, or after, the +[session history rewrite](https://github.com/whatwg/html/pull/6315). + +In the meantime, this directory contains tests which try to match most browsers, +or picks one of the potential behaviors. + + discusses these results. diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-nav-cross-document-nav.html b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-nav-cross-document-nav.html new file mode 100644 index 00000000000000..99d9a8fbb19996 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-nav-cross-document-nav.html @@ -0,0 +1,30 @@ + + +Cross-document navigation after a cross-document navigation + + + + + + + diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-nav-cross-document-traversal.html b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-nav-cross-document-traversal.html new file mode 100644 index 00000000000000..eed07f4c77bc7c --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-nav-cross-document-traversal.html @@ -0,0 +1,38 @@ + + +Cross-document traversal during cross-document navigation + + + + + + + diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-nav-same-document-nav.html b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-nav-same-document-nav.html new file mode 100644 index 00000000000000..1b2aeaecfcc6f2 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-nav-same-document-nav.html @@ -0,0 +1,44 @@ + + +Cross-document navigation after a same-document navigation + + + + + + + diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-nav-same-document-traversal.html b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-nav-same-document-traversal.html new file mode 100644 index 00000000000000..fac6624091ab01 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-nav-same-document-traversal.html @@ -0,0 +1,36 @@ + + +Same-document traversal during cross-document navigation + + + + + + + diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-nav-stop.html b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-nav-stop.html new file mode 100644 index 00000000000000..0803d6c8d15c69 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-nav-stop.html @@ -0,0 +1,21 @@ + + +Stop during cross-document navigations + + + + + diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-cross-document-nav.html b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-cross-document-nav.html new file mode 100644 index 00000000000000..05d4705df166bf --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-cross-document-nav.html @@ -0,0 +1,78 @@ + + +Cross-document navigations during cross-document traversals + + + + + + + + diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-cross-document-traversal.html b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-cross-document-traversal.html new file mode 100644 index 00000000000000..ec8b37427f259c --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-cross-document-traversal.html @@ -0,0 +1,169 @@ + + +Cross-document traversals during cross-document traversals + + + + + + + diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-same-document-nav-expected.txt b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-same-document-nav-expected.txt new file mode 100644 index 00000000000000..4ceed7722c4ea6 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-same-document-nav-expected.txt @@ -0,0 +1,5 @@ +This is a testharness.js-based test. +FAIL same-document traversals are not canceled by fragment navigations step_wait_func: Timed out waiting on condition +FAIL same-document traversals are not canceled by pushState() step_wait_func: Timed out waiting on condition +Harness: the test ran to completion. + diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-same-document-nav.html b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-same-document-nav.html new file mode 100644 index 00000000000000..5d3850ff4e2459 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-same-document-nav.html @@ -0,0 +1,69 @@ + + +Same-document navigations during cross-document traversals + + + + + + + diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-same-document-traversal-expected.txt b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-same-document-traversal-expected.txt new file mode 100644 index 00000000000000..acbb5ee19a7105 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-same-document-traversal-expected.txt @@ -0,0 +1,5 @@ +This is a testharness.js-based test. +FAIL traversals in the same (back) direction: the second is ignored assert_equals: first load event must be going back (hash) expected "#2" but got "" +FAIL traversals in the same (forward) direction: the second is ignored assert_equals: first load event must be going forward (hash) expected "" but got "#3" +Harness: the test ran to completion. + diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-same-document-traversal.html b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-same-document-traversal.html new file mode 100644 index 00000000000000..0a9154ca8f8f72 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-same-document-traversal.html @@ -0,0 +1,108 @@ + + +Same-document traversals during cross-document traversals + + + + + + + diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-stop.html b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-stop.html new file mode 100644 index 00000000000000..49d97e72a65c87 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-stop.html @@ -0,0 +1,40 @@ + + +Stop during cross-document traversals + + + + + + + diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/resources/helpers.mjs b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/resources/helpers.mjs new file mode 100644 index 00000000000000..d2ecb9d9bc21ad --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/resources/helpers.mjs @@ -0,0 +1,45 @@ +export function createIframe(t) { + return new Promise((resolve, reject) => { + const iframe = document.createElement("iframe"); + iframe.onload = () => resolve(iframe); + iframe.onerror = () => reject(new Error("Could not load iframe")); + iframe.src = "/common/blank.html"; + + t.add_cleanup(() => iframe.remove()); + document.body.append(iframe); + }); +} + +export function delay(t, ms) { + return new Promise(resolve => t.step_timeout(resolve, ms)); +} + +export function waitForLoad(obj) { + return new Promise(resolve => { + obj.addEventListener("load", resolve, { once: true }); + }); +} + +export function waitForHashchange(obj) { + return new Promise(resolve => { + obj.addEventListener("hashchange", resolve, { once: true }); + }); +} + +export function waitForPopstate(obj) { + return new Promise(resolve => { + obj.addEventListener("popstate", resolve, { once: true }); + }); +} + +// This is used when we want to end the test by asserting some load doesn't +// happen, but we're not sure how long to wait. We could just wait a long-ish +// time (e.g. a second), but that makes the tests slow. Instead, assume that +// network loads take roughly the same time, so by waiting for 2x the duration +// of a separate iframe load, we would have caught any problems. +export async function waitForPotentialNetworkLoads(t) { + const before = performance.now(); + await createIframe(t); + const after = performance.now(); + await delay(t, after - before); +} diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/resources/slow.py b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/resources/slow.py new file mode 100644 index 00000000000000..5ee32a60baea5e --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/resources/slow.py @@ -0,0 +1,7 @@ +# Like /common/slow.py except with text/html content-type so that it won't +# trigger strange parts of the