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

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: Removing IgnoredReasons from protocol Created 5 years, 8 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 AXProbablyPresentational:
78 return "probablyPresentational";
79 case AXStaticTextUsedAsNameFor:
80 return "staticTextUsedAsNameFor";
81 case AXUninteresting:
82 return "uninteresting";
83 }
84 }
85
86 PassRefPtr<AXProperty> createProperty(IgnoredReason reason)
87 {
88 if (reason.relatedObject)
89 return createProperty(ignoredReasonName(reason.reason), createRelatedNod eValue(reason.relatedObject));
90 return createProperty(ignoredReasonName(reason.reason), createBooleanValue(t rue));
91 }
92
93 PassRefPtr<AXValue> createValue(String value, AXValueType::Enum type)
94 {
95 RefPtr<AXValue> axValue = AXValue::create().setType(type);
96 axValue->setValue(JSONString::create(value));
97 return axValue;
98 }
99
100 PassRefPtr<AXValue> createValue(int value, AXValueType::Enum type)
101 {
102 RefPtr<AXValue> axValue = AXValue::create().setType(type);
103 axValue->setValue(JSONBasicValue::create(value));
104 return axValue;
105 }
106
107 PassRefPtr<AXValue> createValue(float value, AXValueType::Enum type)
108 {
109 RefPtr<AXValue> axValue = AXValue::create().setType(type);
110 axValue->setValue(JSONBasicValue::create(value));
111 return axValue;
112 }
113
114 PassRefPtr<AXValue> createBooleanValue(bool value, AXValueType::Enum type)
115 {
116 RefPtr<AXValue> axValue = AXValue::create().setType(type);
117 axValue->setValue(JSONBasicValue::create(value));
118 return axValue;
119 }
120
121 PassRefPtr<AXRelatedNode> relatedNodeForAXObject(const AXObject* axObject)
122 {
123 Node* node = axObject->node();
124 if (!node)
125 return PassRefPtr<AXRelatedNode>();
126 int backendNodeId = DOMNodeIds::idForNode(node);
127 if (!backendNodeId)
128 return PassRefPtr<AXRelatedNode>();
129 RefPtr<AXRelatedNode> relatedNode = AXRelatedNode::create().setBackendNodeId (backendNodeId);
130 if (!node->isElementNode())
131 return relatedNode;
132
133 Element* element = toElement(node);
134 const AtomicString& idref = element->getIdAttribute();
135 if (!idref.isEmpty())
136 relatedNode->setIdref(idref);
137 return relatedNode;
138 }
139
140 PassRefPtr<AXValue> createRelatedNodeValue(const AXObject* axObject)
141 {
142 RefPtr<AXValue> axValue = AXValue::create().setType(AXValueType::Idref);
143 RefPtr<AXRelatedNode> relatedNode = relatedNodeForAXObject(axObject);
144 axValue->setRelatedNodeValue(relatedNode);
145 return axValue;
146 }
147
148 PassRefPtr<AXValue> createRelatedNodeListValue(AXObject::AccessibilityChildrenVe ctor axObjects)
149 {
150 RefPtr<TypeBuilder::Array<AXRelatedNode>> relatedNodes = TypeBuilder::Array< AXRelatedNode>::create();
151 for (unsigned i = 0; i < axObjects.size(); i++) {
152 if (RefPtr<AXRelatedNode> relatedNode = relatedNodeForAXObject(axObjects [i].get()))
153 relatedNodes->addItem(relatedNode);
154 }
155 RefPtr<AXValue> axValue = AXValue::create().setType(AXValueType::IdrefList);
156 axValue->setRelatedNodeArrayValue(relatedNodes);
157 return axValue;
158 }
159
160 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698