diff options
Diffstat (limited to 'testing/web-platform/tests/soft-navigation-heuristics/popstate-multiple-backs.tentative.html')
-rw-r--r-- | testing/web-platform/tests/soft-navigation-heuristics/popstate-multiple-backs.tentative.html | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/testing/web-platform/tests/soft-navigation-heuristics/popstate-multiple-backs.tentative.html b/testing/web-platform/tests/soft-navigation-heuristics/popstate-multiple-backs.tentative.html new file mode 100644 index 0000000000..fd87f5f03e --- /dev/null +++ b/testing/web-platform/tests/soft-navigation-heuristics/popstate-multiple-backs.tentative.html @@ -0,0 +1,64 @@ +<!DOCTYPE HTML> +<html> +<head> +<meta charset="utf-8"> +<title>Soft navigation with multiple popstate calls.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="resources/soft-navigation-helper.js"></script> +</head> +<body> + <main id=main> + <div> + <a id=link>Click me!</a> + </div> + </main> + <script> + // Push state 4 times, as history.back() calls will trigger popstate + // events. + history.pushState({}, "", "foobar.html"); + history.pushState({}, "", "another_one.html"); + history.pushState({}, "", "and_another.html"); + history.pushState({}, "", "and_yet_another.html"); + + // This function runs at the start of the popstate event. + const eventPrepWork = t => { + // If this is an event due to the first click, go back() twice more. + if (!t.popped) { + step_timeout(()=>history.back(), 0); + step_timeout(()=>history.back(), 0); + t.popped = 0; + } + ++t.popped; + // return true for the second time the event fires, which is the first + // back() triggered by the popstate event. The means that the first one + // of those back() navigations would trigger a soft navigation, but not + // the last one. + return t.popped == 2; + } + const link = document.getElementById("link"); + link.addEventListener("click", () => { + history.back(); + timestamps[counter]["eventEnd"] = performance.now(); + }); + testSoftNavigation({ + addContent: () => { + // Add the content to the main element + const main = document.getElementById("main"); + main.removeChild(document.getElementsByTagName("div")[0]); + const div = document.createElement("div"); + const text = document.createTextNode("Lorem ipsum"); + div.appendChild(text); + div.style="font-size: 3em"; + main.appendChild(div); + }, + link: link, + eventPrepWork: eventPrepWork, + testName: "A soft navigation that started from a back() call inside a " + + "popstate event is recognized by SoftNavigationHeuristics", + eventType: "popstate"}); + </script> +</body> +</html> |