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

Side by Side Diff: webkit/api/src/WebAccessibilityObject.cpp

Issue 348063: Introduce WebAccessibilityControllerImpl.... (Closed) Base URL: svn://chrome-svn.corp.google.com/chrome/trunk/src/
Patch Set: Licked clean. Created 11 years, 1 month 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
Property Changes:
Added: svn:eol-style
+ LF
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009 Google Inc. All rights reserved. 2 * Copyright (C) 2009 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 are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * 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 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 11 matching lines...) Expand all
22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */ 29 */
30 30
31 #include "config.h" 31 #include "config.h"
32 #include "WebAccessibilityObject.h"
33
32 #include "AccessibilityObject.h" 34 #include "AccessibilityObject.h"
33 #include "WebAccessibilityObject.h" 35 #include "EventHandler.h"
36 #include "FrameView.h"
37 #include "PlatformKeyboardEvent.h"
38 #include "WebPoint.h"
39 #include "WebRect.h"
34 #include "WebString.h" 40 #include "WebString.h"
35 41
36 using namespace WebCore; 42 using namespace WebCore;
37 43
38 namespace WebKit { 44 namespace WebKit {
39 45
40 class WebAccessibilityObjectPrivate : public WebCore::AccessibilityObject { 46 class WebAccessibilityObjectPrivate : public WebCore::AccessibilityObject {
41 }; 47 };
42 48
43 void WebAccessibilityObject::reset() 49 void WebAccessibilityObject::reset()
(...skipping 11 matching lines...) Expand all
55 61
56 WebString WebAccessibilityObject::accessibilityDescription() const 62 WebString WebAccessibilityObject::accessibilityDescription() const
57 { 63 {
58 if (!m_private) 64 if (!m_private)
59 return WebString(); 65 return WebString();
60 66
61 m_private->updateBackingStore(); 67 m_private->updateBackingStore();
62 return m_private->accessibilityDescription(); 68 return m_private->accessibilityDescription();
63 } 69 }
64 70
71 WebString WebAccessibilityObject::actionVerb() const
72 {
73 if (!m_private)
74 return WebString();
75
76 m_private->updateBackingStore();
77 return m_private->actionVerb();
78 }
79
80 bool WebAccessibilityObject::canSetFocusAttribute() const
81 {
82 if (!m_private)
83 return false;
84
85 m_private->updateBackingStore();
86 return m_private->canSetFocusAttribute();
87 }
88
89 unsigned WebAccessibilityObject::childCount() const
90 {
91 if (!m_private)
92 return 0;
93
94 m_private->updateBackingStore();
95 return m_private->children().size();
96 }
97
65 WebAccessibilityObject WebAccessibilityObject::childAt(unsigned index) const 98 WebAccessibilityObject WebAccessibilityObject::childAt(unsigned index) const
66 { 99 {
67 if (!m_private) 100 if (!m_private)
68 return WebAccessibilityObject(); 101 return WebAccessibilityObject();
69 102
70 m_private->updateBackingStore(); 103 m_private->updateBackingStore();
71 if (m_private->children().size() <= index) 104 if (m_private->children().size() <= index)
72 return WebAccessibilityObject(); 105 return WebAccessibilityObject();
73 106
74 return WebAccessibilityObject(m_private->children()[index]); 107 return WebAccessibilityObject(m_private->children()[index]);
75 } 108 }
76 109
77 unsigned WebAccessibilityObject::childCount() const 110 WebAccessibilityObject WebAccessibilityObject::firstChild() const
111 {
112 if (!m_private)
113 return WebAccessibilityObject();
114
115 m_private->updateBackingStore();
116 return WebAccessibilityObject(m_private->firstChild());
117 }
118
119 WebAccessibilityObject WebAccessibilityObject::focusedChild() const
120 {
121 if (!m_private)
122 return WebAccessibilityObject();
123
124 m_private->updateBackingStore();
125 RefPtr<AccessibilityObject> focused = m_private->focusedUIElement();
126 if (m_private == focused.get() || focused->parentObject() == m_private)
127 return WebAccessibilityObject(focused);
128
129 return WebAccessibilityObject();
130 }
131
132 WebAccessibilityObject WebAccessibilityObject::lastChild() const
133 {
134 if (!m_private)
135 return WebAccessibilityObject();
136
137 m_private->updateBackingStore();
138 return WebAccessibilityObject(m_private->lastChild());
139 }
140
141
142 WebAccessibilityObject WebAccessibilityObject::nextSibling() const
143 {
144 if (!m_private)
145 return WebAccessibilityObject();
146
147 m_private->updateBackingStore();
148 return WebAccessibilityObject(m_private->nextSibling());
149 }
150
151 WebAccessibilityObject WebAccessibilityObject::parentObject() const
152 {
153 if (!m_private)
154 return WebAccessibilityObject();
155
156 m_private->updateBackingStore();
157 return WebAccessibilityObject(m_private->parentObject());
158 }
159
160
161 WebAccessibilityObject WebAccessibilityObject::previousSibling() const
162 {
163 if (!m_private)
164 return WebAccessibilityObject();
165
166 m_private->updateBackingStore();
167 return WebAccessibilityObject(m_private->previousSibling());
168 }
169
170 bool WebAccessibilityObject::isAnchor() const
78 { 171 {
79 if (!m_private) 172 if (!m_private)
80 return 0; 173 return 0;
81 174
82 m_private->updateBackingStore(); 175 m_private->updateBackingStore();
83 return m_private->children().size(); 176 return m_private->isAnchor();
177 }
178
179 bool WebAccessibilityObject::isChecked() const
180 {
181 if (!m_private)
182 return 0;
183
184 m_private->updateBackingStore();
185 return m_private->isChecked();
186 }
187
188
189 bool WebAccessibilityObject::isFocused() const
190 {
191 if (!m_private)
192 return 0;
193
194 m_private->updateBackingStore();
195 return m_private->isFocused();
84 } 196 }
85 197
86 bool WebAccessibilityObject::isEnabled() const 198 bool WebAccessibilityObject::isEnabled() const
87 { 199 {
88 if (!m_private) 200 if (!m_private)
89 return 0; 201 return 0;
90 202
91 m_private->updateBackingStore(); 203 m_private->updateBackingStore();
92 return m_private->isEnabled(); 204 return m_private->isEnabled();
93 } 205 }
94 206
207 bool WebAccessibilityObject::isHovered() const
208 {
209 if (!m_private)
210 return 0;
211
212 m_private->updateBackingStore();
213 return m_private->isHovered();
214 }
215
216 bool WebAccessibilityObject::isIndeterminate() const
217 {
218 if (!m_private)
219 return 0;
220
221 m_private->updateBackingStore();
222 return m_private->isIndeterminate();
223 }
224
225 bool WebAccessibilityObject::isMultiSelect() const
226 {
227 if (!m_private)
228 return 0;
229
230 m_private->updateBackingStore();
231 return m_private->isMultiSelect();
232 }
233
234 bool WebAccessibilityObject::isOffScreen() const
235 {
236 if (!m_private)
237 return 0;
238
239 m_private->updateBackingStore();
240 return m_private->isOffScreen();
241 }
242
243 bool WebAccessibilityObject::isPasswordField() const
244 {
245 if (!m_private)
246 return 0;
247
248 m_private->updateBackingStore();
249 return m_private->isPasswordField();
250 }
251
252 bool WebAccessibilityObject::isPressed() const
253 {
254 if (!m_private)
255 return 0;
256
257 m_private->updateBackingStore();
258 return m_private->isPressed();
259 }
260
261 bool WebAccessibilityObject::isReadOnly() const
262 {
263 if (!m_private)
264 return 0;
265
266 m_private->updateBackingStore();
267 return m_private->isReadOnly();
268 }
269
270 bool WebAccessibilityObject::isVisited() const
271 {
272 if (!m_private)
273 return 0;
274
275 m_private->updateBackingStore();
276 return m_private->isVisited();
277 }
278
279 WebRect WebAccessibilityObject::boundingBoxRect() const
280 {
281 if (!m_private)
282 return WebRect();
283
284 m_private->updateBackingStore();
285 return m_private->documentFrameView()->contentsToWindow(m_private->boundingBoxRect());
286 }
287
288 WebString WebAccessibilityObject::helpText() const
289 {
290 if (!m_private)
291 return WebString();
292
293 m_private->updateBackingStore();
294 return m_private->helpText();
295 }
296
297 WebAccessibilityObject WebAccessibilityObject::hitTest(const WebPoint& point) const
298 {
299 if (!m_private)
300 return WebAccessibilityObject();
301
302 m_private->updateBackingStore();
303 IntPoint contentsPoint = m_private->documentFrameView()->windowToContents(point);
304 RefPtr<AccessibilityObject> hit = m_private->doAccessibilityHitTest(contentsPoint);
305
306 if (hit.get())
307 return WebAccessibilityObject(hit);
308
309 if (m_private->boundingBoxRect().contains(contentsPoint))
310 return *this;
311
312 return WebAccessibilityObject();
313 }
314
315 WebString WebAccessibilityObject::keyboardShortcut() const
316 {
317 if (!m_private)
318 return WebString();
319
320 m_private->updateBackingStore();
321 String accessKey = m_private->accessKey();
322 if (accessKey.isNull())
323 return WebString();
324
325 static String modifierString;
326 if (modifierString.isNull()) {
327 unsigned modifiers = EventHandler::accessKeyModifiers();
328 // Follow the same order as Mozilla MSAA implementation:
329 // Ctrl+Alt+Shift+Meta+key. MSDN states that keyboard shortcut strings
330 // should not be localized and defines the separator as "+".
331 if (modifiers & PlatformKeyboardEvent::CtrlKey)
332 modifierString += "Ctrl+";
333 if (modifiers & PlatformKeyboardEvent::AltKey)
334 modifierString += "Alt+";
335 if (modifiers & PlatformKeyboardEvent::ShiftKey)
336 modifierString += "Shift+";
337 if (modifiers & PlatformKeyboardEvent::MetaKey)
338 modifierString += "Win+";
339 }
340
341 return modifierString + accessKey;
342 }
343
344 bool WebAccessibilityObject::performDefaultAction() const
345 {
346 if (!m_private)
347 return false;
348
349 m_private->updateBackingStore();
350 return m_private->performDefaultAction();
351 }
352
95 WebAccessibilityRole WebAccessibilityObject::roleValue() const 353 WebAccessibilityRole WebAccessibilityObject::roleValue() const
96 { 354 {
355 if (!m_private)
356 return WebKit::WebAccessibilityRoleUnknown;
357
97 m_private->updateBackingStore(); 358 m_private->updateBackingStore();
98 return static_cast<WebAccessibilityRole>(m_private->roleValue()); 359 return static_cast<WebAccessibilityRole>(m_private->roleValue());
99 } 360 }
100 361
362 WebString WebAccessibilityObject::stringValue() const
363 {
364 if (!m_private)
365 return WebString();
366
367 m_private->updateBackingStore();
368 return m_private->stringValue();
369 }
370
101 WebString WebAccessibilityObject::title() const 371 WebString WebAccessibilityObject::title() const
102 { 372 {
103 if (!m_private) 373 if (!m_private)
104 return WebString(); 374 return WebString();
105 375
106 m_private->updateBackingStore(); 376 m_private->updateBackingStore();
107 return m_private->title(); 377 return m_private->title();
108 } 378 }
109 379
110 WebAccessibilityObject::WebAccessibilityObject(const WTF::PassRefPtr<WebCore::AccessibilityObject>& object) 380 WebAccessibilityObject::WebAccessibilityObject(const WTF::PassRefPtr<WebCore::AccessibilityObject>& object)
(...skipping 14 matching lines...) Expand all
125 395
126 void WebAccessibilityObject::assign(WebAccessibilityObjectPrivate* p) 396 void WebAccessibilityObject::assign(WebAccessibilityObjectPrivate* p)
127 { 397 {
128 // p is already ref'd for us by the caller 398 // p is already ref'd for us by the caller
129 if (m_private) 399 if (m_private)
130 m_private->deref(); 400 m_private->deref();
131 m_private = p; 401 m_private = p;
132 } 402 }
133 403
134 } // namespace WebKit 404 } // namespace WebKit
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698