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

Side by Side Diff: Source/core/accessibility/AXObjectCache.h

Issue 23983002: Expose InlineTextBoxes in the accessibility tree. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Remove platform differences from inline-text-textarea output Created 7 years, 3 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 | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2003, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved. 2 * Copyright (C) 2003, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 19 matching lines...) Expand all
30 #include "core/platform/Timer.h" 30 #include "core/platform/Timer.h"
31 #include "wtf/Forward.h" 31 #include "wtf/Forward.h"
32 #include "wtf/HashMap.h" 32 #include "wtf/HashMap.h"
33 #include "wtf/HashSet.h" 33 #include "wtf/HashSet.h"
34 #include "wtf/RefPtr.h" 34 #include "wtf/RefPtr.h"
35 35
36 namespace WebCore { 36 namespace WebCore {
37 37
38 class Document; 38 class Document;
39 class HTMLAreaElement; 39 class HTMLAreaElement;
40 class InlineTextBox;
40 class Node; 41 class Node;
41 class Page; 42 class Page;
42 class RenderObject; 43 class RenderObject;
43 class ScrollView; 44 class ScrollView;
44 class VisiblePosition; 45 class VisiblePosition;
45 class Widget; 46 class Widget;
46 47
47 struct TextMarkerData { 48 struct TextMarkerData {
48 AXID axID; 49 AXID axID;
49 Node* node; 50 Node* node;
(...skipping 30 matching lines...) Expand all
80 81
81 static AccessibilityObject* focusedUIElementForPage(const Page*); 82 static AccessibilityObject* focusedUIElementForPage(const Page*);
82 83
83 // Returns the root object for the entire document. 84 // Returns the root object for the entire document.
84 AccessibilityObject* rootObject(); 85 AccessibilityObject* rootObject();
85 86
86 // For AX objects with elements that back them. 87 // For AX objects with elements that back them.
87 AccessibilityObject* getOrCreate(RenderObject*); 88 AccessibilityObject* getOrCreate(RenderObject*);
88 AccessibilityObject* getOrCreate(Widget*); 89 AccessibilityObject* getOrCreate(Widget*);
89 AccessibilityObject* getOrCreate(Node*); 90 AccessibilityObject* getOrCreate(Node*);
91 AccessibilityObject* getOrCreate(InlineTextBox*);
90 92
91 // used for objects without backing elements 93 // used for objects without backing elements
92 AccessibilityObject* getOrCreate(AccessibilityRole); 94 AccessibilityObject* getOrCreate(AccessibilityRole);
93 95
94 // will only return the AccessibilityObject if it already exists 96 // will only return the AccessibilityObject if it already exists
95 AccessibilityObject* get(RenderObject*); 97 AccessibilityObject* get(RenderObject*);
96 AccessibilityObject* get(Widget*); 98 AccessibilityObject* get(Widget*);
97 AccessibilityObject* get(Node*); 99 AccessibilityObject* get(Node*);
100 AccessibilityObject* get(InlineTextBox*);
98 101
99 void remove(RenderObject*); 102 void remove(RenderObject*);
100 void remove(Node*); 103 void remove(Node*);
101 void remove(Widget*); 104 void remove(Widget*);
105 void remove(InlineTextBox*);
102 void remove(AXID); 106 void remove(AXID);
103 107
104 void detachWrapper(AccessibilityObject*); 108 void detachWrapper(AccessibilityObject*);
105 void attachWrapper(AccessibilityObject*); 109 void attachWrapper(AccessibilityObject*);
106 void childrenChanged(Node*); 110 void childrenChanged(Node*);
107 void childrenChanged(RenderObject*); 111 void childrenChanged(RenderObject*);
108 void childrenChanged(AccessibilityObject*); 112 void childrenChanged(AccessibilityObject*);
109 void checkedStateChanged(Node*); 113 void checkedStateChanged(Node*);
110 void selectedChildrenChanged(Node*); 114 void selectedChildrenChanged(Node*);
111 void selectedChildrenChanged(RenderObject*); 115 void selectedChildrenChanged(RenderObject*);
(...skipping 10 matching lines...) Expand all
122 void handleScrolledToAnchor(const Node* anchorNode); 126 void handleScrolledToAnchor(const Node* anchorNode);
123 void handleAriaExpandedChange(Node*); 127 void handleAriaExpandedChange(Node*);
124 void handleScrollbarUpdate(ScrollView*); 128 void handleScrollbarUpdate(ScrollView*);
125 129
126 void handleAttributeChanged(const QualifiedName& attrName, Element*); 130 void handleAttributeChanged(const QualifiedName& attrName, Element*);
127 void recomputeIsIgnored(RenderObject* renderer); 131 void recomputeIsIgnored(RenderObject* renderer);
128 132
129 #if HAVE(ACCESSIBILITY) 133 #if HAVE(ACCESSIBILITY)
130 static void enableAccessibility() { gAccessibilityEnabled = true; } 134 static void enableAccessibility() { gAccessibilityEnabled = true; }
131 static bool accessibilityEnabled() { return gAccessibilityEnabled; } 135 static bool accessibilityEnabled() { return gAccessibilityEnabled; }
136 static void setInlineTextBoxAccessibility(bool flag) { gInlineTextBoxAccessi bility = flag; }
137 static bool inlineTextBoxAccessibility() { return gInlineTextBoxAccessibilit y; }
132 #else 138 #else
133 static void enableAccessibility() { } 139 static void enableAccessibility() { }
140 static void setInlineTextBoxAccessibility(bool) { }
134 static bool accessibilityEnabled() { return false; } 141 static bool accessibilityEnabled() { return false; }
142 static bool inlineTextBoxAccessibility() { return false; }
135 #endif 143 #endif
136 144
137 void removeAXID(AccessibilityObject*); 145 void removeAXID(AccessibilityObject*);
138 bool isIDinUse(AXID id) const { return m_idsInUse.contains(id); } 146 bool isIDinUse(AXID id) const { return m_idsInUse.contains(id); }
139 147
140 Element* rootAXEditableElement(Node*); 148 Element* rootAXEditableElement(Node*);
141 const Element* rootAXEditableElement(const Node*); 149 const Element* rootAXEditableElement(const Node*);
142 bool nodeIsTextControl(const Node*); 150 bool nodeIsTextControl(const Node*);
143 151
144 AXID platformGenerateAXID() const; 152 AXID platformGenerateAXID() const;
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 void setNodeInUse(Node* n) { m_textMarkerNodes.add(n); } 206 void setNodeInUse(Node* n) { m_textMarkerNodes.add(n); }
199 void removeNodeForUse(Node* n) { m_textMarkerNodes.remove(n); } 207 void removeNodeForUse(Node* n) { m_textMarkerNodes.remove(n); }
200 bool isNodeInUse(Node* n) { return m_textMarkerNodes.contains(n); } 208 bool isNodeInUse(Node* n) { return m_textMarkerNodes.contains(n); }
201 209
202 private: 210 private:
203 Document* m_document; 211 Document* m_document;
204 HashMap<AXID, RefPtr<AccessibilityObject> > m_objects; 212 HashMap<AXID, RefPtr<AccessibilityObject> > m_objects;
205 HashMap<RenderObject*, AXID> m_renderObjectMapping; 213 HashMap<RenderObject*, AXID> m_renderObjectMapping;
206 HashMap<Widget*, AXID> m_widgetObjectMapping; 214 HashMap<Widget*, AXID> m_widgetObjectMapping;
207 HashMap<Node*, AXID> m_nodeObjectMapping; 215 HashMap<Node*, AXID> m_nodeObjectMapping;
216 HashMap<InlineTextBox*, AXID> m_inlineTextBoxObjectMapping;
208 HashSet<Node*> m_textMarkerNodes; 217 HashSet<Node*> m_textMarkerNodes;
209 OwnPtr<AXComputedObjectAttributeCache> m_computedObjectAttributeCache; 218 OwnPtr<AXComputedObjectAttributeCache> m_computedObjectAttributeCache;
210 static bool gAccessibilityEnabled; 219 static bool gAccessibilityEnabled;
220 static bool gInlineTextBoxAccessibility;
211 221
212 HashSet<AXID> m_idsInUse; 222 HashSet<AXID> m_idsInUse;
213 223
214 Timer<AXObjectCache> m_notificationPostTimer; 224 Timer<AXObjectCache> m_notificationPostTimer;
215 Vector<pair<RefPtr<AccessibilityObject>, AXNotification> > m_notificationsTo Post; 225 Vector<pair<RefPtr<AccessibilityObject>, AXNotification> > m_notificationsTo Post;
216 void notificationPostTimerFired(Timer<AXObjectCache>*); 226 void notificationPostTimerFired(Timer<AXObjectCache>*);
217 227
218 static AccessibilityObject* focusedImageMapUIElement(HTMLAreaElement*); 228 static AccessibilityObject* focusedImageMapUIElement(HTMLAreaElement*);
219 229
220 AXID getAXID(AccessibilityObject*); 230 AXID getAXID(AccessibilityObject*);
221 }; 231 };
222 232
223 bool nodeHasRole(Node*, const String& role); 233 bool nodeHasRole(Node*, const String& role);
224 // This will let you know if aria-hidden was explicitly set to false. 234 // This will let you know if aria-hidden was explicitly set to false.
225 bool isNodeAriaVisible(Node*); 235 bool isNodeAriaVisible(Node*);
226 236
227 #if !HAVE(ACCESSIBILITY) 237 #if !HAVE(ACCESSIBILITY)
228 inline AccessibilityObjectInclusion AXComputedObjectAttributeCache::getIgnored(A XID) const { return DefaultBehavior; } 238 inline AccessibilityObjectInclusion AXComputedObjectAttributeCache::getIgnored(A XID) const { return DefaultBehavior; }
229 inline void AXComputedObjectAttributeCache::setIgnored(AXID, AccessibilityObject Inclusion) { } 239 inline void AXComputedObjectAttributeCache::setIgnored(AXID, AccessibilityObject Inclusion) { }
230 inline AXObjectCache::AXObjectCache(const Document* doc) : m_document(const_cast <Document*>(doc)), m_notificationPostTimer(this, 0) { } 240 inline AXObjectCache::AXObjectCache(const Document* doc) : m_document(const_cast <Document*>(doc)), m_notificationPostTimer(this, 0) { }
231 inline AXObjectCache::~AXObjectCache() { } 241 inline AXObjectCache::~AXObjectCache() { }
232 inline AccessibilityObject* AXObjectCache::focusedUIElementForPage(const Page*) { return 0; } 242 inline AccessibilityObject* AXObjectCache::focusedUIElementForPage(const Page*) { return 0; }
233 inline AccessibilityObject* AXObjectCache::get(RenderObject*) { return 0; } 243 inline AccessibilityObject* AXObjectCache::get(RenderObject*) { return 0; }
234 inline AccessibilityObject* AXObjectCache::get(Node*) { return 0; } 244 inline AccessibilityObject* AXObjectCache::get(Node*) { return 0; }
235 inline AccessibilityObject* AXObjectCache::get(Widget*) { return 0; } 245 inline AccessibilityObject* AXObjectCache::get(Widget*) { return 0; }
246 inline AccessibilityObject* AXObjectCache::get(InlineTextBox*) { return 0; }
236 inline AccessibilityObject* AXObjectCache::getOrCreate(AccessibilityRole) { retu rn 0; } 247 inline AccessibilityObject* AXObjectCache::getOrCreate(AccessibilityRole) { retu rn 0; }
237 inline AccessibilityObject* AXObjectCache::getOrCreate(RenderObject*) { return 0 ; } 248 inline AccessibilityObject* AXObjectCache::getOrCreate(RenderObject*) { return 0 ; }
238 inline AccessibilityObject* AXObjectCache::getOrCreate(Node*) { return 0; } 249 inline AccessibilityObject* AXObjectCache::getOrCreate(Node*) { return 0; }
239 inline AccessibilityObject* AXObjectCache::getOrCreate(Widget*) { return 0; } 250 inline AccessibilityObject* AXObjectCache::getOrCreate(Widget*) { return 0; }
251 inline AccessibilityObject* AXObjectCache::getOrCreate(InlineTextBox*) { return 0; }
240 inline AccessibilityObject* AXObjectCache::rootObject() { return 0; } 252 inline AccessibilityObject* AXObjectCache::rootObject() { return 0; }
241 inline Element* AXObjectCache::rootAXEditableElement(Node*) { return 0; } 253 inline Element* AXObjectCache::rootAXEditableElement(Node*) { return 0; }
242 inline bool nodeHasRole(Node*, const String&) { return false; } 254 inline bool nodeHasRole(Node*, const String&) { return false; }
243 inline void AXObjectCache::startCachingComputedObjectAttributesUntilTreeMutates( ) { } 255 inline void AXObjectCache::startCachingComputedObjectAttributesUntilTreeMutates( ) { }
244 inline void AXObjectCache::stopCachingComputedObjectAttributes() { } 256 inline void AXObjectCache::stopCachingComputedObjectAttributes() { }
245 inline bool isNodeAriaVisible(Node*) { return true; } 257 inline bool isNodeAriaVisible(Node*) { return true; }
246 inline const Element* AXObjectCache::rootAXEditableElement(const Node*) { return 0; } 258 inline const Element* AXObjectCache::rootAXEditableElement(const Node*) { return 0; }
247 inline void AXObjectCache::attachWrapper(AccessibilityObject*) { } 259 inline void AXObjectCache::attachWrapper(AccessibilityObject*) { }
248 inline void AXObjectCache::checkedStateChanged(Node*) { } 260 inline void AXObjectCache::checkedStateChanged(Node*) { }
249 inline void AXObjectCache::childrenChanged(RenderObject*) { } 261 inline void AXObjectCache::childrenChanged(RenderObject*) { }
(...skipping 15 matching lines...) Expand all
265 inline void AXObjectCache::nodeTextChangeNotification(Node*, AXTextChange, unsig ned, const String&) { } 277 inline void AXObjectCache::nodeTextChangeNotification(Node*, AXTextChange, unsig ned, const String&) { }
266 inline void AXObjectCache::nodeTextChangePlatformNotification(AccessibilityObjec t*, AXTextChange, unsigned, const String&) { } 278 inline void AXObjectCache::nodeTextChangePlatformNotification(AccessibilityObjec t*, AXTextChange, unsigned, const String&) { }
267 inline void AXObjectCache::postNotification(AccessibilityObject*, Document*, AXN otification, bool, PostType) { } 279 inline void AXObjectCache::postNotification(AccessibilityObject*, Document*, AXN otification, bool, PostType) { }
268 inline void AXObjectCache::postNotification(RenderObject*, AXNotification, bool, PostType) { } 280 inline void AXObjectCache::postNotification(RenderObject*, AXNotification, bool, PostType) { }
269 inline void AXObjectCache::postNotification(Node*, AXNotification, bool, PostTyp e) { } 281 inline void AXObjectCache::postNotification(Node*, AXNotification, bool, PostTyp e) { }
270 inline void AXObjectCache::postPlatformNotification(AccessibilityObject*, AXNoti fication) { } 282 inline void AXObjectCache::postPlatformNotification(AccessibilityObject*, AXNoti fication) { }
271 inline void AXObjectCache::remove(AXID) { } 283 inline void AXObjectCache::remove(AXID) { }
272 inline void AXObjectCache::remove(RenderObject*) { } 284 inline void AXObjectCache::remove(RenderObject*) { }
273 inline void AXObjectCache::remove(Node*) { } 285 inline void AXObjectCache::remove(Node*) { }
274 inline void AXObjectCache::remove(Widget*) { } 286 inline void AXObjectCache::remove(Widget*) { }
287 inline void AXObjectCache::remove(InlineTextBox*) { }
275 inline void AXObjectCache::selectedChildrenChanged(RenderObject*) { } 288 inline void AXObjectCache::selectedChildrenChanged(RenderObject*) { }
276 inline void AXObjectCache::selectedChildrenChanged(Node*) { } 289 inline void AXObjectCache::selectedChildrenChanged(Node*) { }
277 #endif 290 #endif
278 291
279 } 292 }
280 293
281 #endif 294 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698