File: test_overlay_scrollbar_position.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 (42 lines) | stat: -rw-r--r-- 1,559 bytes parent folder | download | duplicates (15)
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
<!doctype html>
<meta charset="utf-8">
<title>Test for overlay scrollbar positions</title>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" href="/tests/SimpleTest/test.css">
<style>
  div {
    width: 100px;
    height: 100px;
  }
</style>
<div style="overflow-x: scroll" data-expected-bottom></div>
<div style="overflow-y: scroll" data-expected-right></div>
<div style="overflow-y: scroll" dir="rtl" data-expected-left></div>
<script>
add_task(async function() {
  await SpecialPowers.pushPrefEnv({
    set: [["ui.useOverlayScrollbars", 1]],
  });
  for (let div of document.querySelectorAll("div")) {
    let rect = div.getBoundingClientRect();
    let kids = SpecialPowers.InspectorUtils.getChildrenForNode(
      div,
      /* anonymous = */ true,
      false
    );
    is(kids.length, 3, "Should create both horizontal and vertical scrollbars, and a scrollcorner");
    for (let attr of ["top", "left", "bottom", "right"]) {
      if (!div.hasAttribute(`data-expected-${attr}`)) {
        continue;
      }
      let vertical = attr == "left" || attr == "right";
      let scrollbar = kids[vertical ? 1 : 0];
      is(scrollbar.tagName, "scrollbar", "Should find scrollbar");
      is(scrollbar.getAttribute("orient"), vertical ? "vertical" : "horizontal", "Should be the right scrollbar");
      let scrollbarRect = scrollbar.getBoundingClientRect();
      let diff = scrollbarRect[attr] - rect[attr];
      is(diff, 0, `Scrollbar should be at ${attr}: ${scrollbarRect[attr]} vs. ${rect[attr]}`);
    }
  }
});
</script>