File: tabindex-getter-frame.html

package info (click to toggle)
firefox 145.0.1-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 4,653,528 kB
  • sloc: cpp: 7,594,999; javascript: 6,459,658; ansic: 3,752,909; python: 1,403,455; xml: 629,809; asm: 438,679; java: 186,421; sh: 67,287; makefile: 19,169; objc: 13,086; perl: 12,982; yacc: 4,583; cs: 3,846; pascal: 3,448; lex: 1,720; ruby: 1,003; exp: 762; php: 436; lisp: 258; awk: 247; sql: 66; sed: 54; csh: 10
file content (55 lines) | stat: -rw-r--r-- 1,821 bytes parent folder | download | duplicates (29)
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>
<meta charset="utf-8">
<title>HTML Test: tabIndex getter return value for frames</title>
<link rel="help" href="https://html.spec.whatwg.org/multipage/interaction.html#dom-tabindex">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>

<!-- <frame> elements are harder to test than the rest so they get their own file -->

<body>

<script>
"use strict";
test(() => {
  const frame = document.createElement("frame");
  assert_equals(frame.tabIndex, 0);
}, "disconnected frame element .tabIndex should return 0 by default");

for (const setValue of [-1, 0, 1]) {
  test(() => {
    const frame = document.createElement("frame");
    frame.setAttribute("tabindex", setValue);
    assert_equals(frame.tabIndex, setValue);
  }, `disconnected frame element .tabIndex should return ${setValue} when set to ${setValue}`);
}

promise_test(async t => {
  const frame = await getFrame(t);
  assert_equals(frame.tabIndex, 0);
}, "connected frame element inside frameset .tabIndex should return 0 by default");

for (const setValue of [-1, 0, 1]) {
  promise_test(async t => {
    const frame = await getFrame(t);
    frame.setAttribute("tabindex", setValue);
    assert_equals(frame.tabIndex, setValue);
  }, `connected frame element inside frameset .tabIndex should return ${setValue} when set to ${setValue}`);
}


function getFrame(t) {
  return new Promise((resolve, reject) => {
    const iframe = document.createElement("iframe");
    t.add_cleanup(() => iframe.remove());

    iframe.src = "resources/frameset-using-page.html";
    iframe.onload = () => {
      resolve(iframe.contentDocument.querySelector("frame"));
    };
    iframe.onerror = () => reject(new Error("Could not load frameset page"));

    document.body.append(iframe);
  });
}
</script>