summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/css/cssom-view/getClientRects-inline-inline-child.html
diff options
context:
space:
mode:
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.html52
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>