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

Side by Side Diff: chrome/browser/browser_accessibility.cc

Issue 657020: Landing Chris Guillory CL.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 10 years, 10 months 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 | Annotate | Revision Log
« no previous file with comments | « chrome/browser/browser_accessibility.h ('k') | chrome/renderer/render_view.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 #include "chrome/browser/browser_accessibility.h" 5 #include "chrome/browser/browser_accessibility.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "chrome/browser/browser_accessibility_manager.h" 8 #include "chrome/browser/browser_accessibility_manager.h"
9 9
10 using webkit_glue::WebAccessibility; 10 using webkit_glue::WebAccessibility;
(...skipping 11 matching lines...) Expand all
22 parent_hwnd_ = parent_hwnd; 22 parent_hwnd_ = parent_hwnd;
23 23
24 // Mark instance as active. 24 // Mark instance as active.
25 instance_active_ = true; 25 instance_active_ = true;
26 return S_OK; 26 return S_OK;
27 } 27 }
28 28
29 HRESULT BrowserAccessibility::accDoDefaultAction(VARIANT var_id) { 29 HRESULT BrowserAccessibility::accDoDefaultAction(VARIANT var_id) {
30 if (!instance_active()) { 30 if (!instance_active()) {
31 // Instance no longer active, fail gracefully. 31 // Instance no longer active, fail gracefully.
32 // TODO(klink): Once we have MSAA events, change these fails to having 32 // TODO(ctguil): Once we have MSAA events, change these fails to having
33 // BrowserAccessibilityManager firing the right event. 33 // BrowserAccessibilityManager firing the right event.
34 return E_FAIL; 34 return E_FAIL;
35 } 35 }
36 36
37 if (var_id.vt != VT_I4) 37 if (var_id.vt != VT_I4)
38 return E_INVALIDARG; 38 return E_INVALIDARG;
39 39
40 if (!RequestAccessibilityInfo(WebAccessibility::FUNCTION_DODEFAULTACTION, 40 if (!RequestAccessibilityInfo(WebAccessibility::FUNCTION_DODEFAULTACTION,
41 var_id, NULL, NULL)) { 41 var_id, NULL, NULL)) {
42 return E_FAIL; 42 return E_FAIL;
43 } 43 }
44 44
45 if (!response().return_code) 45 if (response().return_code == WebAccessibility::RETURNCODE_FALSE)
46 return S_FALSE; 46 return S_FALSE;
47 47
48 return S_OK; 48 return S_OK;
49 } 49 }
50 50
51 STDMETHODIMP BrowserAccessibility::accHitTest(LONG x_left, LONG y_top, 51 STDMETHODIMP BrowserAccessibility::accHitTest(LONG x_left, LONG y_top,
52 VARIANT* child) { 52 VARIANT* child) {
53 if (!instance_active()) { 53 if (!instance_active()) {
54 // Instance no longer active, fail gracefully. 54 // Instance no longer active, fail gracefully.
55 return E_FAIL; 55 return E_FAIL;
56 } 56 }
57 57
58 if (!child) 58 if (!child)
59 return E_INVALIDARG; 59 return E_INVALIDARG;
60 60
61 if (!parent_hwnd_) { 61 if (!parent_hwnd_) {
62 // Parent HWND needed for coordinate conversion. 62 // Parent HWND needed for coordinate conversion.
63 return E_FAIL; 63 return E_FAIL;
64 } 64 }
65 65
66 // Convert coordinates to test from screen into client window coordinates, to 66 // Convert coordinates to test from screen into client window coordinates, to
67 // maintain sandbox functionality on renderer side. 67 // maintain sandbox functionality on renderer side.
68 POINT p = {x_left, y_top}; 68 POINT p = {x_left, y_top};
69 ::ScreenToClient(parent_hwnd_, &p); 69 ::ScreenToClient(parent_hwnd_, &p);
70 70
71 if (!RequestAccessibilityInfo(WebAccessibility::FUNCTION_HITTEST, 71 if (!RequestAccessibilityInfo(WebAccessibility::FUNCTION_HITTEST,
72 EmptyVariant(), p.x, p.y)) { 72 ChildSelfVariant(), p.x, p.y)) {
73 return E_FAIL; 73 return E_FAIL;
74 } 74 }
75 75
76 if (!response().return_code) { 76 if (response().return_code == WebAccessibility::RETURNCODE_FALSE) {
77 // The point is outside of the object's boundaries. 77 // The point is outside of the object's boundaries.
78 child->vt = VT_EMPTY; 78 child->vt = VT_EMPTY;
79 return S_FALSE; 79 return S_FALSE;
80 } 80 }
81 81
82 if (response().output_long1 == -1) { 82 if (response().output_long1 == -1) {
83 if (CreateInstance(IID_IAccessible, response().object_id, 83 if (CreateInstance(IID_IAccessible, response().object_id,
84 reinterpret_cast<void**>(&child->pdispVal)) == S_OK) { 84 reinterpret_cast<void**>(&child->pdispVal)) == S_OK) {
85 child->vt = VT_DISPATCH; 85 child->vt = VT_DISPATCH;
86 // Increment the reference count for the retrieved interface. 86 // Increment the reference count for the retrieved interface.
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 nav_dir == NAVDIR_LEFT || nav_dir == NAVDIR_RIGHT) { 149 nav_dir == NAVDIR_LEFT || nav_dir == NAVDIR_RIGHT) {
150 // Directions not implemented, matching Mozilla and IE. 150 // Directions not implemented, matching Mozilla and IE.
151 return E_INVALIDARG; 151 return E_INVALIDARG;
152 } 152 }
153 153
154 if (!RequestAccessibilityInfo(WebAccessibility::FUNCTION_NAVIGATE, start, 154 if (!RequestAccessibilityInfo(WebAccessibility::FUNCTION_NAVIGATE, start,
155 nav_dir, NULL)) { 155 nav_dir, NULL)) {
156 return E_FAIL; 156 return E_FAIL;
157 } 157 }
158 158
159 if (!response().return_code) { 159 if (response().return_code == WebAccessibility::RETURNCODE_FALSE) {
160 // No screen element was found in the specified direction. 160 // No screen element was found in the specified direction.
161 end->vt = VT_EMPTY; 161 end->vt = VT_EMPTY;
162 return S_FALSE; 162 return S_FALSE;
163 } 163 }
164 164
165 if (response().output_long1 == -1) { 165 if (response().output_long1 == -1) {
166 if (CreateInstance(IID_IAccessible, response().object_id, 166 if (CreateInstance(IID_IAccessible, response().object_id,
167 reinterpret_cast<void**>(&end->pdispVal)) == S_OK) { 167 reinterpret_cast<void**>(&end->pdispVal)) == S_OK) {
168 end->vt = VT_DISPATCH; 168 end->vt = VT_DISPATCH;
169 // Increment the reference count for the retrieved interface. 169 // Increment the reference count for the retrieved interface.
(...skipping 21 matching lines...) Expand all
191 191
192 // If var_child is the parent, remain with the same IDispatch. 192 // If var_child is the parent, remain with the same IDispatch.
193 if (var_child.lVal == CHILDID_SELF && iaccessible_id_ != 1000) 193 if (var_child.lVal == CHILDID_SELF && iaccessible_id_ != 1000)
194 return S_OK; 194 return S_OK;
195 195
196 if (!RequestAccessibilityInfo(WebAccessibility::FUNCTION_GETCHILD, var_child, 196 if (!RequestAccessibilityInfo(WebAccessibility::FUNCTION_GETCHILD, var_child,
197 NULL, NULL)) { 197 NULL, NULL)) {
198 return E_FAIL; 198 return E_FAIL;
199 } 199 }
200 200
201 if (!response().return_code) { 201 // TODO(ctguil): Figure out when the return code would be false
202 if (response().return_code == WebAccessibility::RETURNCODE_FALSE) {
202 // When at a leaf, children are handled by the parent object. 203 // When at a leaf, children are handled by the parent object.
203 *disp_child = NULL; 204 *disp_child = NULL;
204 return S_FALSE; 205 return S_FALSE;
205 } 206 }
206 207
207 // Retrieve the IUnknown interface for the parent view, and assign the 208 // Retrieve the IUnknown interface for the parent view, and assign the
208 // IDispatch returned. 209 // IDispatch returned.
209 if (CreateInstance(IID_IAccessible, response().object_id, 210 if (CreateInstance(IID_IAccessible, response().object_id,
210 reinterpret_cast<void**>(disp_child)) == S_OK) { 211 reinterpret_cast<void**>(disp_child)) == S_OK) {
211 // Increment the reference count for the retrieved interface. 212 // Increment the reference count for the retrieved interface.
212 (*disp_child)->AddRef(); 213 (*disp_child)->AddRef();
213 return S_OK; 214 return S_OK;
214 } else { 215 } else {
215 return E_NOINTERFACE; 216 return E_NOINTERFACE;
216 } 217 }
217 } 218 }
218 219
219 STDMETHODIMP BrowserAccessibility::get_accChildCount(LONG* child_count) { 220 STDMETHODIMP BrowserAccessibility::get_accChildCount(LONG* child_count) {
220 if (!instance_active()) { 221 if (!instance_active()) {
221 // Instance no longer active, fail gracefully. 222 // Instance no longer active, fail gracefully.
222 return E_FAIL; 223 return E_FAIL;
223 } 224 }
224 225
225 if (!child_count) 226 if (!child_count)
226 return E_INVALIDARG; 227 return E_INVALIDARG;
227 228
228 if (!RequestAccessibilityInfo(WebAccessibility::FUNCTION_CHILDCOUNT, 229 if (!RequestAccessibilityInfo(WebAccessibility::FUNCTION_CHILDCOUNT,
229 EmptyVariant(), NULL, NULL)) { 230 ChildSelfVariant(), NULL, NULL)) {
230 return E_FAIL; 231 return E_FAIL;
231 } 232 }
232 233
233 *child_count = response().output_long1; 234 *child_count = response().output_long1;
234 return S_OK; 235 return S_OK;
235 } 236 }
236 237
237 STDMETHODIMP BrowserAccessibility::get_accDefaultAction(VARIANT var_id, 238 STDMETHODIMP BrowserAccessibility::get_accDefaultAction(VARIANT var_id,
238 BSTR* def_action) { 239 BSTR* def_action) {
239 if (!instance_active()) { 240 if (!instance_active()) {
240 // Instance no longer active, fail gracefully. 241 // Instance no longer active, fail gracefully.
241 return E_FAIL; 242 return E_FAIL;
242 } 243 }
243 244
244 if (var_id.vt != VT_I4 || !def_action) 245 if (var_id.vt != VT_I4 || !def_action)
245 return E_INVALIDARG; 246 return E_INVALIDARG;
246 247
247 if (!RequestAccessibilityInfo(WebAccessibility::FUNCTION_DEFAULTACTION, 248 if (!RequestAccessibilityInfo(WebAccessibility::FUNCTION_DEFAULTACTION,
248 var_id, NULL, NULL)) { 249 var_id, NULL, NULL)) {
249 return E_FAIL; 250 return E_FAIL;
250 } 251 }
251 252
252 if (!response().return_code) { 253 if (response().return_code == WebAccessibility::RETURNCODE_FALSE) {
253 // No string found. 254 // No string found.
254 return S_FALSE; 255 return S_FALSE;
255 } 256 }
256 257
257 *def_action = SysAllocString(response().output_string.c_str()); 258 *def_action = SysAllocString(response().output_string.c_str());
258 259
259 DCHECK(*def_action); 260 DCHECK(*def_action);
260 return S_OK; 261 return S_OK;
261 } 262 }
262 263
263 STDMETHODIMP BrowserAccessibility::get_accDescription(VARIANT var_id, 264 STDMETHODIMP BrowserAccessibility::get_accDescription(VARIANT var_id,
264 BSTR* desc) { 265 BSTR* desc) {
265 if (!instance_active()) { 266 if (!instance_active()) {
266 // Instance no longer active, fail gracefully. 267 // Instance no longer active, fail gracefully.
267 return E_FAIL; 268 return E_FAIL;
268 } 269 }
269 270
270 if (var_id.vt != VT_I4 || !desc) 271 if (var_id.vt != VT_I4 || !desc)
271 return E_INVALIDARG; 272 return E_INVALIDARG;
272 273
273 if (!RequestAccessibilityInfo(WebAccessibility::FUNCTION_DESCRIPTION, var_id, 274 if (!RequestAccessibilityInfo(WebAccessibility::FUNCTION_DESCRIPTION, var_id,
274 NULL, NULL)) { 275 NULL, NULL)) {
275 return E_FAIL; 276 return E_FAIL;
276 } 277 }
277 278
278 if (!response().return_code) { 279 if (response().return_code == WebAccessibility::RETURNCODE_FALSE) {
279 // No string found. 280 // No string found.
280 return S_FALSE; 281 return S_FALSE;
281 } 282 }
282 283
283 *desc = SysAllocString(response().output_string.c_str()); 284 *desc = SysAllocString(response().output_string.c_str());
284 285
285 DCHECK(*desc); 286 DCHECK(*desc);
286 return S_OK; 287 return S_OK;
287 } 288 }
288 289
289 STDMETHODIMP BrowserAccessibility::get_accFocus(VARIANT* focus_child) { 290 STDMETHODIMP BrowserAccessibility::get_accFocus(VARIANT* focus_child) {
290 if (!instance_active()) { 291 if (!instance_active()) {
291 // Instance no longer active, fail gracefully. 292 // Instance no longer active, fail gracefully.
292 return E_FAIL; 293 return E_FAIL;
293 } 294 }
294 295
295 if (!focus_child) 296 if (!focus_child)
296 return E_INVALIDARG; 297 return E_INVALIDARG;
297 298
298 if (!RequestAccessibilityInfo(WebAccessibility::FUNCTION_GETFOCUSEDCHILD, 299 if (!RequestAccessibilityInfo(WebAccessibility::FUNCTION_GETFOCUSEDCHILD,
299 EmptyVariant(), NULL, NULL)) { 300 ChildSelfVariant(), NULL, NULL)) {
300 return E_FAIL; 301 return E_FAIL;
301 } 302 }
302 303
303 if (!response().return_code) { 304 if (response().return_code == WebAccessibility::RETURNCODE_FALSE) {
304 // The window that contains this object is not the active window. 305 // The window that contains this object is not the active window.
305 focus_child->vt = VT_EMPTY; 306 focus_child->vt = VT_EMPTY;
306 return S_FALSE; 307 return S_FALSE;
307 } 308 }
308 309
309 if (response().output_long1 == -1) { 310 if (response().output_long1 == -1) {
310 if (CreateInstance(IID_IAccessible, response().object_id, 311 if (CreateInstance(IID_IAccessible, response().object_id,
311 reinterpret_cast<void**>(&focus_child->pdispVal)) == S_OK) { 312 reinterpret_cast<void**>(&focus_child->pdispVal)) == S_OK) {
312 focus_child->vt = VT_DISPATCH; 313 focus_child->vt = VT_DISPATCH;
313 // Increment the reference count for the retrieved interface. 314 // Increment the reference count for the retrieved interface.
(...skipping 16 matching lines...) Expand all
330 } 331 }
331 332
332 if (var_id.vt != VT_I4 || !help) 333 if (var_id.vt != VT_I4 || !help)
333 return E_INVALIDARG; 334 return E_INVALIDARG;
334 335
335 if (!RequestAccessibilityInfo(WebAccessibility::FUNCTION_HELPTEXT, var_id, 336 if (!RequestAccessibilityInfo(WebAccessibility::FUNCTION_HELPTEXT, var_id,
336 NULL, NULL)) { 337 NULL, NULL)) {
337 return E_FAIL; 338 return E_FAIL;
338 } 339 }
339 340
340 if (!response().return_code || response().output_string.empty()) { 341 if (response().return_code == WebAccessibility::RETURNCODE_FALSE ||
342 response().output_string.empty()) {
341 // No string found. 343 // No string found.
342 return S_FALSE; 344 return S_FALSE;
343 } 345 }
344 346
345 *help = SysAllocString(response().output_string.c_str()); 347 *help = SysAllocString(response().output_string.c_str());
346 348
347 DCHECK(*help); 349 DCHECK(*help);
348 return S_OK; 350 return S_OK;
349 } 351 }
350 352
351 STDMETHODIMP BrowserAccessibility::get_accKeyboardShortcut(VARIANT var_id, 353 STDMETHODIMP BrowserAccessibility::get_accKeyboardShortcut(VARIANT var_id,
352 BSTR* acc_key) { 354 BSTR* acc_key) {
353 if (!instance_active()) { 355 if (!instance_active()) {
354 // Instance no longer active, fail gracefully. 356 // Instance no longer active, fail gracefully.
355 return E_FAIL; 357 return E_FAIL;
356 } 358 }
357 359
358 if (var_id.vt != VT_I4 || !acc_key) 360 if (var_id.vt != VT_I4 || !acc_key)
359 return E_INVALIDARG; 361 return E_INVALIDARG;
360 362
361 if (!RequestAccessibilityInfo(WebAccessibility::FUNCTION_KEYBOARDSHORTCUT, 363 if (!RequestAccessibilityInfo(WebAccessibility::FUNCTION_KEYBOARDSHORTCUT,
362 var_id, NULL, NULL)) { 364 var_id, NULL, NULL)) {
363 return E_FAIL; 365 return E_FAIL;
364 } 366 }
365 367
366 if (!response().return_code) { 368 if (response().return_code == WebAccessibility::RETURNCODE_FALSE) {
367 // No string found. 369 // No string found.
368 return S_FALSE; 370 return S_FALSE;
369 } 371 }
370 372
371 *acc_key = SysAllocString(response().output_string.c_str()); 373 *acc_key = SysAllocString(response().output_string.c_str());
372 374
373 DCHECK(*acc_key); 375 DCHECK(*acc_key);
374 return S_OK; 376 return S_OK;
375 } 377 }
376 378
377 STDMETHODIMP BrowserAccessibility::get_accName(VARIANT var_id, BSTR* name) { 379 STDMETHODIMP BrowserAccessibility::get_accName(VARIANT var_id, BSTR* name) {
378 if (!instance_active()) { 380 if (!instance_active()) {
379 // Instance no longer active, fail gracefully. 381 // Instance no longer active, fail gracefully.
380 return E_FAIL; 382 return E_FAIL;
381 } 383 }
382 384
383 if (var_id.vt != VT_I4 || !name) 385 if (var_id.vt != VT_I4 || !name)
384 return E_INVALIDARG; 386 return E_INVALIDARG;
385 387
386 if (!RequestAccessibilityInfo(WebAccessibility::FUNCTION_NAME, var_id, NULL, 388 if (!RequestAccessibilityInfo(WebAccessibility::FUNCTION_NAME, var_id, NULL,
387 NULL)) { 389 NULL)) {
388 return E_FAIL; 390 return E_FAIL;
389 } 391 }
390 392
391 if (!response().return_code) { 393 if (response().return_code == WebAccessibility::RETURNCODE_FALSE) {
392 // No string found. 394 // No string found.
393 return S_FALSE; 395 return S_FALSE;
394 } 396 }
395 397
396 *name = SysAllocString(response().output_string.c_str()); 398 *name = SysAllocString(response().output_string.c_str());
397 399
398 DCHECK(*name); 400 DCHECK(*name);
399 return S_OK; 401 return S_OK;
400 } 402 }
401 403
(...skipping 16 matching lines...) Expand all
418 reinterpret_cast<void**>(disp_parent)); 420 reinterpret_cast<void**>(disp_parent));
419 421
420 if (!SUCCEEDED(hr)) { 422 if (!SUCCEEDED(hr)) {
421 *disp_parent = NULL; 423 *disp_parent = NULL;
422 return S_FALSE; 424 return S_FALSE;
423 } 425 }
424 return S_OK; 426 return S_OK;
425 } 427 }
426 428
427 if (!RequestAccessibilityInfo(WebAccessibility::FUNCTION_GETPARENT, 429 if (!RequestAccessibilityInfo(WebAccessibility::FUNCTION_GETPARENT,
428 EmptyVariant(), NULL, NULL)) { 430 ChildSelfVariant(), NULL, NULL)) {
429 return E_FAIL; 431 return E_FAIL;
430 } 432 }
431 433
432 if (!response().return_code) { 434 if (response().return_code == WebAccessibility::RETURNCODE_FALSE) {
433 // No parent exists for this object. 435 // No parent exists for this object.
434 return S_FALSE; 436 return S_FALSE;
435 } 437 }
436 438
437 // Retrieve the IUnknown interface for the parent view, and assign the 439 // Retrieve the IUnknown interface for the parent view, and assign the
438 // IDispatch returned. 440 // IDispatch returned.
439 if (CreateInstance(IID_IAccessible, response().object_id, 441 if (CreateInstance(IID_IAccessible, response().object_id,
440 reinterpret_cast<void**>(disp_parent)) == S_OK) { 442 reinterpret_cast<void**>(disp_parent)) == S_OK) {
441 // Increment the reference count for the retrieved interface. 443 // Increment the reference count for the retrieved interface.
442 (*disp_parent)->AddRef(); 444 (*disp_parent)->AddRef();
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
492 } 494 }
493 495
494 if (var_id.vt != VT_I4 || !value) 496 if (var_id.vt != VT_I4 || !value)
495 return E_INVALIDARG; 497 return E_INVALIDARG;
496 498
497 if (!RequestAccessibilityInfo(WebAccessibility::FUNCTION_VALUE, var_id, NULL, 499 if (!RequestAccessibilityInfo(WebAccessibility::FUNCTION_VALUE, var_id, NULL,
498 NULL)) { 500 NULL)) {
499 return E_FAIL; 501 return E_FAIL;
500 } 502 }
501 503
502 if (!response().return_code || response().output_string.empty()) { 504 if (response().return_code == WebAccessibility::RETURNCODE_FALSE ||
505 response().output_string.empty()) {
503 // No string found. 506 // No string found.
504 return S_FALSE; 507 return S_FALSE;
505 } 508 }
506 509
507 *value = SysAllocString(response().output_string.c_str()); 510 *value = SysAllocString(response().output_string.c_str());
508 511
509 DCHECK(*value); 512 DCHECK(*value);
510 return S_OK; 513 return S_OK;
511 } 514 }
512 515
(...skipping 20 matching lines...) Expand all
533 int iaccessible_id, 536 int iaccessible_id,
534 void** interface_ptr) { 537 void** interface_ptr) {
535 return BrowserAccessibilityManager::GetInstance()-> 538 return BrowserAccessibilityManager::GetInstance()->
536 CreateAccessibilityInstance(iid, iaccessible_id, routing_id_, 539 CreateAccessibilityInstance(iid, iaccessible_id, routing_id_,
537 process_id_, parent_hwnd_, interface_ptr); 540 process_id_, parent_hwnd_, interface_ptr);
538 } 541 }
539 542
540 bool BrowserAccessibility::RequestAccessibilityInfo(int iaccessible_func_id, 543 bool BrowserAccessibility::RequestAccessibilityInfo(int iaccessible_func_id,
541 VARIANT var_id, LONG input1, 544 VARIANT var_id, LONG input1,
542 LONG input2) { 545 LONG input2) {
546 DCHECK(V_VT(&var_id) == VT_I4);
547
543 // Create and populate IPC message structure, for retrieval of accessibility 548 // Create and populate IPC message structure, for retrieval of accessibility
544 // information from the renderer. 549 // information from the renderer.
545 WebAccessibility::InParams in_params; 550 WebAccessibility::InParams in_params;
546 in_params.object_id = iaccessible_id_; 551 in_params.object_id = iaccessible_id_;
547 in_params.function_id = iaccessible_func_id; 552 in_params.function_id = iaccessible_func_id;
548 in_params.child_id = var_id.lVal; 553 in_params.child_id = V_I4(&var_id);
549 in_params.input_long1 = input1; 554 in_params.input_long1 = input1;
550 in_params.input_long2 = input2; 555 in_params.input_long2 = input2;
551 556
552 return BrowserAccessibilityManager::GetInstance()-> 557 return BrowserAccessibilityManager::GetInstance()->
553 RequestAccessibilityInfo(&in_params, routing_id_, process_id_); 558 RequestAccessibilityInfo(&in_params, routing_id_, process_id_) &&
559 response().return_code != WebAccessibility::RETURNCODE_FAIL;
554 } 560 }
555 561
556 const WebAccessibility::OutParams& BrowserAccessibility::response() { 562 const WebAccessibility::OutParams& BrowserAccessibility::response() {
557 return BrowserAccessibilityManager::GetInstance()->response(); 563 return BrowserAccessibilityManager::GetInstance()->response();
558 } 564 }
559 565
560 long BrowserAccessibility::MSAARole(long browser_accessibility_role) { 566 long BrowserAccessibility::MSAARole(long browser_accessibility_role) {
561 switch (browser_accessibility_role) { 567 switch (browser_accessibility_role) {
562 case WebAccessibility::ROLE_APPLICATION: 568 case WebAccessibility::ROLE_APPLICATION:
563 return ROLE_SYSTEM_APPLICATION; 569 return ROLE_SYSTEM_APPLICATION;
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
666 state |= STATE_SYSTEM_READONLY; 672 state |= STATE_SYSTEM_READONLY;
667 673
668 if ((browser_accessibility_state >> WebAccessibility::STATE_TRAVERSED) & 1) 674 if ((browser_accessibility_state >> WebAccessibility::STATE_TRAVERSED) & 1)
669 state |= STATE_SYSTEM_TRAVERSED; 675 state |= STATE_SYSTEM_TRAVERSED;
670 676
671 if ((browser_accessibility_state >> WebAccessibility::STATE_UNAVAILABLE) & 1) 677 if ((browser_accessibility_state >> WebAccessibility::STATE_UNAVAILABLE) & 1)
672 state |= STATE_SYSTEM_UNAVAILABLE; 678 state |= STATE_SYSTEM_UNAVAILABLE;
673 679
674 return state; 680 return state;
675 } 681 }
OLDNEW
« no previous file with comments | « chrome/browser/browser_accessibility.h ('k') | chrome/renderer/render_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698