diff options
Diffstat (limited to 'testing/web-platform/tests/scroll-to-text-fragment/scroll-to-text-fragment-same-doc.html')
-rw-r--r-- | testing/web-platform/tests/scroll-to-text-fragment/scroll-to-text-fragment-same-doc.html | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/testing/web-platform/tests/scroll-to-text-fragment/scroll-to-text-fragment-same-doc.html b/testing/web-platform/tests/scroll-to-text-fragment/scroll-to-text-fragment-same-doc.html new file mode 100644 index 0000000000..378e373575 --- /dev/null +++ b/testing/web-platform/tests/scroll-to-text-fragment/scroll-to-text-fragment-same-doc.html @@ -0,0 +1,66 @@ +<!doctype html> +<title>Navigating to a same-document text fragment directive</title> +<meta charset=utf-8> +<link rel="help" href="https://wicg.github.io/ScrollToTextFragment/"> +<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> +function isInView(element) { + let rect = element.getBoundingClientRect(); + return rect.top >= 0 && rect.top <= window.innerHeight; +} + +function checkScroll(resolve) { + let position = 'unknown'; + requestAnimationFrame(() => { + if (window.scrollY == 0) + position = 'top'; + else if (isInView(document.getElementById('text'))) + position = 'text'; + resolve(position); + }); +} + +function reset() { + window.location.hash = ""; + window.scrollTo(0, 0); +} + +function runTest() { + promise_test(t => new Promise(resolve => { + reset(); + window.location.href = "#:~:text=test"; + requestAnimationFrame(function() { + checkScroll(resolve); + }); + }).then(position => { + assert_equals(position, 'text'); + assert_equals(window.location.href.indexOf(':~:'), -1, 'Expected fragment directive to be stripped from the URL.'); + }), 'Activated for same-document window.location setter'); + + promise_test(t => new Promise(resolve => { + reset(); + window.location.replace("#:~:text=test"); + requestAnimationFrame(function() { + checkScroll(resolve); + }); + }).then(position => { + assert_equals(position, 'text'); + assert_equals(window.location.href.indexOf(':~:'), -1, 'Expected fragment directive to be stripped from the URL.'); + }), 'Activated for same-document window.location.replace'); +} +</script> +<style> + body { + height: 3200px; + } + #text { + position: absolute; + top: 3000px; + } +</style> +<body onload="runTest()"> + <p id="text">This is a test page</p> +</body> |