OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CONTENT_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_MANAGER_H_ | 5 #ifndef CONTENT_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_MANAGER_H_ |
6 #define CONTENT_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_MANAGER_H_ | 6 #define CONTENT_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_MANAGER_H_ |
7 | 7 |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/hash_tables.h" | 10 #include "base/hash_tables.h" |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
130 #endif | 130 #endif |
131 | 131 |
132 // Return the object that has focus, if it's a descandant of the | 132 // Return the object that has focus, if it's a descandant of the |
133 // given root (inclusive). Does not make a new reference. | 133 // given root (inclusive). Does not make a new reference. |
134 BrowserAccessibility* GetFocus(BrowserAccessibility* root); | 134 BrowserAccessibility* GetFocus(BrowserAccessibility* root); |
135 | 135 |
136 // Is the on-screen keyboard allowed to be shown, in response to a | 136 // Is the on-screen keyboard allowed to be shown, in response to a |
137 // focus event on a text box? | 137 // focus event on a text box? |
138 bool IsOSKAllowed(const gfx::Rect& bounds); | 138 bool IsOSKAllowed(const gfx::Rect& bounds); |
139 | 139 |
| 140 // True by default, but some platforms want to treat the root |
| 141 // scroll offsets separately. |
| 142 virtual bool UseRootScrollOffsetsWhenComputingBounds(); |
| 143 |
140 // For testing only: update the given nodes as if they were | 144 // For testing only: update the given nodes as if they were |
141 // received from the renderer process in OnAccessibilityNotifications. | 145 // received from the renderer process in OnAccessibilityNotifications. |
142 // Takes up to 7 nodes at once so tests don't need to create a vector | 146 // Takes up to 7 nodes at once so tests don't need to create a vector |
143 // each time. | 147 // each time. |
144 void UpdateNodesForTesting( | 148 void UpdateNodesForTesting( |
145 const AccessibilityNodeData& node, | 149 const AccessibilityNodeData& node, |
146 const AccessibilityNodeData& node2 = AccessibilityNodeData(), | 150 const AccessibilityNodeData& node2 = AccessibilityNodeData(), |
147 const AccessibilityNodeData& node3 = AccessibilityNodeData(), | 151 const AccessibilityNodeData& node3 = AccessibilityNodeData(), |
148 const AccessibilityNodeData& node4 = AccessibilityNodeData(), | 152 const AccessibilityNodeData& node4 = AccessibilityNodeData(), |
149 const AccessibilityNodeData& node5 = AccessibilityNodeData(), | 153 const AccessibilityNodeData& node5 = AccessibilityNodeData(), |
150 const AccessibilityNodeData& node6 = AccessibilityNodeData(), | 154 const AccessibilityNodeData& node6 = AccessibilityNodeData(), |
151 const AccessibilityNodeData& node7 = AccessibilityNodeData()); | 155 const AccessibilityNodeData& node7 = AccessibilityNodeData()); |
152 | 156 |
153 protected: | 157 protected: |
154 BrowserAccessibilityManager( | 158 BrowserAccessibilityManager( |
155 const AccessibilityNodeData& src, | 159 const AccessibilityNodeData& src, |
156 BrowserAccessibilityDelegate* delegate, | 160 BrowserAccessibilityDelegate* delegate, |
157 BrowserAccessibilityFactory* factory); | 161 BrowserAccessibilityFactory* factory); |
158 | 162 |
159 virtual void AddNodeToMap(BrowserAccessibility* node); | 163 virtual void AddNodeToMap(BrowserAccessibility* node); |
160 | 164 |
| 165 virtual void NotifyRootChanged() {} |
| 166 |
161 private: | 167 private: |
162 // The following states keep track of whether or not the | 168 // The following states keep track of whether or not the |
163 // on-screen keyboard is allowed to be shown. | 169 // on-screen keyboard is allowed to be shown. |
164 enum OnScreenKeyboardState { | 170 enum OnScreenKeyboardState { |
165 // Never show the on-screen keyboard because this tab is hidden. | 171 // Never show the on-screen keyboard because this tab is hidden. |
166 OSK_DISALLOWED_BECAUSE_TAB_HIDDEN, | 172 OSK_DISALLOWED_BECAUSE_TAB_HIDDEN, |
167 | 173 |
168 // This tab was just shown, so don't pop-up the on-screen keyboard if a | 174 // This tab was just shown, so don't pop-up the on-screen keyboard if a |
169 // text field gets focus that wasn't the result of an explicit touch. | 175 // text field gets focus that wasn't the result of an explicit touch. |
170 OSK_DISALLOWED_BECAUSE_TAB_JUST_APPEARED, | 176 OSK_DISALLOWED_BECAUSE_TAB_JUST_APPEARED, |
(...skipping 11 matching lines...) Expand all Loading... |
182 }; | 188 }; |
183 | 189 |
184 // Update a set of nodes using data received from the renderer | 190 // Update a set of nodes using data received from the renderer |
185 // process. | 191 // process. |
186 bool UpdateNodes(const std::vector<AccessibilityNodeData>& nodes); | 192 bool UpdateNodes(const std::vector<AccessibilityNodeData>& nodes); |
187 | 193 |
188 // Update one node from the tree using data received from the renderer | 194 // Update one node from the tree using data received from the renderer |
189 // process. Returns true on success, false on fatal error. | 195 // process. Returns true on success, false on fatal error. |
190 bool UpdateNode(const AccessibilityNodeData& src); | 196 bool UpdateNode(const AccessibilityNodeData& src); |
191 | 197 |
| 198 void SetRoot(BrowserAccessibility* root); |
| 199 |
192 BrowserAccessibility* CreateNode( | 200 BrowserAccessibility* CreateNode( |
193 BrowserAccessibility* parent, | 201 BrowserAccessibility* parent, |
194 int32 renderer_id, | 202 int32 renderer_id, |
195 int32 index_in_parent); | 203 int32 index_in_parent); |
196 | 204 |
197 protected: | 205 protected: |
198 // The object that can perform actions on our behalf. | 206 // The object that can perform actions on our behalf. |
199 BrowserAccessibilityDelegate* delegate_; | 207 BrowserAccessibilityDelegate* delegate_; |
200 | 208 |
201 // Factory to create BrowserAccessibility objects (for dependency injection). | 209 // Factory to create BrowserAccessibility objects (for dependency injection). |
202 scoped_ptr<BrowserAccessibilityFactory> factory_; | 210 scoped_ptr<BrowserAccessibilityFactory> factory_; |
203 | 211 |
204 // The root of the tree of accessible objects and the element that | 212 // The root of the tree of accessible objects and the element that |
205 // currently has focus, if any. | 213 // currently has focus, if any. |
206 BrowserAccessibility* root_; | 214 BrowserAccessibility* root_; |
207 BrowserAccessibility* focus_; | 215 BrowserAccessibility* focus_; |
208 | 216 |
209 // The on-screen keyboard state. | 217 // The on-screen keyboard state. |
210 OnScreenKeyboardState osk_state_; | 218 OnScreenKeyboardState osk_state_; |
211 | 219 |
212 // A mapping from renderer IDs to BrowserAccessibility objects. | 220 // A mapping from renderer IDs to BrowserAccessibility objects. |
213 base::hash_map<int32, BrowserAccessibility*> renderer_id_map_; | 221 base::hash_map<int32, BrowserAccessibility*> renderer_id_map_; |
214 | 222 |
215 DISALLOW_COPY_AND_ASSIGN(BrowserAccessibilityManager); | 223 DISALLOW_COPY_AND_ASSIGN(BrowserAccessibilityManager); |
216 }; | 224 }; |
217 | 225 |
218 } // namespace content | 226 } // namespace content |
219 | 227 |
220 #endif // CONTENT_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_MANAGER_H_ | 228 #endif // CONTENT_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_MANAGER_H_ |
OLD | NEW |