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
|
<!DOCTYPE HTML>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
class TestElement extends HTMLElement {
constructor() {
super();
this._internals = this.attachInternals();
}
get internals() {
return this._internals;
}
set internals(val) {
throw "Can't set internals!";
}
}
customElements.define("test-element", TestElement);
</script>
<test-element id= "testElement"></test-element>
<script>
const element = document.getElementById("testElement");
const properties = [
"role",
"ariaActiveDescendantElement",
"ariaAtomic",
"ariaAutoComplete",
"ariaBusy",
"ariaChecked",
"ariaColCount",
"ariaColIndex",
"ariaColSpan",
"ariaControlsElements",
"ariaCurrent",
"ariaDescribedByElements",
"ariaDetailsElements",
"ariaDisabled",
"ariaErrorMessageElements",
"ariaExpanded",
"ariaFlowToElements",
"ariaHasPopup",
"ariaHidden",
"ariaInvalid",
"ariaKeyShortcuts",
"ariaLabel",
"ariaLabelledByElements",
"ariaLevel",
"ariaLive",
"ariaModal",
"ariaMultiLine",
"ariaMultiSelectable",
"ariaOrientation",
"ariaOwnsElements",
"ariaPlaceholder",
"ariaPosInSet",
"ariaPressed",
"ariaReadOnly",
"ariaRelevant",
"ariaRequired",
"ariaRoleDescription",
"ariaRowCount",
"ariaRowIndex",
"ariaRowSpan",
"ariaSelected",
"ariaSort",
"ariaValueMax",
"ariaValueMin",
"ariaValueNow",
"ariaValueText"
];
for (const property of properties) {
test(() => {
assert_inherits(element.internals, property);
}, property + " is defined in ElementInternals");
}
test(() => assert_false('ariaErrorMessageElement' in element.internals), 'ariaErrorMessageElement is not defined in ElementInternals')
</script>
|