'a'
mh-two-thousand-and-two
2024-04-12 44d2c92345cd156a59fc327b3060292a282d2893
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
Accessibility.AccessibilityNode=class{constructor(accessibilityModel,payload){this._accessibilityModel=accessibilityModel;this._agent=accessibilityModel._agent;this._id=payload.nodeId;accessibilityModel._setAXNodeForAXId(this._id,this);if(payload.backendDOMNodeId){accessibilityModel._setAXNodeForBackendDOMNodeId(payload.backendDOMNodeId,this);this._backendDOMNodeId=payload.backendDOMNodeId;this._deferredDOMNode=new SDK.DeferredDOMNode(accessibilityModel.target(),payload.backendDOMNodeId);}else{this._backendDOMNodeId=null;this._deferredDOMNode=null;}
this._ignored=payload.ignored;if(this._ignored&&'ignoredReasons'in payload)
this._ignoredReasons=payload.ignoredReasons;this._role=payload.role||null;this._name=payload.name||null;this._description=payload.description||null;this._value=payload.value||null;this._properties=payload.properties||null;this._childIds=payload.childIds||null;this._parentNode=null;}
accessibilityModel(){return this._accessibilityModel;}
ignored(){return this._ignored;}
ignoredReasons(){return this._ignoredReasons||null;}
role(){return this._role||null;}
coreProperties(){const properties=[];if(this._name)
properties.push(({name:'name',value:this._name}));if(this._description){properties.push(({name:'description',value:this._description}));}
if(this._value)
properties.push(({name:'value',value:this._value}));return properties;}
name(){return this._name||null;}
description(){return this._description||null;}
value(){return this._value||null;}
properties(){return this._properties||null;}
parentNode(){return this._parentNode;}
_setParentNode(parentNode){this._parentNode=parentNode;}
isDOMNode(){return!!this._backendDOMNodeId;}
backendDOMNodeId(){return this._backendDOMNodeId;}
deferredDOMNode(){return this._deferredDOMNode;}
highlightDOMNode(){if(!this.deferredDOMNode())
return;this.deferredDOMNode().highlight();this.deferredDOMNode().resolvePromise().then(node=>{if(!node)
return;node.domModel().overlayModel().nodeHighlightRequested(node.id);});}
children(){const children=[];if(!this._childIds)
return children;for(const childId of this._childIds){const child=this._accessibilityModel.axNodeForId(childId);if(child)
children.push(child);}
return children;}
numChildren(){if(!this._childIds)
return 0;return this._childIds.length;}
hasOnlyUnloadedChildren(){if(!this._childIds||!this._childIds.length)
return false;return!this._childIds.some(id=>this._accessibilityModel.axNodeForId(id)!==undefined);}
printSelfAndChildren(inspectedNode,leadingSpace){let string=leadingSpace||'';if(this._role)
string+=this._role.value;else
string+='<no role>';string+=(this._name?' '+this._name.value:'');string+=' '+this._id;if(this._domNode)
string+=' ('+this._domNode.nodeName()+')';if(this===inspectedNode)
string+=' *';for(const child of this.children())
string+='\n'+child.printSelfAndChildren(inspectedNode,(leadingSpace||'')+'  ');return string;}};Accessibility.AccessibilityModel=class extends SDK.SDKModel{constructor(target){super(target);this._agent=target.accessibilityAgent();this._axIdToAXNode=new Map();this._backendDOMNodeIdToAXNode=new Map();}
clear(){this._axIdToAXNode.clear();}
async requestPartialAXTree(node){const payloads=await this._agent.getPartialAXTree(node.id,true);if(!payloads)
return;for(const payload of payloads)
new Accessibility.AccessibilityNode(this,payload);for(const axNode of this._axIdToAXNode.values()){for(const axChild of axNode.children())
axChild._setParentNode(axNode);}}
axNodeForId(axId){return this._axIdToAXNode.get(axId);}
_setAXNodeForAXId(axId,axNode){this._axIdToAXNode.set(axId,axNode);}
axNodeForDOMNode(domNode){if(!domNode)
return null;return this._backendDOMNodeIdToAXNode.get(domNode.backendNodeId());}
_setAXNodeForBackendDOMNodeId(backendDOMNodeId,axNode){this._backendDOMNodeIdToAXNode.set(backendDOMNodeId,axNode);}
logTree(inspectedNode){let rootNode=inspectedNode;while(rootNode.parentNode())
rootNode=rootNode.parentNode();console.log(rootNode.printSelfAndChildren(inspectedNode));}};SDK.SDKModel.register(Accessibility.AccessibilityModel,SDK.Target.Capability.DOM,false);;Accessibility.AccessibilitySidebarView=class extends UI.ThrottledWidget{constructor(){super();this._node=null;this._axNode=null;this._skipNextPullNode=false;this._sidebarPaneStack=UI.viewManager.createStackLocation();this._breadcrumbsSubPane=new Accessibility.AXBreadcrumbsPane(this);this._sidebarPaneStack.showView(this._breadcrumbsSubPane);this._ariaSubPane=new Accessibility.ARIAAttributesPane();this._sidebarPaneStack.showView(this._ariaSubPane);this._axNodeSubPane=new Accessibility.AXNodeSubPane();this._sidebarPaneStack.showView(this._axNodeSubPane);this._sidebarPaneStack.widget().show(this.element);UI.context.addFlavorChangeListener(SDK.DOMNode,this._pullNode,this);this._pullNode();}
node(){return this._node;}
axNode(){return this._axNode;}
setNode(node,fromAXTree){this._skipNextPullNode=!!fromAXTree;this._node=node;this.update();}
accessibilityNodeCallback(axNode){if(!axNode)
return;this._axNode=axNode;if(axNode.isDOMNode())
this._sidebarPaneStack.showView(this._ariaSubPane,this._axNodeSubPane);else
this._sidebarPaneStack.removeView(this._ariaSubPane);if(this._axNodeSubPane)
this._axNodeSubPane.setAXNode(axNode);if(this._breadcrumbsSubPane)
this._breadcrumbsSubPane.setAXNode(axNode);}
doUpdate(){const node=this.node();this._axNodeSubPane.setNode(node);this._ariaSubPane.setNode(node);this._breadcrumbsSubPane.setNode(node);if(!node)
return Promise.resolve();const accessibilityModel=node.domModel().target().model(Accessibility.AccessibilityModel);accessibilityModel.clear();return accessibilityModel.requestPartialAXTree(node).then(()=>{this.accessibilityNodeCallback(accessibilityModel.axNodeForDOMNode(node));});}
wasShown(){super.wasShown();this._breadcrumbsSubPane.setNode(this.node());this._breadcrumbsSubPane.setAXNode(this.axNode());this._axNodeSubPane.setNode(this.node());this._axNodeSubPane.setAXNode(this.axNode());this._ariaSubPane.setNode(this.node());SDK.targetManager.addModelListener(SDK.DOMModel,SDK.DOMModel.Events.AttrModified,this._onAttrChange,this);SDK.targetManager.addModelListener(SDK.DOMModel,SDK.DOMModel.Events.AttrRemoved,this._onAttrChange,this);SDK.targetManager.addModelListener(SDK.DOMModel,SDK.DOMModel.Events.CharacterDataModified,this._onNodeChange,this);SDK.targetManager.addModelListener(SDK.DOMModel,SDK.DOMModel.Events.ChildNodeCountUpdated,this._onNodeChange,this);}
willHide(){SDK.targetManager.removeModelListener(SDK.DOMModel,SDK.DOMModel.Events.AttrModified,this._onAttrChange,this);SDK.targetManager.removeModelListener(SDK.DOMModel,SDK.DOMModel.Events.AttrRemoved,this._onAttrChange,this);SDK.targetManager.removeModelListener(SDK.DOMModel,SDK.DOMModel.Events.CharacterDataModified,this._onNodeChange,this);SDK.targetManager.removeModelListener(SDK.DOMModel,SDK.DOMModel.Events.ChildNodeCountUpdated,this._onNodeChange,this);}
_pullNode(){if(this._skipNextPullNode){this._skipNextPullNode=false;return;}
this.setNode(UI.context.flavor(SDK.DOMNode));}
_onAttrChange(event){if(!this.node())
return;const node=event.data.node;if(this.node()!==node)
return;this.update();}
_onNodeChange(event){if(!this.node())
return;const node=event.data;if(this.node()!==node)
return;this.update();}};Accessibility.AccessibilitySubPane=class extends UI.SimpleView{constructor(name){super(name);this._axNode=null;this.registerRequiredCSS('accessibility/accessibilityProperties.css');}
setAXNode(axNode){}
node(){return this._node;}
setNode(node){this._node=node;}
createInfo(textContent,className){const classNameOrDefault=className||'gray-info-message';const info=this.element.createChild('div',classNameOrDefault);info.textContent=textContent;return info;}
createTreeOutline(){const treeOutline=new UI.TreeOutlineInShadow();treeOutline.registerRequiredCSS('accessibility/accessibilityNode.css');treeOutline.registerRequiredCSS('accessibility/accessibilityProperties.css');treeOutline.registerRequiredCSS('object_ui/objectValue.css');treeOutline.element.classList.add('hidden');treeOutline.hideOverflow();this.element.appendChild(treeOutline.element);return treeOutline;}};;Accessibility.AXNodeSubPane=class extends Accessibility.AccessibilitySubPane{constructor(){super(ls`Computed Properties`);this.contentElement.classList.add('ax-subpane');this._noNodeInfo=this.createInfo(ls`No accessibility node`);this._ignoredInfo=this.createInfo(ls`Accessibility node not exposed`,'ax-ignored-info hidden');this._treeOutline=this.createTreeOutline();this._ignoredReasonsTree=this.createTreeOutline();this.element.classList.add('accessibility-computed');this.registerRequiredCSS('accessibility/accessibilityNode.css');}
setAXNode(axNode){if(this._axNode===axNode)
return;this._axNode=axNode;const treeOutline=this._treeOutline;treeOutline.removeChildren();const ignoredReasons=this._ignoredReasonsTree;ignoredReasons.removeChildren();if(!axNode){treeOutline.element.classList.add('hidden');this._ignoredInfo.classList.add('hidden');ignoredReasons.element.classList.add('hidden');this._noNodeInfo.classList.remove('hidden');this.element.classList.add('ax-ignored-node-pane');return;}
if(axNode.ignored()){this._noNodeInfo.classList.add('hidden');treeOutline.element.classList.add('hidden');this.element.classList.add('ax-ignored-node-pane');this._ignoredInfo.classList.remove('hidden');ignoredReasons.element.classList.remove('hidden');function addIgnoredReason(property){ignoredReasons.appendChild(new Accessibility.AXNodeIgnoredReasonTreeElement(property,(axNode)));}
const ignoredReasonsArray=(axNode.ignoredReasons());for(const reason of ignoredReasonsArray)
addIgnoredReason(reason);if(!ignoredReasons.firstChild())
ignoredReasons.element.classList.add('hidden');return;}
this.element.classList.remove('ax-ignored-node-pane');this._ignoredInfo.classList.add('hidden');ignoredReasons.element.classList.add('hidden');this._noNodeInfo.classList.add('hidden');treeOutline.element.classList.remove('hidden');function addProperty(property){treeOutline.appendChild(new Accessibility.AXNodePropertyTreePropertyElement(property,(axNode)));}
for(const property of axNode.coreProperties())
addProperty(property);const roleProperty=({name:'role',value:axNode.role()});addProperty(roleProperty);for(const property of(axNode.properties()))
addProperty(property);}
setNode(node){super.setNode(node);this._axNode=null;}};Accessibility.AXNodePropertyTreeElement=class extends UI.TreeElement{constructor(axNode){super('');this._axNode=axNode;}
static createSimpleValueElement(type,value){let valueElement;const AXValueType=Protocol.Accessibility.AXValueType;if(!type||type===AXValueType.ValueUndefined||type===AXValueType.ComputedString)
valueElement=createElement('span');else
valueElement=createElementWithClass('span','monospace');let valueText;const isStringProperty=type&&Accessibility.AXNodePropertyTreeElement.StringProperties.has(type);if(isStringProperty){valueText='"'+value.replace(/\n/g,'\u21B5')+'"';valueElement._originalTextContent=value;}else{valueText=String(value);}
if(type&&type in Accessibility.AXNodePropertyTreeElement.TypeStyles)
valueElement.classList.add(Accessibility.AXNodePropertyTreeElement.TypeStyles[type]);valueElement.setTextContentTruncatedIfNeeded(valueText||'');valueElement.title=String(value)||'';return valueElement;}
static createExclamationMark(tooltip){const exclamationElement=createElement('span','dt-icon-label');exclamationElement.type='smallicon-warning';exclamationElement.title=tooltip;return exclamationElement;}
appendNameElement(name){const nameElement=createElement('span');const AXAttributes=Accessibility.AccessibilityStrings.AXAttributes;if(name in AXAttributes){nameElement.textContent=ls(AXAttributes[name].name);nameElement.title=AXAttributes[name].description;nameElement.classList.add('ax-readable-name');}else{nameElement.textContent=name;nameElement.classList.add('ax-name');nameElement.classList.add('monospace');}
this.listItemElement.appendChild(nameElement);}
appendValueElement(value){const AXValueType=Protocol.Accessibility.AXValueType;if(value.type===AXValueType.Idref||value.type===AXValueType.Node||value.type===AXValueType.IdrefList||value.type===AXValueType.NodeList){this.appendRelatedNodeListValueElement(value);return;}else if(value.sources){const sources=value.sources;for(let i=0;i<sources.length;i++){const source=sources[i];const child=new Accessibility.AXValueSourceTreeElement(source,this._axNode);this.appendChild(child);}
this.expand();}
const element=Accessibility.AXNodePropertyTreeElement.createSimpleValueElement(value.type,String(value.value));this.listItemElement.appendChild(element);}
appendRelatedNode(relatedNode,index){const deferredNode=new SDK.DeferredDOMNode(this._axNode.accessibilityModel().target(),relatedNode.backendDOMNodeId);const nodeTreeElement=new Accessibility.AXRelatedNodeSourceTreeElement({deferredNode:deferredNode},relatedNode);this.appendChild(nodeTreeElement);}
appendRelatedNodeInline(relatedNode){const deferredNode=new SDK.DeferredDOMNode(this._axNode.accessibilityModel().target(),relatedNode.backendDOMNodeId);const linkedNode=new Accessibility.AXRelatedNodeElement({deferredNode:deferredNode},relatedNode);this.listItemElement.appendChild(linkedNode.render());}
appendRelatedNodeListValueElement(value){if(value.relatedNodes.length===1&&!value.value){this.appendRelatedNodeInline(value.relatedNodes[0]);return;}
value.relatedNodes.forEach(this.appendRelatedNode,this);if(value.relatedNodes.length<=3)
this.expand();else
this.collapse();}};Accessibility.AXNodePropertyTreeElement.TypeStyles={attribute:'ax-value-string',boolean:'object-value-boolean',booleanOrUndefined:'object-value-boolean',computedString:'ax-readable-string',idref:'ax-value-string',idrefList:'ax-value-string',integer:'object-value-number',internalRole:'ax-internal-role',number:'ax-value-number',role:'ax-role',string:'ax-value-string',tristate:'object-value-boolean',valueUndefined:'ax-value-undefined'};Accessibility.AXNodePropertyTreeElement.StringProperties=new Set([Protocol.Accessibility.AXValueType.String,Protocol.Accessibility.AXValueType.ComputedString,Protocol.Accessibility.AXValueType.IdrefList,Protocol.Accessibility.AXValueType.Idref]);Accessibility.AXNodePropertyTreePropertyElement=class extends Accessibility.AXNodePropertyTreeElement{constructor(property,axNode){super(axNode);this._property=property;this.toggleOnClick=true;this.selectable=false;this.listItemElement.classList.add('property');}
onattach(){this._update();}
_update(){this.listItemElement.removeChildren();this.appendNameElement(this._property.name);this.listItemElement.createChild('span','separator').textContent=':\u00A0';this.appendValueElement(this._property.value);}};Accessibility.AXValueSourceTreeElement=class extends Accessibility.AXNodePropertyTreeElement{constructor(source,axNode){super(axNode);this._source=source;this.selectable=false;}
onattach(){this._update();}
appendRelatedNodeWithIdref(relatedNode,index,idref){const deferredNode=new SDK.DeferredDOMNode(this._axNode.accessibilityModel().target(),relatedNode.backendDOMNodeId);const nodeTreeElement=new Accessibility.AXRelatedNodeSourceTreeElement({deferredNode:deferredNode,idref:idref},relatedNode);this.appendChild(nodeTreeElement);}
appendIDRefValueElement(value){const relatedNodes=value.relatedNodes;const idrefs=value.value.trim().split(/\s+/);if(idrefs.length===1){const idref=idrefs[0];const matchingNode=relatedNodes.find(node=>node.idref===idref);if(matchingNode)
this.appendRelatedNodeWithIdref(matchingNode,0,idref);else
this.listItemElement.appendChild(new Accessibility.AXRelatedNodeElement({idref:idref}).render());}else{for(let i=0;i<idrefs.length;++i){const idref=idrefs[i];const matchingNode=relatedNodes.find(node=>node.idref===idref);if(matchingNode)
this.appendRelatedNodeWithIdref(matchingNode,i,idref);else
this.appendChild(new Accessibility.AXRelatedNodeSourceTreeElement({idref:idref}));}}}
appendRelatedNodeListValueElement(value){const relatedNodes=value.relatedNodes;const numNodes=relatedNodes.length;if(value.type===Protocol.Accessibility.AXValueType.IdrefList||value.type===Protocol.Accessibility.AXValueType.Idref)
this.appendIDRefValueElement(value);else
super.appendRelatedNodeListValueElement(value);if(numNodes<=3)
this.expand();else
this.collapse();}
appendSourceNameElement(source){const nameElement=createElement('span');const AXValueSourceType=Protocol.Accessibility.AXValueSourceType;const type=source.type;switch(type){case AXValueSourceType.Attribute:case AXValueSourceType.Placeholder:case AXValueSourceType.RelatedElement:if(source.nativeSource){const AXNativeSourceTypes=Accessibility.AccessibilityStrings.AXNativeSourceTypes;const nativeSource=source.nativeSource;nameElement.textContent=ls(AXNativeSourceTypes[nativeSource].name);nameElement.title=ls(AXNativeSourceTypes[nativeSource].description);nameElement.classList.add('ax-readable-name');break;}
nameElement.textContent=source.attribute;nameElement.classList.add('ax-name');nameElement.classList.add('monospace');break;default:const AXSourceTypes=Accessibility.AccessibilityStrings.AXSourceTypes;if(type in AXSourceTypes){nameElement.textContent=ls(AXSourceTypes[type].name);nameElement.title=ls(AXSourceTypes[type].description);nameElement.classList.add('ax-readable-name');}else{console.warn(type,'not in AXSourceTypes');nameElement.textContent=ls(type);}}
this.listItemElement.appendChild(nameElement);}
_update(){this.listItemElement.removeChildren();if(this._source.invalid){const exclamationMark=Accessibility.AXNodePropertyTreeElement.createExclamationMark(ls`Invalid source.`);this.listItemElement.appendChild(exclamationMark);this.listItemElement.classList.add('ax-value-source-invalid');}else if(this._source.superseded){this.listItemElement.classList.add('ax-value-source-unused');}
this.appendSourceNameElement(this._source);this.listItemElement.createChild('span','separator').textContent=':\u00a0';if(this._source.attributeValue){this.appendValueElement(this._source.attributeValue);this.listItemElement.createTextChild('\u00a0');}else if(this._source.nativeSourceValue){this.appendValueElement(this._source.nativeSourceValue);this.listItemElement.createTextChild('\u00a0');if(this._source.value)
this.appendValueElement(this._source.value);}else if(this._source.value){this.appendValueElement(this._source.value);}else{const valueElement=Accessibility.AXNodePropertyTreeElement.createSimpleValueElement(Protocol.Accessibility.AXValueType.ValueUndefined,ls`Not specified`);this.listItemElement.appendChild(valueElement);this.listItemElement.classList.add('ax-value-source-unused');}
if(this._source.value&&this._source.superseded)
this.listItemElement.classList.add('ax-value-source-superseded');}};Accessibility.AXRelatedNodeSourceTreeElement=class extends UI.TreeElement{constructor(node,value){super('');this._value=value;this._axRelatedNodeElement=new Accessibility.AXRelatedNodeElement(node,value);this.selectable=false;}
onattach(){this.listItemElement.appendChild(this._axRelatedNodeElement.render());if(!this._value)
return;if(this._value.text){this.listItemElement.appendChild(Accessibility.AXNodePropertyTreeElement.createSimpleValueElement(Protocol.Accessibility.AXValueType.ComputedString,this._value.text));}}};Accessibility.AXRelatedNodeElement=class{constructor(node,value){this._deferredNode=node.deferredNode;this._idref=node.idref;this._value=value;}
render(){const element=createElement('span');let valueElement;if(this._deferredNode){valueElement=createElement('span');element.appendChild(valueElement);Common.Linkifier.linkify(this._deferredNode).then(linkfied=>valueElement.appendChild(linkfied));}else if(this._idref){element.classList.add('invalid');valueElement=Accessibility.AXNodePropertyTreeElement.createExclamationMark(ls`No node with this ID.`);valueElement.createTextChild(this._idref);element.appendChild(valueElement);}
return element;}};Accessibility.AXNodeIgnoredReasonTreeElement=class extends Accessibility.AXNodePropertyTreeElement{constructor(property,axNode){super(axNode);this._property=property;this._axNode=axNode;this.toggleOnClick=true;this.selectable=false;}
static createReasonElement(reason,axNode){let reasonElement=null;switch(reason){case'activeModalDialog':reasonElement=UI.formatLocalized('Element is hidden by active modal dialog:\u00a0',[]);break;case'ancestorIsLeafNode':reasonElement=UI.formatLocalized('Ancestor\'s children are all presentational:\u00a0',[]);break;case'ariaHiddenElement':{const ariaHiddenSpan=createElement('span','source-code').textContent='aria-hidden';reasonElement=UI.formatLocalized('Element is %s.',[ariaHiddenSpan]);break;}
case'ariaHiddenSubtree':{const ariaHiddenSpan=createElement('span','source-code').textContent='aria-hidden';const trueSpan=createElement('span','source-code').textContent='true';reasonElement=UI.formatLocalized('%s is %s on ancestor:\u00a0',[ariaHiddenSpan,trueSpan]);break;}
case'emptyAlt':reasonElement=UI.formatLocalized('Element has empty alt text.',[]);break;case'emptyText':reasonElement=UI.formatLocalized('No text content.',[]);break;case'inertElement':reasonElement=UI.formatLocalized('Element is inert.',[]);break;case'inertSubtree':reasonElement=UI.formatLocalized('Element is in an inert subtree from\u00a0',[]);break;case'inheritsPresentation':reasonElement=UI.formatLocalized('Element inherits presentational role from\u00a0',[]);break;case'labelContainer':reasonElement=UI.formatLocalized('Part of label element:\u00a0',[]);break;case'labelFor':reasonElement=UI.formatLocalized('Label for\u00a0',[]);break;case'notRendered':reasonElement=UI.formatLocalized('Element is not rendered.',[]);break;case'notVisible':reasonElement=UI.formatLocalized('Element is not visible.',[]);break;case'presentationalRole':{const rolePresentationSpan=createElement('span','source-code').textContent='role='+axNode.role().value;reasonElement=UI.formatLocalized('Element has %s.',[rolePresentationSpan]);break;}
case'probablyPresentational':reasonElement=UI.formatLocalized('Element is presentational.',[]);break;case'staticTextUsedAsNameFor':reasonElement=UI.formatLocalized('Static text node is used as name for\u00a0',[]);break;case'uninteresting':reasonElement=UI.formatLocalized('Element not interesting for accessibility.',[]);break;}
if(reasonElement)
reasonElement.classList.add('ax-reason');return reasonElement;}
onattach(){this.listItemElement.removeChildren();this._reasonElement=Accessibility.AXNodeIgnoredReasonTreeElement.createReasonElement(this._property.name,this._axNode);this.listItemElement.appendChild(this._reasonElement);const value=this._property.value;if(value.type===Protocol.Accessibility.AXValueType.Idref)
this.appendRelatedNodeListValueElement(value);}};;Accessibility.AccessibilityStrings={};Accessibility.AccessibilityStrings.AXAttributes={'disabled':{name:'Disabled',description:'If true, this element currently cannot be interacted with.',group:'AXGlobalStates'},'invalid':{name:'Invalid user entry',description:'If true, this element\'s user-entered value does not conform to validation requirement.',group:'AXGlobalStates'},'live':{name:'Live region',description:'Whether and what priority of live updates may be expected for this element.',group:'AXLiveRegionAttributes'},'atomic':{name:'Atomic (live regions)',description:'If this element may receive live updates, whether the entire live region should be presented to the user on changes, or only changed nodes.',group:'AXLiveRegionAttributes'},'relevant':{name:'Relevant (live regions)',description:'If this element may receive live updates, what type of updates should trigger a notification.',group:'AXLiveRegionAttributes'},'busy':{name:'Busy (live regions)',description:'Whether this element or its subtree are currently being updated (and thus may be in an inconsistent state).',group:'AXLiveRegionAttributes'},'root':{name:'Live region root',description:'If this element may receive live updates, the root element of the containing live region.',group:'AXLiveRegionAttributes'},'autocomplete':{name:'Has autocomplete',description:'Whether and what type of autocomplete suggestions are currently provided by this element.',group:'AXWidgetAttributes'},'haspopup':{name:'Has popup',description:'Whether this element has caused some kind of pop-up (such as a menu) to appear.',group:'AXWidgetAttributes'},'level':{name:'Level',description:'The hierarchical level of this element.',group:'AXWidgetAttributes'},'multiselectable':{name:'Multi-selectable',description:'Whether a user may select more than one option from this widget.',group:'AXWidgetAttributes'},'orientation':{name:'Orientation',description:'Whether this linear element\'s orientation is horizontal or vertical.',group:'AXWidgetAttributes'},'multiline':{name:'Multi-line',description:'Whether this textbox may have more than one line.',group:'AXWidgetAttributes'},'readonly':{name:'Read-only',description:'If true, this element may be interacted with, but its value cannot be changed.',group:'AXWidgetAttributes'},'required':{name:'Required',description:'Whether this element is a required field in a form.',group:'AXWidgetAttributes'},'valuemin':{name:'Minimum value',description:'For a range widget, the minimum allowed value.',group:'AXWidgetAttributes'},'valuemax':{name:'Maximum value',description:'For a range widget, the maximum allowed value.',group:'AXWidgetAttributes'},'valuetext':{name:'Value description',description:'A human-readable version of the value of a range widget (where necessary).',group:'AXWidgetAttributes'},'checked':{name:'Checked',description:'Whether this checkbox, radio button or tree item is checked, unchecked, or mixed (e.g. has both checked and un-checked children).',group:'AXWidgetStates'},'expanded':{name:'Expanded',description:'Whether this element, or another grouping element it controls, is expanded.',group:'AXWidgetStates'},'pressed':{name:'Pressed',description:'Whether this toggle button is currently in a pressed state.',group:'AXWidgetStates'},'selected':{name:'Selected',description:'Whether the option represented by this element is currently selected.',group:'AXWidgetStates'},'activedescendant':{name:'Active descendant',description:'The descendant of this element which is active; i.e. the element to which focus should be delegated.',group:'AXRelationshipAttributes'},'flowto':{name:'Flows to',description:'Element to which the user may choose to navigate after this one, instead of the next element in the DOM order.',group:'AXRelationshipAttributes'},'controls':{name:'Controls',description:'Element or elements whose content or presence is/are controlled by this widget.',group:'AXRelationshipAttributes'},'describedby':{name:'Described by',description:'Element or elements which form the description of this element.',group:'AXRelationshipAttributes'},'labelledby':{name:'Labeled by',description:'Element or elements which may form the name of this element.',group:'AXRelationshipAttributes'},'owns':{name:'Owns',description:'Element or elements which should be considered descendants of this element, despite not being descendants in the DOM.',group:'AXRelationshipAttributes'},'name':{name:'Name',description:'The computed name of this element.',group:'Default'},'role':{name:'Role',description:'Indicates the purpose of this element, such as a user interface idiom for a widget, or structural role within a document.',group:'Default'},'value':{name:'Value',description:'The value of this element; this may be user-provided or developer-provided, depending on the element.',group:'Default'},'help':{name:'Help',description:'The computed help text for this element.',group:'Default'},'description':{name:'Description',description:'The accessible description for this element.',group:'Default'}};Accessibility.AccessibilityStrings.AXSourceTypes={'attribute':{name:'From attribute',description:'Value from attribute.'},'implicit':{name:'Implicit',description:'Implicit value.',},'style':{name:'From style',description:'Value from style.'},'contents':{name:'Contents',description:'Value from element contents.'},'placeholder':{name:'From placeholder attribute',description:'Value from placeholder attribute.'},'relatedElement':{name:'Related element',description:'Value from related element.'}};Accessibility.AccessibilityStrings.AXNativeSourceTypes={'figcaption':{name:'From caption',description:'Value from figcaption element.'},'label':{name:'From label',description:'Value from label element.'},'labelfor':{name:'From label (for)',description:'Value from label element with for= attribute.'},'labelwrapped':{name:'From label (wrapped)',description:'Value from label element wrapped.'},'tablecaption':{name:'From caption',description:'Value from table caption.'},'title':{'name':'From title','description':'Value from title attribute.'},'other':{name:'From native HTML',description:'Value from native HTML (unknown source).'},};;Accessibility.ARIAAttributesPane=class extends Accessibility.AccessibilitySubPane{constructor(){super(ls`ARIA Attributes`);this._noPropertiesInfo=this.createInfo(ls`No ARIA attributes`);this._treeOutline=this.createTreeOutline();}
setNode(node){super.setNode(node);this._treeOutline.removeChildren();if(!this.node())
return;const target=this.node().domModel().target();const attributes=node.attributes();for(let i=0;i<attributes.length;++i){const attribute=attributes[i];if(Accessibility.ARIAAttributesPane._attributes.indexOf(attribute.name)<0)
continue;this._treeOutline.appendChild(new Accessibility.ARIAAttributesTreeElement(this,attribute,target));}
const foundAttributes=(this._treeOutline.rootElement().childCount()!==0);this._noPropertiesInfo.classList.toggle('hidden',foundAttributes);this._treeOutline.element.classList.toggle('hidden',!foundAttributes);}};Accessibility.ARIAAttributesTreeElement=class extends UI.TreeElement{constructor(parentPane,attribute,target){super('');this._parentPane=parentPane;this._attribute=attribute;this.selectable=false;}
static createARIAValueElement(value){const valueElement=createElementWithClass('span','monospace');valueElement.setTextContentTruncatedIfNeeded(value||'');return valueElement;}
onattach(){this._populateListItem();this.listItemElement.addEventListener('click',this._mouseClick.bind(this));}
_populateListItem(){this.listItemElement.removeChildren();this.appendNameElement(this._attribute.name);this.listItemElement.createChild('span','separator').textContent=':\u00A0';this.appendAttributeValueElement(this._attribute.value);}
appendNameElement(name){this._nameElement=createElement('span');this._nameElement.textContent=name;this._nameElement.classList.add('ax-name');this._nameElement.classList.add('monospace');this.listItemElement.appendChild(this._nameElement);}
appendAttributeValueElement(value){this._valueElement=Accessibility.ARIAAttributesTreeElement.createARIAValueElement(value);this.listItemElement.appendChild(this._valueElement);}
_mouseClick(event){if(event.target===this.listItemElement)
return;event.consume(true);this._startEditing();}
_startEditing(){const valueElement=this._valueElement;if(UI.isBeingEdited(valueElement))
return;const previousContent=valueElement.textContent;function blurListener(previousContent,event){const text=event.target.textContent;this._editingCommitted(text,previousContent);}
this._prompt=new Accessibility.ARIAAttributesPane.ARIAAttributePrompt(Accessibility.ariaMetadata().valuesForProperty(this._nameElement.textContent),this);this._prompt.setAutocompletionTimeout(0);const proxyElement=this._prompt.attachAndStartEditing(valueElement,blurListener.bind(this,previousContent));proxyElement.addEventListener('keydown',this._editingValueKeyDown.bind(this,previousContent),false);valueElement.getComponentSelection().selectAllChildren(valueElement);}
_removePrompt(){if(!this._prompt)
return;this._prompt.detach();delete this._prompt;}
_editingCommitted(userInput,previousContent){this._removePrompt();if(userInput!==previousContent)
this._parentPane.node().setAttributeValue(this._attribute.name,userInput);}
_editingCancelled(){this._removePrompt();this._populateListItem();}
_editingValueKeyDown(previousContent,event){if(event.handled)
return;if(isEnterKey(event)){this._editingCommitted(event.target.textContent,previousContent);event.consume();return;}
if(event.keyCode===UI.KeyboardShortcut.Keys.Esc.code||event.keyIdentifier==='U+001B'){this._editingCancelled();event.consume();return;}}};Accessibility.ARIAAttributesPane.ARIAAttributePrompt=class extends UI.TextPrompt{constructor(ariaCompletions,treeElement){super();this.initialize(this._buildPropertyCompletions.bind(this));this._ariaCompletions=ariaCompletions;this._treeElement=treeElement;}
_buildPropertyCompletions(expression,prefix,force){prefix=prefix.toLowerCase();if(!prefix&&!force&&(this._isEditingName||expression))
return Promise.resolve([]);return Promise.resolve(this._ariaCompletions.filter(value=>value.startsWith(prefix)).map(c=>({text:c})));}};Accessibility.ARIAAttributesPane._attributes=['role','aria-busy','aria-checked','aria-disabled','aria-expanded','aria-grabbed','aria-hidden','aria-invalid','aria-pressed','aria-selected','aria-activedescendant','aria-atomic','aria-autocomplete','aria-controls','aria-describedby','aria-dropeffect','aria-flowto','aria-haspopup','aria-label','aria-labelledby','aria-level','aria-live','aria-multiline','aria-multiselectable','aria-orientation','aria-owns','aria-posinset','aria-readonly','aria-relevant','aria-required','aria-setsize','aria-sort','aria-valuemax','aria-valuemin','aria-valuenow','aria-valuetext',];;Accessibility.ARIAMetadata=class{constructor(config){this._attributes=new Map();if(config)
this._initialize(config);}
_initialize(config){const attributes=config['attributes'];const booleanEnum=['true','false'];for(const name in attributes){const attributeConfig=attributes[name];if(attributeConfig.type==='boolean')
attributeConfig.enum=booleanEnum;this._attributes.set(name,new Accessibility.ARIAMetadata.Attribute(attributeConfig));}
this._roleNames=Object.keys(config['roles']);}
valuesForProperty(property){if(this._attributes.has(property))
return this._attributes.get(property).getEnum();if(property==='role')
return this._roleNames;return[];}};Accessibility.ariaMetadata=function(){if(!Accessibility.ARIAMetadata._instance)
Accessibility.ARIAMetadata._instance=new Accessibility.ARIAMetadata(Accessibility.ARIAMetadata._config||null);return Accessibility.ARIAMetadata._instance;};Accessibility.ARIAMetadata.Attribute=class{constructor(config){this._enum=[];if('enum'in config)
this._enum=config.enum;}
getEnum(){return this._enum;}};;Accessibility.ARIAMetadata._config={'attributes':{'aria-activedescendant':{'type':'IDREF'},'aria-atomic':{'default':'false','type':'boolean'},'aria-autocomplete':{'default':'none','enum':['inline','list','both','none'],'type':'token'},'aria-busy':{'default':'false','type':'boolean'},'aria-checked':{'default':'undefined','enum':['true','false','mixed','undefined'],'type':'token'},'aria-colcount':{'type':'integer'},'aria-colindex':{'type':'integer'},'aria-colspan':{'type':'integer'},'aria-controls':{'type':'IDREF_list'},'aria-current':{'default':'false','enum':['page','step','location','date','time','true','false'],'type':'token'},'aria-describedby':{'type':'IDREF_list'},'aria-details':{'type':'IDREF'},'aria-disabled':{'default':'false','type':'boolean'},'aria-dropeffect':{'default':'none','enum':['copy','move','link','execute','popup','none'],'type':'token_list'},'aria-errormessage':{'type':'IDREF'},'aria-expanded':{'default':'undefined','enum':['true','false','undefined'],'type':'token'},'aria-flowto':{'type':'IDREF_list'},'aria-grabbed':{'default':'undefined','enum':['true','false','undefined'],'type':'token'},'aria-haspopup':{'default':'false','enum':['false','true','menu','listbox','tree','grid','dialog'],'type':'token'},'aria-hidden':{'default':'undefined','enum':['true','false','undefined'],'type':'token'},'aria-invalid':{'default':'false','enum':['grammar','false','spelling','true'],'type':'token'},'aria-keyshortcuts':{'type':'string'},'aria-label':{'type':'string'},'aria-labelledby':{'type':'IDREF_list'},'aria-level':{'type':'integer'},'aria-live':{'default':'off','enum':['off','polite','assertive'],'type':'token'},'aria-modal':{'default':'false','type':'boolean'},'aria-multiline':{'default':'false','type':'boolean'},'aria-multiselectable':{'default':'false','type':'boolean'},'aria-orientation':{'default':'undefined','enum':['horizontal','undefined','vertical'],'type':'token'},'aria-owns':{'type':'IDREF_list'},'aria-placeholder':{'type':'string'},'aria-posinset':{'type':'integer'},'aria-pressed':{'default':'undefined','enum':['true','false','mixed','undefined'],'type':'token'},'aria-readonly':{'default':'false','type':'boolean'},'aria-relevant':{'default':'additions text','enum':['additions','removals','text','all'],'type':'token_list'},'aria-required':{'default':'false','type':'boolean'},'aria-roledescription':{'type':'string'},'aria-rowcount':{'type':'integer'},'aria-rowindex':{'type':'integer'},'aria-rowspan':{'type':'integer'},'aria-selected':{'default':'undefined','enum':['true','false','undefined'],'type':'token'},'aria-setsize':{'type':'integer'},'aria-sort':{'default':'none','enum':['ascending','descending','none','other'],'type':'token'},'aria-valuemax':{'type':'decimal'},'aria-valuemin':{'type':'decimal'},'aria-valuenow':{'type':'decimal'},'aria-valuetext':{'type':'string'},'tabindex':{'type':'integer'}},'roles':{'alert':{'nameFrom':['author'],'superclasses':['section'],'implicitValues':{'aria-live':'assertive','aria-atomic':'true'}},'alertdialog':{'nameFrom':['author'],'superclasses':['alert','dialog'],'nameRequired':true},'application':{'nameFrom':['author'],'superclasses':['structure'],'nameRequired':true},'article':{'nameFrom':['author'],'superclasses':['document'],'supportedAttributes':['aria-posinset','aria-setsize']},'banner':{'nameFrom':['author'],'superclasses':['landmark']},'button':{'nameFrom':['contents','author'],'superclasses':['command'],'supportedAttributes':['aria-expanded','aria-pressed'],'nameRequired':true,'childrenPresentational':true},'cell':{'namefrom':['contents','author'],'scope':'row','superclasses':['section'],'supportedAttributes':['aria-colindex','aria-colspan','aria-rowindex','aria-rowspan']},'checkbox':{'nameFrom':['contents','author'],'requiredAttributes':['aria-checked'],'superclasses':['input'],'supportedAttributes':['aria-readonly'],'nameRequired':true,'implicitValues':{'aria-checked':false}},'columnheader':{'nameFrom':['contents','author'],'scope':['row'],'superclasses':['gridcell','sectionhead','widget'],'supportedAttributes':['aria-sort'],'nameRequired':true},'combobox':{'mustContain':['textbox'],'nameFrom':['author'],'requiredAttributes':['aria-controls','aria-expanded'],'superclasses':['select'],'supportedAttributes':['aria-autocomplete','aria-readonly','aria-required'],'nameRequired':true,'implicitValues':{'aria-expanded':'false','aria-haspopup':'listbox'}},'command':{'abstract':true,'nameFrom':['author'],'superclasses':['widget']},'complementary':{'nameFrom':['author'],'superclasses':['landmark']},'composite':{'abstract':true,'nameFrom':['author'],'superclasses':['widget'],'supportedAttributes':['aria-activedescendant'],},'contentinfo':{'nameFrom':['author'],'superclasses':['landmark']},'definition':{'nameFrom':['author'],'superclasses':['section']},'dialog':{'nameFrom':['author'],'superclasses':['window'],'nameRequired':true},'directory':{'nameFrom':['author'],'superclasses':['list']},'document':{'nameFrom':['author'],'superclasses':['structure'],'supportedAttributes':['aria-expanded'],'nameRequired':false},'feed':{'nameFrom':['author'],'superclasses':['list'],'mustContain':['article'],'nameRequired':false},'figure':{'namefrom':['author'],'superclasses':['section'],'nameRequired':false},'form':{'nameFrom':['author'],'superclasses':['landmark']},'grid':{'nameFrom':['author'],'superclasses':['composite','table'],'mustContain':['row'],'supportedAttributes':['aria-level','aria-multiselectable','aria-readonly'],'nameRequired':true},'gridcell':{'nameFrom':['contents','author'],'scope':['row'],'superclasses':['cell','widget'],'supportedAttributes':['aria-readonly','aria-required','aria-selected'],'nameRequired':true},'group':{'nameFrom':['author'],'superclasses':['section'],'supportedAttributes':['aria-activedescendant']},'heading':{'namefrom':['contents','author'],'superclasses':['sectionhead'],'supportedAttributes':['aria-level'],'nameRequired':true,'implicitValues':{'aria-level':'2'}},'img':{'nameFrom':['author'],'superclasses':['section'],'nameRequired':true,'childrenPresentational':true},'input':{'abstract':true,'nameFrom':['author'],'superclasses':['widget']},'landmark':{'abstract':true,'nameFrom':['author'],'superclasses':['section'],'nameRequired':false},'link':{'nameFrom':['contents','author'],'superclasses':['command'],'supportedAttributes':['aria-expanded'],'nameRequired':true},'list':{'mustContain':['listitem'],'nameFrom':['author'],'superclasses':['section'],'implicitValues':{'aria-orientation':'vertical'}},'listbox':{'nameFrom':['author'],'superclasses':['select'],'mustContain':['option'],'supportedAttributes':['aria-multiselectable','aria-readonly','aria-required'],'nameRequired':true,'implicitValues':{'aria-orientation':'vertical'},},'listitem':{'nameFrom':['author'],'superclasses':['section'],'scope':['group','list'],'supportedAttributes':['aria-level','aria-posinset','aria-setsize']},'log':{'nameFrom':['author'],'superclasses':['section'],'nameRequired':true,'implicitValues':{'aria-live':'polite'}},'main':{'nameFrom':['author'],'superclasses':['landmark']},'marquee':{'nameFrom':['author'],'superclasses':['section'],'nameRequired':true},'math':{'nameFrom':['author'],'superclasses':['section'],'nameRequired':true,childrenPresentational:true},'menu':{'mustContain':['group','menuitemradio','menuitem','menuitemcheckbox','menuitemradio'],'nameFrom':['author'],'superclasses':['select'],'implicitValues':{'aria-orientation':'vertical'}},'menubar':{'nameFrom':['author'],'superclasses':['menu'],'mustContain':['menuitem','menuitemradio','menuitemcheckbox'],'implicitValues':{'aria-orientation':'horizontal'}},'menuitem':{'nameFrom':['contents','author'],'scope':['group','menu','menubar'],'superclasses':['command'],'nameRequired':true},'menuitemcheckbox':{'nameFrom':['contents','author'],'scope':['menu','menubar'],'superclasses':['checkbox','menuitem'],'nameRequired':true,'childrenPresentational':true,'implicitValues':{'aria-checked':false}},'menuitemradio':{'nameFrom':['contents','author'],'scope':['menu','menubar','group'],'superclasses':['menuitemcheckbox','radio'],'nameRequired':true,'childrenPresentational':true,'implicitValues':{'aria-checked':false}},'navigation':{'nameFrom':['author'],'superclasses':['landmark']},'none':{'superclasses':['structure']},'note':{'nameFrom':['author'],'superclasses':['section']},'option':{'nameFrom':['contents','author'],'scope':['listbox'],'superclasses':['input'],'requiredAttributes':['aria-selected'],'supportedAttributes':['aria-checked','aria-posinset','aria-setsize'],'nameRequired':true,'childrenPresentational':true,'implicitValues':{'aria-selected':'false'}},'presentation':{'superclasses':['structure']},'progressbar':{'nameFrom':['author'],'superclasses':['range'],'nameRequired':true,'childrenPresentational':true},'radio':{'nameFrom':['contents','author'],'superclasses':['input'],'requiredAttributes':['aria-checked'],'supportedAttributes':['aria-posinset','aria-setsize'],'nameRequired':true,'childrenPresentational':true,'implicitValues':{'aria-checked':'false'}},'radiogroup':{'nameFrom':['author'],'superclasses':['select'],'mustContain':['radio'],'supportedAttributes':['aria-readonly','aria-required'],'nameRequired':true},'range':{'abstract':true,'nameFrom':['author'],'superclasses':['widget'],'supportedAttributes':['aria-valuemax','aria-valuemin','aria-valuenow','aria-valuetext']},'region':{'nameFrom':['author'],'superclasses':['landmark'],'nameRequired':true},'roletype':{'abstract':true,'supportedAttributes':['aria-atomic','aria-busy','aria-controls','aria-current','aria-describedby','aria-details','aria-disabled','aria-dropeffect','aria-errormessage','aria-flowto','aria-grabbed','aria-haspopup','aria-hidden','aria-invalid','aria-keyshortcuts','aria-label','aria-labelledby','aria-live','aria-owns','aria-relevant','aria-roledescription']},'row':{'nameFrom':['contents','author'],'superclasses':['group','widget'],'mustContain':['cell','columnheader','gridcell','rowheader'],'scope':['grid','rowgroup','table','treegrid'],'supportedAttributes':['aria-colindex','aria-level','aria-rowindex','aria-selected','aria-setsize','aria-posinset']},'rowgroup':{'nameFrom':['contents','author'],'superclasses':['structure'],'mustContain':['row'],'scope':['grid','table','treegrid'],},'rowheader':{'nameFrom':['contents','author'],'scope':['row'],'superclasses':['cell','gridcell','sectionhead'],'supportedAttributes':['aria-sort'],'nameRequired':true},'scrollbar':{'nameFrom':['author'],'requiredAttributes':['aria-controls','aria-orientation','aria-valuemax','aria-valuemin','aria-valuenow'],'superclasses':['range'],'nameRequired':false,'childrenPresentational':true,'implicitValues':{'aria-orientation':'vertical','aria-valuemin':'0','aria-valuemax':'100'}},'search':{'nameFrom':['author'],'superclasses':['landmark']},'searchbox':{'nameFrom':['author'],'superclasses':['textbox'],'nameRequired':true},'section':{'abstract':true,'superclasses':['structure'],'supportedAttributes':['aria-expanded']},'sectionhead':{'abstract':true,'nameFrom':['contents','author'],'superclasses':['structure'],'supportedAttributes':['aria-expanded']},'select':{'abstract':true,'nameFrom':['author'],'superclasses':['composite','group']},'separator':{'nameFrom':['author'],'superclasses':['structure'],'supportedAttributes':['aria-orientation','aria-valuemin','aria-valuemax','aria-valuenow','aria-valuetext']},'slider':{'nameFrom':['author'],'requiredAttributes':['aria-valuemax','aria-valuemin','aria-valuenow'],'superclasses':['input','range'],'supportedAttributes':['aria-orientation'],'nameRequired':true,'childrenPresentational':true,'implicitValues':{'aria-orientation':'horizontal','aria-valuemin':'0','aria-valuemax':'100'}},'spinbutton':{'nameFrom':['author'],'requiredAttributes':['aria-valuemax','aria-valuemin','aria-valuenow'],'superclasses':['composite','input','range'],'supportedAttributes':['aria-required','aria-readonly'],'nameRequired':true,'implicitValues':{'aria-valuenow':'0'}},'status':{'nameFrom':['author'],'superclasses':['section'],'implicitValues':{'aria-live':'polite','aria-atomic':'true'}},'structure':{'abstract':true,'superclasses':['roletype']},'switch':{'nameFrom':['contents','author'],'superclasses':['checkbox'],'requiredAttributes':['aria-checked'],'nameRequired':true,'childrenPresentational':true,'implicitValues':{'aria-checked':'false'}},'tab':{'nameFrom':['contents','author'],'scope':['tablist'],'superclasses':['sectionhead','widget'],'supportedAttributes':['aria-selected'],'childrenPresentational':true,'implicitValues':{'aria-selected':'false'}},'table':{'nameFrom':['author'],'superclasses':['section'],'mustContain':['row'],'supportedAttributes':['aria-colcount','aria-rowcount'],'nameRequired':true},'tablist':{'nameFrom':['author'],'superclasses':['composite'],'mustContain':['tab'],'supportedAttributes':['aria-level','aria-multiselectable','aria-orientation'],'implicitValues':{'aria-orientation':'horizontal'}},'tabpanel':{'nameFrom':['author'],'superclasses':['section'],'nameRequired':true},'term':{'nameFrom':['author'],'superclasses':['section']},'textbox':{'nameFrom':['author'],'superclasses':['input'],'supportedAttributes':['aria-activedescendant','aria-autocomplete','aria-multiline','aria-placeholder','aria-readonly','aria-required'],'nameRequired':true},'timer':{'nameFrom':['author'],'superclasses':['status']},'toolbar':{'nameFrom':['author'],'superclasses':['group'],'supportedAttributes':['aria-orientation'],'implicitValues':{'aria-orientation':'horizontal'}},'tooltip':{'nameFrom':['contents','author'],'superclasses':['section'],'nameRequired':true},'tree':{'nameFrom':['author'],'mustContain':['group','treeitem'],'superclasses':['select'],'supportedAttributes':['aria-multiselectable','aria-required'],'nameRequired':true,'implicitValues':{'aria-orientation':'vertical'}},'treegrid':{'mustContain':['row'],'nameFrom':['author'],'superclasses':['grid','tree'],'nameRequired':true},'treeitem':{'nameFrom':['contents','author'],'scope':['group','tree'],'superclasses':['listitem','option'],'nameRequired':true},'widget':{'abstract':true,'superclasses':['roletype']},'window':{'abstract':true,'nameFrom':['author'],'superclasses':['roletype'],'supportedAttributes':['aria-expanded','aria-modal']}}};;Accessibility.AXBreadcrumbsPane=class extends Accessibility.AccessibilitySubPane{constructor(axSidebarView){super(ls`Accessibility Tree`);this.element.classList.add('ax-subpane');UI.ARIAUtils.markAsTree(this.element);this.element.tabIndex=-1;this._axSidebarView=axSidebarView;this._preselectedBreadcrumb=null;this._inspectedNodeBreadcrumb=null;this._hoveredBreadcrumb=null;this._rootElement=this.element.createChild('div','ax-breadcrumbs');this._rootElement.addEventListener('keydown',this._onKeyDown.bind(this),true);this._rootElement.addEventListener('mousemove',this._onMouseMove.bind(this),false);this._rootElement.addEventListener('mouseleave',this._onMouseLeave.bind(this),false);this._rootElement.addEventListener('click',this._onClick.bind(this),false);this._rootElement.addEventListener('contextmenu',this._contextMenuEventFired.bind(this),false);this._rootElement.addEventListener('focusout',this._onFocusOut.bind(this),false);this.registerRequiredCSS('accessibility/axBreadcrumbs.css');}
focus(){if(this._inspectedNodeBreadcrumb)
this._inspectedNodeBreadcrumb.nodeElement().focus();else
this.element.focus();}
setAXNode(axNode){const hadFocus=this.element.hasFocus();super.setAXNode(axNode);this._rootElement.removeChildren();if(!axNode)
return;const ancestorChain=[];let ancestor=axNode;while(ancestor){ancestorChain.push(ancestor);ancestor=ancestor.parentNode();}
ancestorChain.reverse();let depth=0;let breadcrumb=null;let parent=null;for(ancestor of ancestorChain){breadcrumb=new Accessibility.AXBreadcrumb(ancestor,depth,(ancestor===axNode));if(parent)
parent.appendChild(breadcrumb);else
this._rootElement.appendChild(breadcrumb.element());parent=breadcrumb;depth++;}
this._inspectedNodeBreadcrumb=breadcrumb;this._inspectedNodeBreadcrumb.setPreselected(true,hadFocus);this._setPreselectedBreadcrumb(this._inspectedNodeBreadcrumb);function append(parentBreadcrumb,axNode,localDepth){const childBreadcrumb=new Accessibility.AXBreadcrumb(axNode,localDepth,false);parentBreadcrumb.appendChild(childBreadcrumb);for(const child of axNode.children())
append(childBreadcrumb,child,localDepth+1);}
for(const child of axNode.children())
append(this._inspectedNodeBreadcrumb,child,depth);}
willHide(){this._setPreselectedBreadcrumb(null);}
_onKeyDown(event){if(!this._preselectedBreadcrumb)
return;if(!event.composedPath().some(element=>element===this._preselectedBreadcrumb.element()))
return;if(event.shiftKey||event.metaKey||event.ctrlKey)
return;let handled=false;if((event.key==='ArrowUp'||event.key==='ArrowLeft')&&!event.altKey)
handled=this._preselectPrevious();else if((event.key==='ArrowDown'||event.key==='ArrowRight')&&!event.altKey)
handled=this._preselectNext();else if(isEnterKey(event))
handled=this._inspectDOMNode(this._preselectedBreadcrumb.axNode());if(handled)
event.consume(true);}
_preselectPrevious(){const previousBreadcrumb=this._preselectedBreadcrumb.previousBreadcrumb();if(!previousBreadcrumb)
return false;this._setPreselectedBreadcrumb(previousBreadcrumb);return true;}
_preselectNext(){const nextBreadcrumb=this._preselectedBreadcrumb.nextBreadcrumb();if(!nextBreadcrumb)
return false;this._setPreselectedBreadcrumb(nextBreadcrumb);return true;}
_setPreselectedBreadcrumb(breadcrumb){if(breadcrumb===this._preselectedBreadcrumb)
return;const hadFocus=this.element.hasFocus();if(this._preselectedBreadcrumb)
this._preselectedBreadcrumb.setPreselected(false,hadFocus);if(breadcrumb)
this._preselectedBreadcrumb=breadcrumb;else
this._preselectedBreadcrumb=this._inspectedNodeBreadcrumb;this._preselectedBreadcrumb.setPreselected(true,hadFocus);if(!breadcrumb&&hadFocus)
SDK.OverlayModel.hideDOMNodeHighlight();}
_onMouseLeave(event){this._setHoveredBreadcrumb(null);}
_onMouseMove(event){const breadcrumbElement=event.target.enclosingNodeOrSelfWithClass('ax-breadcrumb');if(!breadcrumbElement){this._setHoveredBreadcrumb(null);return;}
const breadcrumb=breadcrumbElement.breadcrumb;if(!breadcrumb.isDOMNode())
return;this._setHoveredBreadcrumb(breadcrumb);}
_onFocusOut(event){if(!this._preselectedBreadcrumb||event.target!==this._preselectedBreadcrumb.nodeElement())
return;this._setPreselectedBreadcrumb(null);}
_onClick(event){const breadcrumbElement=event.target.enclosingNodeOrSelfWithClass('ax-breadcrumb');if(!breadcrumbElement){this._setHoveredBreadcrumb(null);return;}
const breadcrumb=breadcrumbElement.breadcrumb;if(breadcrumb.inspected()){breadcrumb.nodeElement().focus();return;}
if(!breadcrumb.isDOMNode())
return;this._inspectDOMNode(breadcrumb.axNode());}
_setHoveredBreadcrumb(breadcrumb){if(breadcrumb===this._hoveredBreadcrumb)
return;if(this._hoveredBreadcrumb)
this._hoveredBreadcrumb.setHovered(false);if(breadcrumb){breadcrumb.setHovered(true);}else if(this.node()){this.node().domModel().overlayModel().nodeHighlightRequested(this.node().id);}
this._hoveredBreadcrumb=breadcrumb;}
_inspectDOMNode(axNode){if(!axNode.isDOMNode())
return false;axNode.deferredDOMNode().resolve(domNode=>{this._axSidebarView.setNode(domNode,true);Common.Revealer.reveal(domNode,true);});return true;}
_contextMenuEventFired(event){const breadcrumbElement=event.target.enclosingNodeOrSelfWithClass('ax-breadcrumb');if(!breadcrumbElement)
return;const axNode=breadcrumbElement.breadcrumb.axNode();if(!axNode.isDOMNode()||!axNode.deferredDOMNode())
return;const contextMenu=new UI.ContextMenu(event);contextMenu.viewSection().appendItem(ls`Scroll into view`,()=>{axNode.deferredDOMNode().resolvePromise().then(domNode=>{if(!domNode)
return;domNode.scrollIntoView();});});contextMenu.appendApplicableItems(axNode.deferredDOMNode());contextMenu.show();}};Accessibility.AXBreadcrumb=class{constructor(axNode,depth,inspected){this._axNode=axNode;this._element=createElementWithClass('div','ax-breadcrumb');this._element.breadcrumb=this;this._nodeElement=createElementWithClass('div','ax-node');UI.ARIAUtils.markAsTreeitem(this._nodeElement);this._nodeElement.tabIndex=-1;this._element.appendChild(this._nodeElement);this._nodeWrapper=createElementWithClass('div','wrapper');this._nodeElement.appendChild(this._nodeWrapper);this._selectionElement=createElementWithClass('div','selection fill');this._nodeElement.appendChild(this._selectionElement);this._childrenGroupElement=createElementWithClass('div','children');UI.ARIAUtils.markAsGroup(this._childrenGroupElement);this._element.appendChild(this._childrenGroupElement);this._children=[];this._hovered=false;this._preselected=false;this._parent=null;this._inspected=inspected;this._nodeElement.classList.toggle('inspected',inspected);this._nodeElement.style.paddingLeft=(16*depth+4)+'px';if(this._axNode.ignored()){this._appendIgnoredNodeElement();}else{this._appendRoleElement(this._axNode.role());if(this._axNode.name()&&this._axNode.name().value){this._nodeWrapper.createChild('span','separator').textContent='\u00A0';this._appendNameElement((this._axNode.name().value));}}
if(this._axNode.hasOnlyUnloadedChildren())
this._nodeElement.classList.add('children-unloaded');if(!this._axNode.isDOMNode())
this._nodeElement.classList.add('no-dom-node');}
element(){return this._element;}
nodeElement(){return this._nodeElement;}
appendChild(breadcrumb){this._children.push(breadcrumb);breadcrumb.setParent(this);this._nodeElement.classList.add('parent');UI.ARIAUtils.setExpanded(this._nodeElement,true);this._childrenGroupElement.appendChild(breadcrumb.element());}
setParent(breadcrumb){this._parent=breadcrumb;}
preselected(){return this._preselected;}
setPreselected(preselected,selectedByUser){if(this._preselected===preselected)
return;this._preselected=preselected;this._nodeElement.classList.toggle('preselected',preselected);if(preselected)
this._nodeElement.setAttribute('tabIndex',0);else
this._nodeElement.setAttribute('tabIndex',-1);if(this._preselected){if(selectedByUser)
this._nodeElement.focus();if(!this._inspected)
this._axNode.highlightDOMNode();else
SDK.OverlayModel.hideDOMNodeHighlight();}}
setHovered(hovered){if(this._hovered===hovered)
return;this._hovered=hovered;this._nodeElement.classList.toggle('hovered',hovered);if(this._hovered){this._nodeElement.classList.toggle('hovered',true);this._axNode.highlightDOMNode();}}
axNode(){return this._axNode;}
inspected(){return this._inspected;}
isDOMNode(){return this._axNode.isDOMNode();}
nextBreadcrumb(){if(this._children.length)
return this._children[0];const nextSibling=this.element().nextSibling;if(nextSibling)
return nextSibling.breadcrumb;return null;}
previousBreadcrumb(){const previousSibling=this.element().previousSibling;if(previousSibling)
return previousSibling.breadcrumb;return this._parent;}
_appendNameElement(name){const nameElement=createElement('span');nameElement.textContent='"'+name+'"';nameElement.classList.add('ax-readable-string');this._nodeWrapper.appendChild(nameElement);}
_appendRoleElement(role){if(!role)
return;const roleElement=createElementWithClass('span','monospace');roleElement.classList.add(Accessibility.AXBreadcrumb.RoleStyles[role.type]);roleElement.setTextContentTruncatedIfNeeded(role.value||'');this._nodeWrapper.appendChild(roleElement);}
_appendIgnoredNodeElement(){const ignoredNodeElement=createElementWithClass('span','monospace');ignoredNodeElement.textContent=ls`Ignored`;ignoredNodeElement.classList.add('ax-breadcrumbs-ignored-node');this._nodeWrapper.appendChild(ignoredNodeElement);}};Accessibility.AXBreadcrumb.RoleStyles={internalRole:'ax-internal-role',role:'ax-role',};;Runtime.cachedResources["accessibility/accessibilityNode.css"]="/*\n * Copyright 2017 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n.sidebar-pane.accessibility-computed {\n    background-color: rgba(0, 0, 0, 0.03);\n}\n\n.widget.ax-subpane {\n    overflow-x: hidden;\n    -webkit-user-select: text;\n}\n\ndiv.ax-text-alternatives {\n    margin-bottom: 3px;\n    border-bottom: 1px solid #BFBFBF;\n}\n\n.ax-ignored-info {\n    padding: 6px;\n}\n\n.ax-ignored-node-pane {\n    flex: none;\n}\n\n.invalid {\n    text-decoration: line-through;\n}\n\nspan.ax-value-undefined {\n    font-style: italic;\n}\n\n.ax-value-source-unused {\n    opacity: 0.7;\n}\n\n.ax-value-source-superseded,\n.ax-value-source-invalid {\n    text-decoration: line-through;\n}\n\n.sidebar-pane-stack .sidebar-pane {\n    padding-left: 4px;\n}\n\n.tree-outline span[is=dt-icon-label] {\n    position: relative;\n    left: -11px;\n}\n\n.tree-outline li {\n    display: block;\n    overflow-x: hidden;\n    padding-left: 1px;\n    align-items: baseline;\n}\n\n.tree-outline li::before {\n    content: \"\";\n    width: 14px;\n    display: inline-block;\n}\n\n.tree-outline li.property {\n    color: rgb(33, 33, 33);\n}\n\n.tree-outline li.invalid {\n    position: relative;\n    left: -2px;\n}\n\n.tree-outline span[is=dt-icon-label] + .ax-name {\n    margin-left: -11px;\n}\n\n.tree-outline li span {\n    flex-shrink: 0;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n}\n\n/*# sourceURL=accessibility/accessibilityNode.css */";Runtime.cachedResources["accessibility/accessibilityProperties.css"]="/*\n * Copyright 2015 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n.ax-name {\n    color: rgb(153, 69, 0);\n    flex-shrink: 0;\n}\n\n.ax-readable-name {\n    flex-shrink: 0;\n    padding-left: 2px;\n}\n\n.ax-readable-string {\n    font-style: italic;\n}\n\n.ax-value-string {\n    color: rgb(200, 0, 0);\n}\n\nspan.ax-internal-role {\n    font-style: italic;\n}\n\n/*# sourceURL=accessibility/accessibilityProperties.css */";Runtime.cachedResources["accessibility/axBreadcrumbs.css"]="/*\n * Copyright 2017 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style license that can be\n * found in the LICENSE file.\n */\n\n.ax-breadcrumbs-ignored-node {\n    font-style: italic;\n    opacity: 0.7;\n}\n\n.ax-breadcrumbs {\n    padding-top: 1px;\n    margin: 0;\n    position: relative;\n}\n\n.ax-breadcrumbs .ax-node {\n    align-items: center;\n    margin-top: 1px;\n    min-height: 16px;\n    overflow-x: hidden;\n    padding-left: 4px;\n    padding-right: 4px;\n    padding-top: 1px;\n    position: relative;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n}\n\n.ax-breadcrumbs .ax-node span {\n    flex-shrink: 0;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n}\n\n.ax-breadcrumbs .ax-node .wrapper {\n    padding-left: 12px;\n    overflow-x: hidden;\n}\n\n.ax-breadcrumbs .ax-node::before {\n    -webkit-mask-image: url(Images/chevrons.png);\n    -webkit-mask-position: 0 0;\n    -webkit-mask-size: 30px 10px;\n    -webkit-mask-repeat: no-repeat;\n    background-color: rgb(48, 57, 66);\n    content: \"\";\n    text-shadow: none;\n    margin-right: -2px;\n    height: 12px;\n    width: 14px;\n    position: absolute;\n    display: inline-block;\n}\n\n@media (-webkit-min-device-pixel-ratio: 1.1) {\n    .ax-breadcrumbs .ax-node::before {\n        -webkit-mask-image: url(Images/chevrons_2x.png);\n    }\n} /* media */\n\n.ax-breadcrumbs .ax-node:not(.parent):not(.children-unloaded)::before {\n    background-color: transparent;\n}\n\n.ax-breadcrumbs .ax-node.parent::before {\n    -webkit-mask-position: -20px 1px;\n}\n\n.ax-breadcrumbs .ax-node.children-unloaded::before {\n    -webkit-mask-position: 0px 1px;\n    width: 13px;\n}\n\n.ax-breadcrumbs .ax-node.no-dom-node {\n    opacity: 0.7;\n}\n\n.ax-breadcrumbs .ax-node.children-unloaded::before {\n    opacity: 0.4;\n}\n\n.ax-breadcrumbs .ax-node.preselected:not(.inspected) .selection,\n.ax-breadcrumbs .ax-node.hovered:not(.inspected) .selection {\n    display: block;\n    left: 2px;\n    right: 2px;\n    background-color: rgba(56, 121, 217, 0.1);\n    border-radius: 5px;\n}\n\n.ax-breadcrumbs .ax-node.preselected:not(.inspected):focus .selection {\n    border: 1px solid rgba(56, 121, 217, 0.4);\n}\n\n.ax-breadcrumbs .ax-node .selection {\n    display: none;\n    z-index: -1;\n}\n\n.ax-breadcrumbs .ax-node.inspected .selection {\n    display: block;\n    background-color: #ddd;\n}\n\n.ax-breadcrumbs .ax-node.inspected:focus .selection {\n    background-color: rgb(56, 121, 217);\n}\n\n.ax-breadcrumbs .ax-node.parent.inspected:focus::before {\n    background-color: white;\n}\n\n.ax-breadcrumbs .ax-node.inspected:focus {\n    color: white;\n}\n\n.ax-breadcrumbs .ax-node.inspected:focus * {\n    color: inherit;\n}\n\n/*# sourceURL=accessibility/axBreadcrumbs.css */";