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

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

Issue 385057: Deleted webkit/api which now lives in webkit.org (Closed)
Patch Set: 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
« no previous file with comments | « webkit/api/src/WebAccessibilityCacheImpl.cpp ('k') | webkit/api/src/WebBindings.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /*
2 * Copyright (C) 2009 Google Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are
6 * met:
7 *
8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above
11 * copyright notice, this list of conditions and the following disclaimer
12 * in the documentation and/or other materials provided with the
13 * distribution.
14 * * Neither the name of Google Inc. nor the names of its
15 * contributors may be used to endorse or promote products derived from
16 * this software without specific prior written permission.
17 *
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
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.
29 */
30
31 #include "config.h"
32 #include "WebAccessibilityObject.h"
33
34 #include "AccessibilityObject.h"
35 #include "EventHandler.h"
36 #include "FrameView.h"
37 #include "PlatformKeyboardEvent.h"
38 #include "WebPoint.h"
39 #include "WebRect.h"
40 #include "WebString.h"
41
42 using namespace WebCore;
43
44 namespace WebKit {
45
46 class WebAccessibilityObjectPrivate : public WebCore::AccessibilityObject {
47 };
48
49 void WebAccessibilityObject::reset()
50 {
51 assign(0);
52 }
53
54 void WebAccessibilityObject::assign(const WebKit::WebAccessibilityObject& other)
55 {
56 WebAccessibilityObjectPrivate* p = const_cast<WebAccessibilityObjectPrivate*>(other.m_private);
57 if (p)
58 p->ref();
59 assign(p);
60 }
61
62 WebString WebAccessibilityObject::accessibilityDescription() const
63 {
64 if (!m_private)
65 return WebString();
66
67 m_private->updateBackingStore();
68 return m_private->accessibilityDescription();
69 }
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
98 WebAccessibilityObject WebAccessibilityObject::childAt(unsigned index) const
99 {
100 if (!m_private)
101 return WebAccessibilityObject();
102
103 m_private->updateBackingStore();
104 if (m_private->children().size() <= index)
105 return WebAccessibilityObject();
106
107 return WebAccessibilityObject(m_private->children()[index]);
108 }
109
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
171 {
172 if (!m_private)
173 return 0;
174
175 m_private->updateBackingStore();
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();
196 }
197
198 bool WebAccessibilityObject::isEnabled() const
199 {
200 if (!m_private)
201 return 0;
202
203 m_private->updateBackingStore();
204 return m_private->isEnabled();
205 }
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
353 WebAccessibilityRole WebAccessibilityObject::roleValue() const
354 {
355 if (!m_private)
356 return WebKit::WebAccessibilityRoleUnknown;
357
358 m_private->updateBackingStore();
359 return static_cast<WebAccessibilityRole>(m_private->roleValue());
360 }
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
371 WebString WebAccessibilityObject::title() const
372 {
373 if (!m_private)
374 return WebString();
375
376 m_private->updateBackingStore();
377 return m_private->title();
378 }
379
380 WebAccessibilityObject::WebAccessibilityObject(const WTF::PassRefPtr<WebCore::AccessibilityObject>& object)
381 : m_private(static_cast<WebAccessibilityObjectPrivate*>(object.releaseRef()))
382 {
383 }
384
385 WebAccessibilityObject& WebAccessibilityObject::operator=(const WTF::PassRefPtr<WebCore::AccessibilityObject>& object)
386 {
387 assign(static_cast<WebAccessibilityObjectPrivate*>(object.releaseRef()));
388 return *this;
389 }
390
391 WebAccessibilityObject::operator WTF::PassRefPtr<WebCore::AccessibilityObject>() const
392 {
393 return PassRefPtr<WebCore::AccessibilityObject>(const_cast<WebAccessibilityObjectPrivate*>(m_private));
394 }
395
396 void WebAccessibilityObject::assign(WebAccessibilityObjectPrivate* p)
397 {
398 // p is already ref'd for us by the caller
399 if (m_private)
400 m_private->deref();
401 m_private = p;
402 }
403
404 } // namespace WebKit
OLDNEW
« no previous file with comments | « webkit/api/src/WebAccessibilityCacheImpl.cpp ('k') | webkit/api/src/WebBindings.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698