summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/html/semantics/forms/the-select-element/select-parsing.tentative.html
blob: 31133446d4d140d5c13f33038617d8baf022e970 (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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
<!DOCTYPE html>
<link rel=author href="mailto:jarhar@chromium.org">
<link rel=help href="https://github.com/whatwg/html/issues/9799">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>

<body>

<select id=s1>
  <div>div 1</div>
  <button>button</button>
  <div>div 2</div>
  <datalist>
    <option>option</option>
  </datalist>
  <div>div 3</div>
</select>

<select id=s2>
  <button>button
</select>

<select id=s3>
  <datalist>datalist
</select>

<select id=s4>
  <button>
    <select></select>
  </button>
</select>

<select id=s5>
  <button>
    <div>
      <select>
</select>

<select id=s6>
<button>
<button></button>
</button>
<datalist>
<datalist></datalist>
</datalist>
</select>

<div id=afterlast>
  keep this div after the last test case
</div>

<script>
test(() => {
  // The document.body check here and in the other tests is to make sure that a
  // previous test case didn't leave the HTML parser open on another element.
  assert_equals(document.getElementById('s1').parentNode, document.body);
  assert_equals(document.getElementById('s1').innerHTML, `
  div 1
  <button>button</button>
  div 2
  <datalist>
    <option>option</option>
  </datalist>
  div 3
`);
}, '<button>s and <datalist>s should be allowed in <select>.');

test(() => {
  assert_equals(document.getElementById('s2').parentNode, document.body);
  assert_equals(document.getElementById('s2').innerHTML, `
  <button>button
</button>`);
}, '</select> should close <button>.');

test(() => {
  assert_equals(document.getElementById('s3').parentNode, document.body);
  assert_equals(document.getElementById('s3').innerHTML, `
  <datalist>datalist
</datalist>`);
}, '</select> should close <datalist>.');

test(() => {
  assert_equals(document.getElementById('s4').parentNode, document.body);
  assert_equals(document.getElementById('s4').innerHTML, `
  <button>
    </button>`);
}, '<select> in <button> in <select> should remove inner <select>.');

test(() => {
  assert_equals(document.getElementById('s5').parentNode, document.body);
  assert_equals(document.getElementById('s5').innerHTML, `
  <button>
    <div>
      </div></button>`);
}, '<select> in <select><button><div> should remove inner <select>.');

test(() => {
  assert_equals(document.getElementById('s6').parentNode, document.body);
  assert_equals(document.getElementById('s6').innerHTML, `
<button>
</button>

<datalist>
</datalist>

`);
}, 'Nested <button>s or <datalist>s in <select> should be dropped.');

test(() => {
  assert_equals(document.getElementById('afterlast').parentNode, document.body);
}, 'The last test should not leave any tags open after parsing.');
</script>