Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(618)

Side by Side Diff: Source/modules/accessibility/InspectorTypeBuilderHelper.cpp

Issue 1076453004: Show reasons why nodes are ignored in accessibility sidebar (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: pfeldman review comments Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "config.h"
6 #include "modules/accessibility/InspectorTypeBuilderHelper.h"
7
8 #include "core/InspectorTypeBuilder.h"
9 #include "core/dom/DOMNodeIds.h"
10 #include "modules/accessibility/AXObject.h"
11 #include "modules/accessibility/AXObjectCacheImpl.h"
12
13 namespace blink {
14
15 using TypeBuilder::Accessibility::AXRelatedNode;
16
17 PassRefPtr<AXProperty> createProperty(String name, PassRefPtr<AXValue> value)
18 {
19 RefPtr<AXProperty> property = AXProperty::create().setName(name).setValue(va lue);
20 return property;
21 }
22
23 PassRefPtr<AXProperty> createProperty(AXGlobalStates::Enum name, PassRefPtr<AXVa lue> value)
24 {
25 return createProperty(TypeBuilder::getEnumConstantValue(name), value);
26 }
27
28 PassRefPtr<AXProperty> createProperty(AXLiveRegionAttributes::Enum name, PassRef Ptr<AXValue> value)
29 {
30 return createProperty(TypeBuilder::getEnumConstantValue(name), value);
31 }
32
33 PassRefPtr<AXProperty> createProperty(AXRelationshipAttributes::Enum name, PassR efPtr<AXValue> value)
34 {
35 return createProperty(TypeBuilder::getEnumConstantValue(name), value);
36 }
37
38 PassRefPtr<AXProperty> createProperty(AXWidgetAttributes::Enum name, PassRefPtr< AXValue> value)
39 {
40 return createProperty(TypeBuilder::getEnumConstantValue(name), value);
41 }
42
43 PassRefPtr<AXProperty> createProperty(AXWidgetStates::Enum name, PassRefPtr<AXVa lue> value)
44 {
45 return createProperty(TypeBuilder::getEnumConstantValue(name), value);
46 }
47
48 String ignoredReasonName(AXIgnoredReason reason)
49 {
50 switch (reason) {
51 case AXActiveModalDialog:
52 return "activeModalDialog";
53 case AXAncestorDisallowsChild:
54 return "ancestorDisallowsChild";
55 case AXAncestorIsLeafNode:
56 return "ancestorIsLeafNode";
57 case AXAriaHidden:
58 return "ariaHidden";
59 case AXAriaHiddenRoot:
60 return "ariaHiddenRoot";
61 case AXEmptyAlt:
62 return "emptyAlt";
63 case AXEmptyText:
64 return "emptyText";
65 case AXInert:
66 return "inert";
67 case AXInheritsPresentation:
68 return "inheritsPresentation";
69 case AXLabelContainer:
70 return "labelContainer";
71 case AXLabelFor:
72 return "labelFor";
73 case AXNotRendered:
74 return "notRendered";
75 case AXNotVisible:
76 return "notVisible";
77 case AXPresentationRole:
78 return "presentationRole";
79 case AXProbablyPresentational:
80 return "probablyPresentational";
81 case AXStaticTextUsedAsNameFor:
82 return "staticTextUsedAsNameFor";
83 case AXUninteresting:
84 return "uninteresting";
85 }
86 }
87
88 PassRefPtr<AXProperty> createProperty(IgnoredReason reason)
89 {
90 if (reason.relatedObject)
91 return createProperty(ignoredReasonName(reason.reason), createRelatedNod eValue(reason.relatedObject));
92 return createProperty(ignoredReasonName(reason.reason), createBooleanValue(t rue));
93 }
94
95 PassRefPtr<AXValue> createValue(String value, AXValueType::Enum type)
96 {
97 RefPtr<AXValue> axValue = AXValue::create().setType(type);
98 axValue->setValue(JSONString::create(value));
99 return axValue;
100 }
101
102 PassRefPtr<AXValue> createValue(int value, AXValueType::Enum type)
103 {
104 RefPtr<AXValue> axValue = AXValue::create().setType(type);
105 axValue->setValue(JSONBasicValue::create(value));
106 return axValue;
107 }
108
109 PassRefPtr<AXValue> createValue(float value, AXValueType::Enum type)
110 {
111 RefPtr<AXValue> axValue = AXValue::create().setType(type);
112 axValue->setValue(JSONBasicValue::create(value));
113 return axValue;
114 }
115
116 PassRefPtr<AXValue> createBooleanValue(bool value, AXValueType::Enum type)
117 {
118 RefPtr<AXValue> axValue = AXValue::create().setType(type);
119 axValue->setValue(JSONBasicValue::create(value));
120 return axValue;
121 }
122
123 PassRefPtr<AXRelatedNode> relatedNodeForAXObject(const AXObject* axObject)
124 {
125 Node* node = axObject->node();
126 if (!node)
127 return PassRefPtr<AXRelatedNode>();
128 int backendNodeId = DOMNodeIds::idForNode(node);
129 if (!backendNodeId)
130 return PassRefPtr<AXRelatedNode>();
131 RefPtr<AXRelatedNode> relatedNode = AXRelatedNode::create().setBackendNodeId (backendNodeId);
132 if (!node->isElementNode())
133 return relatedNode;
134
135 Element* element = toElement(node);
136 const AtomicString& idref = element->getIdAttribute();
137 if (!idref.isEmpty())
138 relatedNode->setIdref(idref);
139 return relatedNode;
140 }
141
142 PassRefPtr<AXValue> createRelatedNodeValue(const AXObject* axObject)
143 {
144 RefPtr<AXValue> axValue = AXValue::create().setType(AXValueType::Idref);
145 RefPtr<AXRelatedNode> relatedNode = relatedNodeForAXObject(axObject);
146 axValue->setRelatedNodeValue(relatedNode);
147 return axValue;
148 }
149
150 PassRefPtr<AXValue> createRelatedNodeListValue(AXObject::AccessibilityChildrenVe ctor axObjects)
151 {
152 RefPtr<TypeBuilder::Array<AXRelatedNode>> relatedNodes = TypeBuilder::Array< AXRelatedNode>::create();
153 for (unsigned i = 0; i < axObjects.size(); i++) {
154 if (RefPtr<AXRelatedNode> relatedNode = relatedNodeForAXObject(axObjects [i].get()))
155 relatedNodes->addItem(relatedNode);
156 }
157 RefPtr<AXValue> axValue = AXValue::create().setType(AXValueType::IdrefList);
158 axValue->setRelatedNodeArrayValue(relatedNodes);
159 return axValue;
160 }
161
162 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698