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

Side by Side Diff: content/browser/accessibility/browser_accessibility_win.cc

Issue 1705853002: NOT FOR REVIEW. ax tree focus with debugging (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed crash Created 4 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
OLDNEW
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 #include "content/browser/accessibility/browser_accessibility_win.h" 5 #include "content/browser/accessibility/browser_accessibility_win.h"
6 6
7 #include <UIAutomationClient.h> 7 #include <UIAutomationClient.h>
8 #include <UIAutomationCoreApi.h> 8 #include <UIAutomationCoreApi.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after
428 } 428 }
429 429
430 STDMETHODIMP BrowserAccessibilityWin::get_accFocus(VARIANT* focus_child) { 430 STDMETHODIMP BrowserAccessibilityWin::get_accFocus(VARIANT* focus_child) {
431 if (!instance_active()) 431 if (!instance_active())
432 return E_FAIL; 432 return E_FAIL;
433 433
434 if (!focus_child) 434 if (!focus_child)
435 return E_INVALIDARG; 435 return E_INVALIDARG;
436 436
437 BrowserAccessibilityWin* focus = static_cast<BrowserAccessibilityWin*>( 437 BrowserAccessibilityWin* focus = static_cast<BrowserAccessibilityWin*>(
438 manager()->GetFocus(this)); 438 manager()->GetFocus());
439 if (focus == this) { 439 if (focus == this) {
440 focus_child->vt = VT_I4; 440 focus_child->vt = VT_I4;
441 focus_child->lVal = CHILDID_SELF; 441 focus_child->lVal = CHILDID_SELF;
442 } else if (focus == NULL) { 442 } else if (focus == NULL) {
443 focus_child->vt = VT_EMPTY; 443 focus_child->vt = VT_EMPTY;
444 } else { 444 } else {
445 focus_child->vt = VT_DISPATCH; 445 focus_child->vt = VT_DISPATCH;
446 focus_child->pdispVal = focus->NewReference(); 446 focus_child->pdispVal = focus->NewReference();
447 } 447 }
448 448
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
563 563
564 if (!state) 564 if (!state)
565 return E_INVALIDARG; 565 return E_INVALIDARG;
566 566
567 BrowserAccessibilityWin* target = GetTargetFromChildID(var_id); 567 BrowserAccessibilityWin* target = GetTargetFromChildID(var_id);
568 if (!target) 568 if (!target)
569 return E_INVALIDARG; 569 return E_INVALIDARG;
570 570
571 state->vt = VT_I4; 571 state->vt = VT_I4;
572 state->lVal = target->ia_state(); 572 state->lVal = target->ia_state();
573 if (manager()->GetFocus(NULL) == this) 573 if (manager()->GetFocus() == this)
574 state->lVal |= STATE_SYSTEM_FOCUSED; 574 state->lVal |= STATE_SYSTEM_FOCUSED;
575 575
576 return S_OK; 576 return S_OK;
577 } 577 }
578 578
579 STDMETHODIMP BrowserAccessibilityWin::get_accValue(VARIANT var_id, 579 STDMETHODIMP BrowserAccessibilityWin::get_accValue(VARIANT var_id,
580 BSTR* value) { 580 BSTR* value) {
581 if (!instance_active()) 581 if (!instance_active())
582 return E_FAIL; 582 return E_FAIL;
583 583
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
670 static_cast<base::win::IUnknownImpl*>(enum_variant)); 670 static_cast<base::win::IUnknownImpl*>(enum_variant));
671 return S_OK; 671 return S_OK;
672 } 672 }
673 673
674 STDMETHODIMP BrowserAccessibilityWin::accSelect( 674 STDMETHODIMP BrowserAccessibilityWin::accSelect(
675 LONG flags_sel, VARIANT var_id) { 675 LONG flags_sel, VARIANT var_id) {
676 if (!instance_active()) 676 if (!instance_active())
677 return E_FAIL; 677 return E_FAIL;
678 678
679 if (flags_sel & SELFLAG_TAKEFOCUS) { 679 if (flags_sel & SELFLAG_TAKEFOCUS) {
680 manager()->SetFocus(this, true); 680 manager()->SetFocus(*this);
681 return S_OK; 681 return S_OK;
682 } 682 }
683 683
684 return S_FALSE; 684 return S_FALSE;
685 } 685 }
686 686
687 STDMETHODIMP 687 STDMETHODIMP
688 BrowserAccessibilityWin::put_accName(VARIANT var_id, BSTR put_name) { 688 BrowserAccessibilityWin::put_accName(VARIANT var_id, BSTR put_name) {
689 return E_NOTIMPL; 689 return E_NOTIMPL;
690 } 690 }
(...skipping 3737 matching lines...) Expand 10 before | Expand all | Expand 10 after
4428 ia_role = ROLE_SYSTEM_LIST; 4428 ia_role = ROLE_SYSTEM_LIST;
4429 ia_state |= STATE_SYSTEM_READONLY; 4429 ia_state |= STATE_SYSTEM_READONLY;
4430 break; 4430 break;
4431 case ui::AX_ROLE_LIST_BOX: 4431 case ui::AX_ROLE_LIST_BOX:
4432 ia_role = ROLE_SYSTEM_LIST; 4432 ia_role = ROLE_SYSTEM_LIST;
4433 break; 4433 break;
4434 case ui::AX_ROLE_LIST_BOX_OPTION: 4434 case ui::AX_ROLE_LIST_BOX_OPTION:
4435 ia_role = ROLE_SYSTEM_LISTITEM; 4435 ia_role = ROLE_SYSTEM_LISTITEM;
4436 if (ia_state & STATE_SYSTEM_SELECTABLE) { 4436 if (ia_state & STATE_SYSTEM_SELECTABLE) {
4437 ia_state |= STATE_SYSTEM_FOCUSABLE; 4437 ia_state |= STATE_SYSTEM_FOCUSABLE;
4438 if (HasState(ui::AX_STATE_FOCUSED))
4439 ia_state |= STATE_SYSTEM_FOCUSED;
4440 } 4438 }
4441 break; 4439 break;
4442 case ui::AX_ROLE_LIST_ITEM: 4440 case ui::AX_ROLE_LIST_ITEM:
4443 ia_role = ROLE_SYSTEM_LISTITEM; 4441 ia_role = ROLE_SYSTEM_LISTITEM;
4444 ia_state |= STATE_SYSTEM_READONLY; 4442 ia_state |= STATE_SYSTEM_READONLY;
4445 break; 4443 break;
4446 case ui::AX_ROLE_MAIN: 4444 case ui::AX_ROLE_MAIN:
4447 ia_role = ROLE_SYSTEM_GROUPING; 4445 ia_role = ROLE_SYSTEM_GROUPING;
4448 ia2_role = IA2_ROLE_PARAGRAPH; 4446 ia2_role = IA2_ROLE_PARAGRAPH;
4449 break; 4447 break;
(...skipping 28 matching lines...) Expand all
4478 break; 4476 break;
4479 case ui::AX_ROLE_MENU_LIST_POPUP: 4477 case ui::AX_ROLE_MENU_LIST_POPUP:
4480 ia_role = ROLE_SYSTEM_LIST; 4478 ia_role = ROLE_SYSTEM_LIST;
4481 ia2_state &= ~(IA2_STATE_EDITABLE); 4479 ia2_state &= ~(IA2_STATE_EDITABLE);
4482 break; 4480 break;
4483 case ui::AX_ROLE_MENU_LIST_OPTION: 4481 case ui::AX_ROLE_MENU_LIST_OPTION:
4484 ia_role = ROLE_SYSTEM_LISTITEM; 4482 ia_role = ROLE_SYSTEM_LISTITEM;
4485 ia2_state &= ~(IA2_STATE_EDITABLE); 4483 ia2_state &= ~(IA2_STATE_EDITABLE);
4486 if (ia_state & STATE_SYSTEM_SELECTABLE) { 4484 if (ia_state & STATE_SYSTEM_SELECTABLE) {
4487 ia_state |= STATE_SYSTEM_FOCUSABLE; 4485 ia_state |= STATE_SYSTEM_FOCUSABLE;
4488 if (HasState(ui::AX_STATE_FOCUSED))
4489 ia_state |= STATE_SYSTEM_FOCUSED;
4490 } 4486 }
4491 break; 4487 break;
4492 case ui::AX_ROLE_METER: 4488 case ui::AX_ROLE_METER:
4493 role_name = html_tag; 4489 role_name = html_tag;
4494 ia_role = ROLE_SYSTEM_PROGRESSBAR; 4490 ia_role = ROLE_SYSTEM_PROGRESSBAR;
4495 break; 4491 break;
4496 case ui::AX_ROLE_NAVIGATION: 4492 case ui::AX_ROLE_NAVIGATION:
4497 ia_role = ROLE_SYSTEM_GROUPING; 4493 ia_role = ROLE_SYSTEM_GROUPING;
4498 ia2_role = IA2_ROLE_SECTION; 4494 ia2_role = IA2_ROLE_SECTION;
4499 break; 4495 break;
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
4701 ia2_role = ia_role; 4697 ia2_role = ia_role;
4702 4698
4703 win_attributes_->ia_role = ia_role; 4699 win_attributes_->ia_role = ia_role;
4704 win_attributes_->ia_state = ia_state; 4700 win_attributes_->ia_state = ia_state;
4705 win_attributes_->role_name = role_name; 4701 win_attributes_->role_name = role_name;
4706 win_attributes_->ia2_role = ia2_role; 4702 win_attributes_->ia2_role = ia2_role;
4707 win_attributes_->ia2_state = ia2_state; 4703 win_attributes_->ia2_state = ia2_state;
4708 } 4704 }
4709 4705
4710 } // namespace content 4706 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698