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

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: Add a catch-all return to ignoredReasonName 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
« no previous file with comments | « Source/modules/accessibility/InspectorTypeBuilderHelper.h ('k') | Source/modules/modules.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 AXPresentationalRole:
78 return "presentationalRole";
79 case AXProbablyPresentational:
80 return "probablyPresentational";
81 case AXStaticTextUsedAsNameFor:
82 return "staticTextUsedAsNameFor";
83 case AXUninteresting:
84 return "uninteresting";
85 }
86 ASSERT_NOT_REACHED();
87 return "";
88 }
89
90 PassRefPtr<AXProperty> createProperty(IgnoredReason reason)
91 {
92 if (reason.relatedObject)
93 return createProperty(ignoredReasonName(reason.reason), createRelatedNod eValue(reason.relatedObject));
94 return createProperty(ignoredReasonName(reason.reason), createBooleanValue(t rue));
95 }
96
97 PassRefPtr<AXValue> createValue(String value, AXValueType::Enum type)
98 {
99 RefPtr<AXValue> axValue = AXValue::create().setType(type);
100 axValue->setValue(JSONString::create(value));
101 return axValue;
102 }
103
104 PassRefPtr<AXValue> createValue(int value, AXValueType::Enum type)
105 {
106 RefPtr<AXValue> axValue = AXValue::create().setType(type);
107 axValue->setValue(JSONBasicValue::create(value));
108 return axValue;
109 }
110
111 PassRefPtr<AXValue> createValue(float value, AXValueType::Enum type)
112 {
113 RefPtr<AXValue> axValue = AXValue::create().setType(type);
114 axValue->setValue(JSONBasicValue::create(value));
115 return axValue;
116 }
117
118 PassRefPtr<AXValue> createBooleanValue(bool value, AXValueType::Enum type)
119 {
120 RefPtr<AXValue> axValue = AXValue::create().setType(type);
121 axValue->setValue(JSONBasicValue::create(value));
122 return axValue;
123 }
124
125 PassRefPtr<AXRelatedNode> relatedNodeForAXObject(const AXObject* axObject)
126 {
127 Node* node = axObject->node();
128 if (!node)
129 return PassRefPtr<AXRelatedNode>();
130 int backendNodeId = DOMNodeIds::idForNode(node);
131 if (!backendNodeId)
132 return PassRefPtr<AXRelatedNode>();
133 RefPtr<AXRelatedNode> relatedNode = AXRelatedNode::create().setBackendNodeId (backendNodeId);
134 if (!node->isElementNode())
135 return relatedNode;
136
137 Element* element = toElement(node);
138 const AtomicString& idref = element->getIdAttribute();
139 if (!idref.isEmpty())
140 relatedNode->setIdref(idref);
141 return relatedNode;
142 }
143
144 PassRefPtr<AXValue> createRelatedNodeValue(const AXObject* axObject)
145 {
146 RefPtr<AXValue> axValue = AXValue::create().setType(AXValueType::Idref);
147 RefPtr<AXRelatedNode> relatedNode = relatedNodeForAXObject(axObject);
148 axValue->setRelatedNodeValue(relatedNode);
149 return axValue;
150 }
151
152 PassRefPtr<AXValue> createRelatedNodeListValue(AXObject::AccessibilityChildrenVe ctor axObjects)
153 {
154 RefPtr<TypeBuilder::Array<AXRelatedNode>> relatedNodes = TypeBuilder::Array< AXRelatedNode>::create();
155 for (unsigned i = 0; i < axObjects.size(); i++) {
156 if (RefPtr<AXRelatedNode> relatedNode = relatedNodeForAXObject(axObjects [i].get()))
157 relatedNodes->addItem(relatedNode);
158 }
159 RefPtr<AXValue> axValue = AXValue::create().setType(AXValueType::IdrefList);
160 axValue->setRelatedNodeArrayValue(relatedNodes);
161 return axValue;
162 }
163
164 } // namespace blink
OLDNEW
« no previous file with comments | « Source/modules/accessibility/InspectorTypeBuilderHelper.h ('k') | Source/modules/modules.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698