Automatic update from web-platform-tests Remove and migrate internal tests in fast/dom/elementsFromPoint/ Additional coverage added to WPT: - elementsFromPoint-shadowroot.html: Added argument validation checks for ShadowRoot.elementsFromPoint. - elementsFromPoint-svg.html: Added hit-testing cases including nested svg elements, pointer-events:bounding-box, and foreignObject. Tests removed (fully covered by WPT): - elementsFromPoint-invalid-cases.html - elementsFromPoint-iframes.html - elementsFromPoint-simple.html Change-Id: I310888d6ed9051e8156c199e7eadcf7bc214ce97 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7532739 Reviewed-by: Philip Rogers <pdr@chromium.org> Commit-Queue: Hyowon Kim <hyowon@igalia.com> Cr-Commit-Position: refs/heads/main@{#1579845} -- wpt-commits: 09acb1f036c3f8929da267fbdc25f933e043f50e wpt-pr: 57580
97 lines
3.2 KiB
HTML
97 lines
3.2 KiB
HTML
<!DOCTYPE HTML>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<script src="resources/elementsFromPoint.js"></script>
|
|
<style>
|
|
html, body {
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
body {
|
|
height: 500px;
|
|
}
|
|
</style>
|
|
<body>
|
|
<div id="host"></div>
|
|
<div id="blockHost"></div>
|
|
<span id="inlineBlockHost" style="display:inline-block;"></span>
|
|
<input type="submit" id="submit">
|
|
<script>
|
|
function assertElementsFromPoint(doc, x, y, expected) {
|
|
var query = doc + '.elementsFromPoint(' + x + ',' + y + ')';
|
|
var sequence = eval(query);
|
|
assert_equals(nodeListToString(sequence), nodeListToString(expected), query);
|
|
}
|
|
|
|
function createBox(id) {
|
|
var div = document.createElement('div');
|
|
div.id = id;
|
|
div.style.width = '100px';
|
|
div.style.height = '10px';
|
|
return div;
|
|
}
|
|
|
|
function centerX(element) {
|
|
return element.offsetLeft + element.offsetWidth / 2;
|
|
}
|
|
|
|
function centerY(element) {
|
|
return element.offsetTop + element.offsetHeight / 2;
|
|
}
|
|
|
|
var shadowRoot = host.attachShadow({mode: 'closed'});
|
|
var box11 = createBox('box11');
|
|
var box12 = createBox('box12');
|
|
var box13 = createBox('box13');
|
|
shadowRoot.appendChild(box11);
|
|
shadowRoot.appendChild(box12);
|
|
shadowRoot.appendChild(box13);
|
|
|
|
var nestedHost = document.createElement('div');
|
|
var nestedShadowRoot = nestedHost.attachShadow({mode: 'closed'});
|
|
var box21 = createBox('box21');
|
|
var box22 = createBox('box22');
|
|
var box23 = createBox('box23');
|
|
nestedShadowRoot.appendChild(box21);
|
|
nestedShadowRoot.appendChild(box22);
|
|
nestedShadowRoot.appendChild(box23);
|
|
|
|
shadowRoot.appendChild(nestedHost);
|
|
|
|
var x12 = centerX(box12);
|
|
var y12 = centerY(box12);
|
|
var x22 = centerX(box22);
|
|
var y22 = centerY(box22);
|
|
|
|
test(function() {
|
|
assert_throws_js(TypeError, function() {
|
|
shadowRoot.elementsFromPoint();
|
|
});
|
|
assert_throws_js(TypeError, function() {
|
|
shadowRoot.elementsFromPoint(0);
|
|
});
|
|
}, 'elementsFromPoint() should throw TypeError with invalid arguments');
|
|
|
|
var root3 = blockHost.attachShadow({mode: 'closed'});
|
|
root3.appendChild(document.createTextNode('text1'));
|
|
var root4 = inlineBlockHost.attachShadow({mode: 'closed'});
|
|
root4.appendChild(document.createTextNode('text2'));
|
|
|
|
test(function() {
|
|
assertElementsFromPoint('document', x22, y22, [host, document.body, document.documentElement]);
|
|
assertElementsFromPoint('document', centerX(blockHost), centerY(blockHost),
|
|
[blockHost, document.body, document.documentElement]);
|
|
assertElementsFromPoint('document', centerX(inlineBlockHost), centerY(inlineBlockHost),
|
|
[inlineBlockHost, document.body, document.documentElement]);
|
|
assertElementsFromPoint('document', centerX(submit), centerY(submit),
|
|
[submit, document.body, document.documentElement]);
|
|
}, 'elementsFromPoint on the document root should not return elements in shadow trees');
|
|
|
|
test(function() {
|
|
assert_not_equals(shadowRoot.elementsFromPoint(x12, y12).indexOf(box12), -1);
|
|
assert_not_equals(shadowRoot.elementsFromPoint(x22, y22).indexOf(nestedHost), -1);
|
|
assert_not_equals(nestedShadowRoot.elementsFromPoint(x22, y22).indexOf(box22), -1);
|
|
}, 'elementsFromPoint on a shadow root should include elements in that shadow tree');
|
|
</script>
|
|
</body>
|