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

Side by Side Diff: Source/modules/accessibility/AXObjectCacheImpl.h

Issue 1081673003: Oilpan: Prepare to move AXObjectCache to the heap (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 6 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
1 /* 1 /*
2 * Copyright (C) 2014, Google Inc. All rights reserved. 2 * Copyright (C) 2014, Google 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 * 7 *
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 48
49 struct TextMarkerData { 49 struct TextMarkerData {
50 AXID axID; 50 AXID axID;
51 Node* node; 51 Node* node;
52 int offset; 52 int offset;
53 EAffinity affinity; 53 EAffinity affinity;
54 }; 54 };
55 55
56 // This class should only be used from inside the accessibility directory. 56 // This class should only be used from inside the accessibility directory.
57 class MODULES_EXPORT AXObjectCacheImpl : public AXObjectCache { 57 class MODULES_EXPORT AXObjectCacheImpl : public AXObjectCache {
58 WTF_MAKE_NONCOPYABLE(AXObjectCacheImpl); WTF_MAKE_FAST_ALLOCATED(AXObjectCac heImpl); 58 WTF_MAKE_NONCOPYABLE(AXObjectCacheImpl);
59 WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED(AXObjectCacheImpl);
59 public: 60 public:
60 static PassOwnPtr<AXObjectCache> create(Document&); 61 static PassOwnPtrWillBeRawPtr<AXObjectCache> create(Document&);
61 62
62 explicit AXObjectCacheImpl(Document&); 63 explicit AXObjectCacheImpl(Document&);
63 ~AXObjectCacheImpl(); 64 ~AXObjectCacheImpl();
65 DECLARE_VIRTUAL_TRACE();
64 66
65 AXObject* focusedUIElementForPage(const Page*); 67 AXObject* focusedUIElementForPage(const Page*);
66 68
69 virtual void dispose() override;
70
67 virtual void selectionChanged(Node*) override; 71 virtual void selectionChanged(Node*) override;
68 virtual void childrenChanged(Node*) override; 72 virtual void childrenChanged(Node*) override;
69 virtual void childrenChanged(LayoutObject*) override; 73 virtual void childrenChanged(LayoutObject*) override;
70 virtual void checkedStateChanged(Node*) override; 74 virtual void checkedStateChanged(Node*) override;
71 virtual void listboxOptionStateChanged(HTMLOptionElement*); 75 virtual void listboxOptionStateChanged(HTMLOptionElement*);
72 virtual void listboxSelectedChildrenChanged(HTMLSelectElement*); 76 virtual void listboxSelectedChildrenChanged(HTMLSelectElement*);
73 virtual void listboxActiveIndexChanged(HTMLSelectElement*); 77 virtual void listboxActiveIndexChanged(HTMLSelectElement*);
74 78
75 virtual void remove(LayoutObject*) override; 79 virtual void remove(LayoutObject*) override;
76 virtual void remove(Node*) override; 80 virtual void remove(Node*) override;
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 HashMap<AXID, RefPtr<AXObject>> m_objects; 185 HashMap<AXID, RefPtr<AXObject>> m_objects;
182 HashMap<LayoutObject*, AXID> m_layoutObjectMapping; 186 HashMap<LayoutObject*, AXID> m_layoutObjectMapping;
183 HashMap<Widget*, AXID> m_widgetObjectMapping; 187 HashMap<Widget*, AXID> m_widgetObjectMapping;
184 HashMap<Node*, AXID> m_nodeObjectMapping; 188 HashMap<Node*, AXID> m_nodeObjectMapping;
185 HashMap<AbstractInlineTextBox*, AXID> m_inlineTextBoxObjectMapping; 189 HashMap<AbstractInlineTextBox*, AXID> m_inlineTextBoxObjectMapping;
186 HashSet<Node*> m_textMarkerNodes; 190 HashSet<Node*> m_textMarkerNodes;
187 int m_modificationCount; 191 int m_modificationCount;
188 192
189 HashSet<AXID> m_idsInUse; 193 HashSet<AXID> m_idsInUse;
190 194
195 #if ENABLE(ASSERT)
196 // Verified when finalizing.
197 bool m_hasBeenDisposed;
198 #endif
199
200 //
201 // Aria-owns
202 //
203
204 // Map from the AXID of the owner to the AXIDs of the children.
205 // This is a validated map, it doesn't contain illegal, duplicate,
206 // or cyclical matches, or references to IDs that don't exist.
207 HashMap<AXID, Vector<AXID>> m_ariaOwnerToChildrenMapping;
208
209 // Map from the AXID of a child to the AXID of the parent that owns it.
210 HashMap<AXID, AXID> m_ariaOwnedChildToOwnerMapping;
211
212 // Map from the AXID of a child to the AXID of its real parent in the tree i f
213 // we ignored aria-owns. This is needed in case the owner no longer wants to own it.
214 HashMap<AXID, AXID> m_ariaOwnedChildToRealParentMapping;
215
216 // Map from the AXID of any object with an aria-owns attribute to the set of ids
217 // of its children. This is *unvalidated*, it includes ids that may not curr ently
218 // exist in the tree.
219 HashMap<AXID, HashSet<String>> m_ariaOwnerToIdsMapping;
220
221 // Map from an ID (the ID attribute of a DOM element) to the set of elements that
222 // want to own that ID. This is *unvalidated*, it includes possible duplicat es.
223 // This is used so that when an element with an ID is added to the tree or c hanges
224 // its ID, we can quickly determine if it affects an aria-owns relationship.
225 HashMap<String, OwnPtr<HashSet<AXID>>> m_idToAriaOwnersMapping;
226
191 Timer<AXObjectCacheImpl> m_notificationPostTimer; 227 Timer<AXObjectCacheImpl> m_notificationPostTimer;
192 Vector<pair<RefPtr<AXObject>, AXNotification>> m_notificationsToPost; 228 Vector<pair<RefPtr<AXObject>, AXNotification>> m_notificationsToPost;
193 void notificationPostTimerFired(Timer<AXObjectCacheImpl>*); 229 void notificationPostTimerFired(Timer<AXObjectCacheImpl>*);
194 230
195 AXObject* focusedImageMapUIElement(HTMLAreaElement*); 231 AXObject* focusedImageMapUIElement(HTMLAreaElement*);
196 232
197 AXID getAXID(AXObject*); 233 AXID getAXID(AXObject*);
198 234
199 void textChanged(Node*); 235 void textChanged(Node*);
200 bool nodeIsTextControl(const Node*); 236 bool nodeIsTextControl(const Node*);
201 237
202 Settings* settings(); 238 Settings* settings();
203 }; 239 };
204 240
205 // This is the only subclass of AXObjectCache. 241 // This is the only subclass of AXObjectCache.
206 DEFINE_TYPE_CASTS(AXObjectCacheImpl, AXObjectCache, cache, true, true); 242 DEFINE_TYPE_CASTS(AXObjectCacheImpl, AXObjectCache, cache, true, true);
207 243
208 bool nodeHasRole(Node*, const String& role); 244 bool nodeHasRole(Node*, const String& role);
209 // This will let you know if aria-hidden was explicitly set to false. 245 // This will let you know if aria-hidden was explicitly set to false.
210 bool isNodeAriaVisible(Node*); 246 bool isNodeAriaVisible(Node*);
211 247
212 } 248 }
213 249
214 #endif 250 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698