File: test_selection_cross_shadow_boundary_backward_nested_click.html

package info (click to toggle)
firefox 141.0.2-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 4,550,616 kB
  • sloc: cpp: 7,426,508; javascript: 6,367,238; ansic: 3,707,354; python: 1,368,984; xml: 623,983; asm: 426,916; java: 184,324; sh: 64,488; makefile: 19,203; objc: 13,059; perl: 12,955; yacc: 4,583; cs: 3,846; pascal: 3,352; lex: 1,720; ruby: 1,071; exp: 762; php: 436; lisp: 258; awk: 247; sql: 66; sed: 54; csh: 10
file content (49 lines) | stat: -rw-r--r-- 2,120 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<!DOCTYPE HTML>
<script src="/tests/SimpleTest/EventUtils.js"></script>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
<script>
SimpleTest.waitForExplicitFinish();
function run() {
  const host = document.getElementById("host");
  const inner = host.shadowRoot.getElementById("inner");
  const innerRect = inner.getBoundingClientRect();

  const innerHost = host.shadowRoot.getElementById("innerHost");
  const nested = innerHost.shadowRoot.getElementById("nested");
  const nestedRect = nested.getBoundingClientRect();

  // Click the center of "NestedText"
  synthesizeMouse(nested, nestedRect.width / 2, nestedRect.height / 2, { type: "mousedown" });
  synthesizeMouse(nested, nestedRect.width / 2, nestedRect.height / 2, { type: "mouseup" });

  // Click the center of "InnerText"
  synthesizeMouse(inner, innerRect.width / 2, innerRect.height / 2, { type: "mousedown", shiftKey: true});
  synthesizeMouse(inner, innerRect.width / 2, innerRect.height / 2, { type: "mouseup" , shiftKey: true});

  // Above two clicks should select half of the content in "InnerText" and half of the content in "NestedText"
  let sel = document.getSelection().getComposedRanges(host.shadowRoot, innerHost.shadowRoot)[0];

  // forward selection
  is(sel.startContainer, inner.firstChild, "startContainer is the InnerText");
  is(sel.endContainer, nested.firstChild, "endContainer is the NestedText");

  const collapsedRange = document.getSelection().getRangeAt(0);
  is(collapsedRange.startContainer, inner.firstChild, "normal range's startContainer get collapsed to InnerText");
  is(collapsedRange.endContainer, inner.firstChild, "normal range's endContainer get collapsed to InnerText");

  SimpleTest.finish();
}
</script>
<body onload="SimpleTest.waitForFocus(run);">
  <div id="host">
    <template shadowrootmode="open">
      <span id="inner">InnerText</span>
      <div id="innerHost">
        <template shadowrootmode="open">
          <span id="nested">NestedText</span>
        </template>
      </div>
    </template>
  </div>
</body>