mirror of
https://github.com/servo/servo.git
synced 2025-08-07 14:35:33 +01:00
Update web-platform-tests to revision b'ee6da9d71d0268d7fdb04e8e5b26858f46ee0cc4'
This commit is contained in:
parent
4401622eb1
commit
b77ad115f6
16832 changed files with 270819 additions and 87621 deletions
|
@ -0,0 +1,80 @@
|
|||
<!doctype html>
|
||||
<title>Same document navigation to text fragment directives</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>
|
||||
function reset() {
|
||||
location.hash = '';
|
||||
window.scrollTo(0, 0);
|
||||
}
|
||||
|
||||
function isInViewport(element) {
|
||||
const viewportRect = {
|
||||
left: visualViewport.offsetLeft,
|
||||
top: visualViewport.offsetTop,
|
||||
right: visualViewport.offsetLeft + visualViewport.width,
|
||||
bottom: visualViewport.offsetTop + visualViewport.height
|
||||
};
|
||||
|
||||
const elementRect = element.getBoundingClientRect();
|
||||
const elementCenter = {
|
||||
x: elementRect.left + elementRect.width / 2,
|
||||
y: elementRect.top + elementRect.height / 2
|
||||
};
|
||||
|
||||
return elementCenter.x > viewportRect.left &&
|
||||
elementCenter.x < viewportRect.right &&
|
||||
elementCenter.y > viewportRect.top &&
|
||||
elementCenter.y < viewportRect.bottom;
|
||||
}
|
||||
|
||||
function runTests() {
|
||||
// Ensure a simple text directive works correctly when navigated to the
|
||||
// same document using `location.hash`.
|
||||
promise_test(async t => {
|
||||
assert_implements(document.fragmentDirective, 'Text directive not implemented');
|
||||
reset();
|
||||
|
||||
location.hash = ':~:text=line%20of%20text';
|
||||
await t.step_wait(() => window.scrollY > 0, "Wait for scroll");
|
||||
assert_true(isInViewport(document.getElementById('text')), 'Scrolled to text');
|
||||
}, 'Basic text directive navigation');
|
||||
|
||||
// Test that we correctly fallback to the element id when we have a text
|
||||
// directive that doesn't match any text in the page.
|
||||
promise_test(async t => {
|
||||
assert_implements(document.fragmentDirective, 'Text directive not implemented');
|
||||
reset();
|
||||
|
||||
location.hash = 'elementid:~:text=textDoesntExist';
|
||||
await t.step_wait(() => window.scrollY > 0, "Wait for scroll");
|
||||
assert_true(isInViewport(document.getElementById('elementid')), 'Scrolled to `elementid`');
|
||||
}, 'Basic element id fallback');
|
||||
|
||||
// Test that we correctly fallback to the element id when we have a text
|
||||
// directive that's malformed and won't be parsed.
|
||||
promise_test(async t => {
|
||||
assert_implements(document.fragmentDirective, 'Text directive not implemented');
|
||||
reset();
|
||||
|
||||
location.hash = 'elementid:~:text=,,,,,';
|
||||
await t.step_wait(() => window.scrollY > 0, "Wait for scroll");
|
||||
assert_true(isInViewport(document.getElementById('elementid')), 'Scrolled to `elementid`');
|
||||
}, 'Malformed text directive element id fallback');
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
div {
|
||||
margin: 200vh 0 200vh 0;
|
||||
}
|
||||
</style>
|
||||
<body onload="runTests()">
|
||||
<div id="text">
|
||||
This is a line of text.
|
||||
</div>
|
||||
<div id="elementid">
|
||||
This div has an id: 'elementid'.
|
||||
</div>
|
||||
</body>
|
Loading…
Add table
Add a link
Reference in a new issue