| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |