diff options
Diffstat (limited to 'testing/web-platform/tests/css/cssom-view/getClientRects-inline-inline-child.html')
-rw-r--r-- | testing/web-platform/tests/css/cssom-view/getClientRects-inline-inline-child.html | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/testing/web-platform/tests/css/cssom-view/getClientRects-inline-inline-child.html b/testing/web-platform/tests/css/cssom-view/getClientRects-inline-inline-child.html new file mode 100644 index 0000000000..9a03ccdbcc --- /dev/null +++ b/testing/web-platform/tests/css/cssom-view/getClientRects-inline-inline-child.html @@ -0,0 +1,52 @@ +<!DOCTYPE html> +<link rel="help" href="https://drafts.csswg.org/cssom-view-1/#dom-element-getclientrects"> +<link rel="author" title="Koji Ishii" href="mailto:kojii@chromium.org"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<body> + <div> + <span>test</span> + <span id="vertical-align-sub-as-grand-child" + title="sub element in a child inline box should not be included"> + <span> + <sub class="not-include" style="vertical-align: sub">subscript</sub> + </span> + </span> + <span>test</span> + </div> +<script> +testTargetDoesNotInclude('vertical-align-sub-as-grand-child'); + +function testTargetDoesNotInclude(target) { + target = document.getElementById(target); + test(() => { + let target_rects = target.getClientRects(); + + let not_include_rects = []; + for (let element of target.querySelectorAll('.not-include')) { + for (let rect of element.getClientRects()) + not_include_rects.push(rect); + } + for (let rect of target_rects) { + for (let not_include_rect of not_include_rects) { + assert_rect_not_equals(rect, not_include_rect); + } + } + }, target.title); +} + +function assert_rect_not_equals(rect1, rect2) { + assert_false(rectEquals(rect1, rect2), + `${rectToString(rect1)} and ${rectToString(rect2)} are not equal`); +} + +function rectEquals(rect1, rect2) { + return rect1.x === rect2.x && rect1.y === rect2.y && + rect1.width === rect2.width && rect1.height === rect2.height; +} + +function rectToString(rect) { + return `{${rect.x}, ${rect.y} ${rect.width}x${rect.height}}`; +} +</script> +</body> |