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 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
56 class AXObjectCacheImpl : public AXObjectCache { | 56 class AXObjectCacheImpl : public AXObjectCache { |
57 WTF_MAKE_NONCOPYABLE(AXObjectCacheImpl); WTF_MAKE_FAST_ALLOCATED; | 57 WTF_MAKE_NONCOPYABLE(AXObjectCacheImpl); WTF_MAKE_FAST_ALLOCATED; |
58 public: | 58 public: |
59 explicit AXObjectCacheImpl(Document&); | 59 explicit AXObjectCacheImpl(Document&); |
60 ~AXObjectCacheImpl(); | 60 ~AXObjectCacheImpl(); |
61 | 61 |
62 AXObject* focusedUIElementForPage(const Page*); | 62 AXObject* focusedUIElementForPage(const Page*); |
63 | 63 |
64 virtual void selectionChanged(Node*) override; | 64 virtual void selectionChanged(Node*) override; |
65 virtual void childrenChanged(Node*) override; | 65 virtual void childrenChanged(Node*) override; |
66 virtual void childrenChanged(RenderObject*) override; | 66 virtual void childrenChanged(LayoutObject*) override; |
67 virtual void checkedStateChanged(Node*) override; | 67 virtual void checkedStateChanged(Node*) override; |
68 virtual void selectedChildrenChanged(Node*) override; | 68 virtual void selectedChildrenChanged(Node*) override; |
69 | 69 |
70 virtual void remove(RenderObject*) override; | 70 virtual void remove(LayoutObject*) override; |
71 virtual void remove(Node*) override; | 71 virtual void remove(Node*) override; |
72 virtual void remove(Widget*) override; | 72 virtual void remove(Widget*) override; |
73 | 73 |
74 virtual const Element* rootAXEditableElement(const Node*) override; | 74 virtual const Element* rootAXEditableElement(const Node*) override; |
75 | 75 |
76 // Called by a node when text or a text equivalent (e.g. alt) attribute is c
hanged. | 76 // Called by a node when text or a text equivalent (e.g. alt) attribute is c
hanged. |
77 virtual void textChanged(RenderObject*) override; | 77 virtual void textChanged(LayoutObject*) override; |
78 // Called when a node has just been attached, so we can make sure we have th
e right subclass of AXObject. | 78 // Called when a node has just been attached, so we can make sure we have th
e right subclass of AXObject. |
79 virtual void updateCacheAfterNodeIsAttached(Node*) override; | 79 virtual void updateCacheAfterNodeIsAttached(Node*) override; |
80 | 80 |
81 virtual void handleAttributeChanged(const QualifiedName& attrName, Element*)
override; | 81 virtual void handleAttributeChanged(const QualifiedName& attrName, Element*)
override; |
82 virtual void handleFocusedUIElementChanged(Node* oldFocusedNode, Node* newFo
cusedNode) override; | 82 virtual void handleFocusedUIElementChanged(Node* oldFocusedNode, Node* newFo
cusedNode) override; |
83 virtual void handleInitialFocus() override; | 83 virtual void handleInitialFocus() override; |
84 virtual void handleTextFormControlChanged(Node*) override; | 84 virtual void handleTextFormControlChanged(Node*) override; |
85 virtual void handleEditableTextContentChanged(Node*) override; | 85 virtual void handleEditableTextContentChanged(Node*) override; |
86 virtual void handleValueChanged(Node*) override; | 86 virtual void handleValueChanged(Node*) override; |
87 virtual void handleUpdateActiveMenuOption(RenderMenuList*, int optionIndex)
override; | 87 virtual void handleUpdateActiveMenuOption(RenderMenuList*, int optionIndex)
override; |
88 virtual void handleLoadComplete(Document*) override; | 88 virtual void handleLoadComplete(Document*) override; |
89 virtual void handleLayoutComplete(Document*) override; | 89 virtual void handleLayoutComplete(Document*) override; |
90 | 90 |
91 virtual void setCanvasObjectBounds(Element*, const LayoutRect&) override; | 91 virtual void setCanvasObjectBounds(Element*, const LayoutRect&) override; |
92 | 92 |
93 virtual void clearWeakMembers(Visitor*) override; | 93 virtual void clearWeakMembers(Visitor*) override; |
94 | 94 |
95 virtual void inlineTextBoxesUpdated(RenderObject* renderer) override; | 95 virtual void inlineTextBoxesUpdated(LayoutObject* renderer) override; |
96 | 96 |
97 // Called when the scroll offset changes. | 97 // Called when the scroll offset changes. |
98 virtual void handleScrollPositionChanged(FrameView*) override; | 98 virtual void handleScrollPositionChanged(FrameView*) override; |
99 virtual void handleScrollPositionChanged(RenderObject*) override; | 99 virtual void handleScrollPositionChanged(LayoutObject*) override; |
100 | 100 |
101 // Called when scroll bars are added / removed (as the view resizes). | 101 // Called when scroll bars are added / removed (as the view resizes). |
102 void handleScrollbarUpdate(FrameView*) override; | 102 void handleScrollbarUpdate(FrameView*) override; |
103 void handleLayoutComplete(RenderObject*) override; | 103 void handleLayoutComplete(LayoutObject*) override; |
104 void handleScrolledToAnchor(const Node* anchorNode) override; | 104 void handleScrolledToAnchor(const Node* anchorNode) override; |
105 | 105 |
106 virtual const AtomicString& computedRoleForNode(Node*) override; | 106 virtual const AtomicString& computedRoleForNode(Node*) override; |
107 virtual String computedNameForNode(Node*) override; | 107 virtual String computedNameForNode(Node*) override; |
108 | 108 |
109 // Returns the root object for the entire document. | 109 // Returns the root object for the entire document. |
110 AXObject* rootObject(); | 110 AXObject* rootObject(); |
111 | 111 |
112 AXObject* objectFromAXID(AXID id) const { return m_objects.get(id); } | 112 AXObject* objectFromAXID(AXID id) const { return m_objects.get(id); } |
113 AXObject* root(); | 113 AXObject* root(); |
114 | 114 |
115 // used for objects without backing elements | 115 // used for objects without backing elements |
116 AXObject* getOrCreate(AccessibilityRole); | 116 AXObject* getOrCreate(AccessibilityRole); |
117 AXObject* getOrCreate(RenderObject*); | 117 AXObject* getOrCreate(LayoutObject*); |
118 AXObject* getOrCreate(Widget*); | 118 AXObject* getOrCreate(Widget*); |
119 AXObject* getOrCreate(Node*); | 119 AXObject* getOrCreate(Node*); |
120 AXObject* getOrCreate(AbstractInlineTextBox*); | 120 AXObject* getOrCreate(AbstractInlineTextBox*); |
121 | 121 |
122 // will only return the AXObject if it already exists | 122 // will only return the AXObject if it already exists |
123 AXObject* get(Node*); | 123 AXObject* get(Node*); |
124 AXObject* get(RenderObject*); | 124 AXObject* get(LayoutObject*); |
125 AXObject* get(Widget*); | 125 AXObject* get(Widget*); |
126 AXObject* get(AbstractInlineTextBox*); | 126 AXObject* get(AbstractInlineTextBox*); |
127 | 127 |
128 AXObject* firstAccessibleObjectFromNode(const Node*); | 128 AXObject* firstAccessibleObjectFromNode(const Node*); |
129 | 129 |
130 void remove(AXID); | 130 void remove(AXID); |
131 void remove(AbstractInlineTextBox*); | 131 void remove(AbstractInlineTextBox*); |
132 | 132 |
133 void childrenChanged(AXObject*); | 133 void childrenChanged(AXObject*); |
134 void selectedChildrenChanged(RenderObject*); | 134 void selectedChildrenChanged(LayoutObject*); |
135 | 135 |
136 void handleActiveDescendantChanged(Node*); | 136 void handleActiveDescendantChanged(Node*); |
137 void handleAriaRoleChanged(Node*); | 137 void handleAriaRoleChanged(Node*); |
138 void handleAriaExpandedChange(Node*); | 138 void handleAriaExpandedChange(Node*); |
139 | 139 |
140 void recomputeIsIgnored(RenderObject* renderer); | 140 void recomputeIsIgnored(LayoutObject* renderer); |
141 | 141 |
142 bool accessibilityEnabled(); | 142 bool accessibilityEnabled(); |
143 bool inlineTextBoxAccessibilityEnabled(); | 143 bool inlineTextBoxAccessibilityEnabled(); |
144 | 144 |
145 void removeAXID(AXObject*); | 145 void removeAXID(AXObject*); |
146 bool isIDinUse(AXID id) const { return m_idsInUse.contains(id); } | 146 bool isIDinUse(AXID id) const { return m_idsInUse.contains(id); } |
147 | 147 |
148 AXID platformGenerateAXID() const; | 148 AXID platformGenerateAXID() const; |
149 | 149 |
150 // Counts the number of times the document has been modified. Some attribute
values are cached | 150 // Counts the number of times the document has been modified. Some attribute
values are cached |
151 // as long as the modification count hasn't changed. | 151 // as long as the modification count hasn't changed. |
152 int modificationCount() const { return m_modificationCount; } | 152 int modificationCount() const { return m_modificationCount; } |
153 | 153 |
154 void postNotification(RenderObject*, AXNotification, bool postToElement); | 154 void postNotification(LayoutObject*, AXNotification, bool postToElement); |
155 void postNotification(Node*, AXNotification, bool postToElement); | 155 void postNotification(Node*, AXNotification, bool postToElement); |
156 void postNotification(AXObject*, Document*, AXNotification, bool postToEleme
nt); | 156 void postNotification(AXObject*, Document*, AXNotification, bool postToEleme
nt); |
157 | 157 |
158 protected: | 158 protected: |
159 void postPlatformNotification(AXObject*, AXNotification); | 159 void postPlatformNotification(AXObject*, AXNotification); |
160 void textChanged(AXObject*); | 160 void textChanged(AXObject*); |
161 void labelChanged(Element*); | 161 void labelChanged(Element*); |
162 | 162 |
163 // This is a weak reference cache for knowing if Nodes used by TextMarkers a
re valid. | 163 // This is a weak reference cache for knowing if Nodes used by TextMarkers a
re valid. |
164 void setNodeInUse(Node* n) { m_textMarkerNodes.add(n); } | 164 void setNodeInUse(Node* n) { m_textMarkerNodes.add(n); } |
165 void removeNodeForUse(Node* n) { m_textMarkerNodes.remove(n); } | 165 void removeNodeForUse(Node* n) { m_textMarkerNodes.remove(n); } |
166 bool isNodeInUse(Node* n) { return m_textMarkerNodes.contains(n); } | 166 bool isNodeInUse(Node* n) { return m_textMarkerNodes.contains(n); } |
167 | 167 |
168 PassRefPtr<AXObject> createFromRenderer(RenderObject*); | 168 PassRefPtr<AXObject> createFromRenderer(LayoutObject*); |
169 PassRefPtr<AXObject> createFromNode(Node*); | 169 PassRefPtr<AXObject> createFromNode(Node*); |
170 PassRefPtr<AXObject> createFromInlineTextBox(AbstractInlineTextBox*); | 170 PassRefPtr<AXObject> createFromInlineTextBox(AbstractInlineTextBox*); |
171 | 171 |
172 private: | 172 private: |
173 Document& m_document; | 173 Document& m_document; |
174 HashMap<AXID, RefPtr<AXObject>> m_objects; | 174 HashMap<AXID, RefPtr<AXObject>> m_objects; |
175 HashMap<RenderObject*, AXID> m_renderObjectMapping; | 175 HashMap<LayoutObject*, AXID> m_layoutObjectMapping; |
176 HashMap<Widget*, AXID> m_widgetObjectMapping; | 176 HashMap<Widget*, AXID> m_widgetObjectMapping; |
177 HashMap<Node*, AXID> m_nodeObjectMapping; | 177 HashMap<Node*, AXID> m_nodeObjectMapping; |
178 HashMap<AbstractInlineTextBox*, AXID> m_inlineTextBoxObjectMapping; | 178 HashMap<AbstractInlineTextBox*, AXID> m_inlineTextBoxObjectMapping; |
179 HashSet<Node*> m_textMarkerNodes; | 179 HashSet<Node*> m_textMarkerNodes; |
180 int m_modificationCount; | 180 int m_modificationCount; |
181 | 181 |
182 HashSet<AXID> m_idsInUse; | 182 HashSet<AXID> m_idsInUse; |
183 | 183 |
184 Timer<AXObjectCacheImpl> m_notificationPostTimer; | 184 Timer<AXObjectCacheImpl> m_notificationPostTimer; |
185 Vector<pair<RefPtr<AXObject>, AXNotification>> m_notificationsToPost; | 185 Vector<pair<RefPtr<AXObject>, AXNotification>> m_notificationsToPost; |
(...skipping 12 matching lines...) Expand all Loading... |
198 // This is the only subclass of AXObjectCache. | 198 // This is the only subclass of AXObjectCache. |
199 DEFINE_TYPE_CASTS(AXObjectCacheImpl, AXObjectCache, cache, true, true); | 199 DEFINE_TYPE_CASTS(AXObjectCacheImpl, AXObjectCache, cache, true, true); |
200 | 200 |
201 bool nodeHasRole(Node*, const String& role); | 201 bool nodeHasRole(Node*, const String& role); |
202 // This will let you know if aria-hidden was explicitly set to false. | 202 // This will let you know if aria-hidden was explicitly set to false. |
203 bool isNodeAriaVisible(Node*); | 203 bool isNodeAriaVisible(Node*); |
204 | 204 |
205 } | 205 } |
206 | 206 |
207 #endif | 207 #endif |
OLD | NEW |