summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/html/semantics/embedded-content/the-iframe-element/iframe-loading-lazy-to-eager.html
blob: 371601a8c3a167e91804945fefe6db3154483cd2 (plain)
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
50
51
52
53
54
55
<!DOCTYPE html>
<head>
  <title>Below-viewport iframes with loading='lazy' load when set to
         loading='eager' or the `loading` attribute is removed</title>
  <link rel="author" title="Dom Farolino" href="mailto:domfarolino@gmail.com">
  <link rel="help" href="https://github.com/whatwg/html/pull/5579">
  <script src="/resources/testharness.js"></script>
  <script src="/resources/testharnessreport.js"></script>
</head>

<script>
  const t = async_test("Below-viewport iframes with loading='lazy' load when " +
                       "set to loading='eager' or the `loading` attribute is " +
                       "removed");

  const iframe_1_onload = t.unreached_func("#iframe_1 should not load before " +
                                           "the window load event");
  const iframe_2_onload = t.unreached_func("#iframe_2 should not load before " +
                                           "the window load event");

  window.addEventListener("load", t.step_func(() => {
    const iframe_1 = document.querySelector('#iframe_1');
    const iframe_2 = document.querySelector('#iframe_2');

    const iframe_1_promise = new Promise((resolve, reject) => {
      iframe_1.onerror = reject;
      iframe_1.onload = resolve;
    });

    const iframe_2_promise = new Promise((resolve, reject) => {
      iframe_2.onerror = reject;
      iframe_2.onload = resolve;
    });

    Promise.all([iframe_1_promise, iframe_2_promise])
      .then(t.step_func_done())
      .catch(t.unreached_func("The iframes should load successfully"));

    // Kick off the requests.
    iframe_1.loading = 'eager';
    iframe_2.removeAttribute('loading'); // unset the attribute, putting it in
                                         // the default (eager) state.
  }));

</script>

<body>
  <div style="height:1000vh;"></div>
  <iframe id="iframe_1"
          src="resources/subframe.html?1"
          loading="lazy" onload="iframe_1_onload();"></iframe>
  <iframe id="iframe_2"
          src="resources/subframe.html?2"
          loading="lazy" onload="iframe_2_onload();"></iframe>
</body>