summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/css/cssom/caretPositionFromPoint-with-transformation.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/css/cssom/caretPositionFromPoint-with-transformation.html')
-rw-r--r--testing/web-platform/tests/css/cssom/caretPositionFromPoint-with-transformation.html46
1 files changed, 46 insertions, 0 deletions
diff --git a/testing/web-platform/tests/css/cssom/caretPositionFromPoint-with-transformation.html b/testing/web-platform/tests/css/cssom/caretPositionFromPoint-with-transformation.html
new file mode 100644
index 0000000000..fcd02877ca
--- /dev/null
+++ b/testing/web-platform/tests/css/cssom/caretPositionFromPoint-with-transformation.html
@@ -0,0 +1,46 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>getCaretPositionFromPoint should return the correct offset even in iframes with transformation</title>
+<link rel="help" href="https://drafts.csswg.org/cssom-view-1/#dom-document-caretpositionfrompoint">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1546612">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+ #actual {
+ transform: translateX(100px);
+ }
+</style>
+<iframe id="expected"></iframe>
+<br>
+<iframe id="actual"></iframe>
+<script>
+ const expectedFrame = document.getElementById("expected");
+ const actualFrame = document.getElementById("actual");
+
+ const getCaretPositionOffset = frame => {
+ const source = `<!doctype html><meta charset="utf-8"><h1>title</h1><p>paragraph</p>`
+
+ const elementCenter = elem => {
+ const rect = elem.getBoundingClientRect();
+ return [rect.x + rect.width / 2, rect.y + rect.height / 2];
+ };
+
+ return new Promise(resolve => {
+ frame.srcdoc = source;
+ frame.onload = () => {
+ const frameDoc = frame.contentDocument;
+ const {offset} = frameDoc.caretPositionFromPoint(
+ ...elementCenter(frameDoc.querySelector("h1"))
+ );
+ resolve(offset);
+ };
+ });
+ };
+
+ promise_test(async () => {
+ assert_equals(...await Promise.all([
+ getCaretPositionOffset(expectedFrame),
+ getCaretPositionOffset(actualFrame)
+ ]), "caret offset");
+ }, "iframe's with equal content should report the same caret offset");
+</script>