File: viewport-scrollbars-cause-resize-in-iframe.html

package info (click to toggle)
firefox-esr 140.4.0esr-1~deb13u1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 4,539,284 kB
  • sloc: cpp: 7,381,286; javascript: 6,388,710; ansic: 3,710,139; python: 1,393,780; xml: 628,165; asm: 426,916; java: 184,004; sh: 65,742; makefile: 19,302; objc: 13,059; perl: 12,912; yacc: 4,583; cs: 3,846; pascal: 3,352; lex: 1,720; ruby: 1,226; exp: 762; php: 436; lisp: 258; awk: 247; sql: 66; sed: 54; csh: 10
file content (41 lines) | stat: -rw-r--r-- 1,657 bytes parent folder | download | duplicates (14)
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
<!doctype html>
<title>Viewport: Scrollbars Cause Resize</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, minimum-scale=1">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="viewport_support.js"></script>
<h1>Viewport: Scrollbars Cause Resize In IFrame</h1>
<h4>
    Test Description: This test checks that the appearance of classic
    scrollbars will cause a resize event to be fired at window.visualViewport in iframe.
</h4>
<iframe srcdoc="<p>Hello, world!</p>"></iframe>
<script>
  async_test(t => {
    window.onload = () => {
      const iframe = document.querySelector("iframe");

      let resize_event_count = 0;
      iframe.contentWindow.visualViewport.addEventListener("resize", () => {
        resize_event_count++;
      });

      const originalVisualViewportWidth = iframe.contentWindow.visualViewport.width;

      iframe.contentDocument.body.style.height = "10000px";
      // Force layout to queue a resize event at this moment.
      iframe.contentDocument.body.clientWidth;

      requestAnimationFrame(t.step_func_done(() => {
        // it's uncontrollable whether the test will run
        // with classic or overlay scrollbars in the case of Mac,
        // so the check has to be conditional.
        const width_changed = iframe.contentWindow.visualViewport.width !== originalVisualViewportWidth;
        assert_equals(resize_event_count, width_changed ? 1 : 0);
      }));
    }
  }, "the appearance of classic scrollbars will fire a resize event" +
      "at window.visualViewport in iframe");
</script>
<div id="log"></div>