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

Side by Side Diff: chrome/views/accessibility/view_accessibility.cc

Issue 93085: Removes the use of Windows-specific types for accessibility roles and states ... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 8 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/views/accessibility/view_accessibility.h ('k') | chrome/views/controls/button/button.h » ('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/views/accessibility/view_accessibility.h" 5 #include "chrome/views/accessibility/view_accessibility.h"
6 6
7 #include "chrome/views/accessibility/view_accessibility_wrapper.h" 7 #include "chrome/views/accessibility/view_accessibility_wrapper.h"
8 #include "chrome/views/widget/widget.h" 8 #include "chrome/views/widget/widget.h"
9 9
10 HRESULT ViewAccessibility::Initialize(views::View* view) { 10 HRESULT ViewAccessibility::Initialize(views::View* view) {
(...skipping 480 matching lines...) Expand 10 before | Expand all | Expand 10 after
491 } else { 491 } else {
492 return E_NOINTERFACE; 492 return E_NOINTERFACE;
493 } 493 }
494 } 494 }
495 495
496 STDMETHODIMP ViewAccessibility::get_accRole(VARIANT var_id, VARIANT* role) { 496 STDMETHODIMP ViewAccessibility::get_accRole(VARIANT var_id, VARIANT* role) {
497 if (var_id.vt != VT_I4 || !role) { 497 if (var_id.vt != VT_I4 || !role) {
498 return E_INVALIDARG; 498 return E_INVALIDARG;
499 } 499 }
500 500
501 AccessibilityTypes::Role acc_role;
502
501 if (var_id.lVal == CHILDID_SELF) { 503 if (var_id.lVal == CHILDID_SELF) {
502 // Retrieve parent role. 504 // Retrieve parent role.
503 if (!view_->GetAccessibleRole(role)) { 505 if (!view_->GetAccessibleRole(&acc_role)) {
504 return E_FAIL; 506 return E_FAIL;
505 } 507 }
506 } else { 508 } else {
507 if (!IsValidChild((var_id.lVal - 1), view_)) { 509 if (!IsValidChild((var_id.lVal - 1), view_)) {
508 return E_INVALIDARG; 510 return E_INVALIDARG;
509 } 511 }
510 // Retrieve child role. 512 // Retrieve child role.
511 if (!view_->GetChildViewAt(var_id.lVal - 1)->GetAccessibleRole(role)) { 513 if (!view_->GetChildViewAt(var_id.lVal - 1)->GetAccessibleRole(&acc_role)) {
514 role->vt = VT_EMPTY;
512 return E_FAIL; 515 return E_FAIL;
513 } 516 }
514 } 517 }
515 518
516 // Make sure that role is not empty, and has the proper type. 519 role->vt = VT_I4;
517 if (role->vt == VT_EMPTY) 520 role->lVal = MSAARole(acc_role);
518 return E_FAIL;
519
520 return S_OK; 521 return S_OK;
521 } 522 }
522 523
523 STDMETHODIMP ViewAccessibility::get_accState(VARIANT var_id, VARIANT* state) { 524 STDMETHODIMP ViewAccessibility::get_accState(VARIANT var_id, VARIANT* state) {
524 if (var_id.vt != VT_I4 || !state) { 525 if (var_id.vt != VT_I4 || !state) {
525 return E_INVALIDARG; 526 return E_INVALIDARG;
526 } 527 }
527 528
528 state->vt = VT_I4; 529 state->vt = VT_I4;
529 530
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
570 return false; 571 return false;
571 } 572 }
572 } else { 573 } else {
573 if ((start_id - 1) <= lower_bound) { 574 if ((start_id - 1) <= lower_bound) {
574 return false; 575 return false;
575 } 576 }
576 } 577 }
577 return true; 578 return true;
578 } 579 }
579 580
580 void ViewAccessibility::SetState(VARIANT* state, views::View* view) { 581 void ViewAccessibility::SetState(VARIANT* msaa_state, views::View* view) {
581 // Default state; all views can have accessibility focus. 582 // Default state; all views can have accessibility focus.
582 state->lVal |= STATE_SYSTEM_FOCUSABLE; 583 msaa_state->lVal |= STATE_SYSTEM_FOCUSABLE;
583 584
584 if (!view) 585 if (!view)
585 return; 586 return;
586 587
587 if (!view->IsEnabled()) { 588 if (!view->IsEnabled()) {
588 state->lVal |= STATE_SYSTEM_UNAVAILABLE; 589 msaa_state->lVal |= STATE_SYSTEM_UNAVAILABLE;
589 } 590 }
590 if (!view->IsVisible()) { 591 if (!view->IsVisible()) {
591 state->lVal |= STATE_SYSTEM_INVISIBLE; 592 msaa_state->lVal |= STATE_SYSTEM_INVISIBLE;
592 } 593 }
593 if (view->IsHotTracked()) { 594 if (view->IsHotTracked()) {
594 state->lVal |= STATE_SYSTEM_HOTTRACKED; 595 msaa_state->lVal |= STATE_SYSTEM_HOTTRACKED;
595 } 596 }
596 if (view->IsPushed()) { 597 if (view->IsPushed()) {
597 state->lVal |= STATE_SYSTEM_PRESSED; 598 msaa_state->lVal |= STATE_SYSTEM_PRESSED;
598 } 599 }
599 // Check both for actual View focus, as well as accessibility focus. 600 // Check both for actual View focus, as well as accessibility focus.
600 views::View* parent = view->GetParent(); 601 views::View* parent = view->GetParent();
601 602
602 if (view->HasFocus() || 603 if (view->HasFocus() ||
603 (parent && parent->GetAccFocusedChildView() == view)) { 604 (parent && parent->GetAccFocusedChildView() == view)) {
604 state->lVal |= STATE_SYSTEM_FOCUSED; 605 msaa_state->lVal |= STATE_SYSTEM_FOCUSED;
605 } 606 }
606 607
607 // Add on any view-specific states. 608 // Add on any view-specific states.
608 view->GetAccessibleState(state); 609 AccessibilityTypes::State state;
610 view->GetAccessibleState(&state);
611
612 msaa_state->lVal |= MSAAState(state);
613 }
614
615 long ViewAccessibility::MSAARole(AccessibilityTypes::Role role) {
616 switch (role) {
617 case AccessibilityTypes::ROLE_APPLICATION :
618 return ROLE_SYSTEM_APPLICATION;
619 case AccessibilityTypes::ROLE_BUTTONDROPDOWN :
620 return ROLE_SYSTEM_BUTTONDROPDOWN;
621 case AccessibilityTypes::ROLE_GROUPING :
622 return ROLE_SYSTEM_GROUPING;
623 case AccessibilityTypes::ROLE_PAGETAB :
624 return ROLE_SYSTEM_PAGETAB;
625 case AccessibilityTypes::ROLE_PUSHBUTTON :
626 return ROLE_SYSTEM_PUSHBUTTON;
627 case AccessibilityTypes::ROLE_TEXT :
628 return ROLE_SYSTEM_TEXT;
629 case AccessibilityTypes::ROLE_TOOLBAR :
630 return ROLE_SYSTEM_TOOLBAR;
631 case AccessibilityTypes::ROLE_CLIENT :
632 default:
633 // This is the default role for MSAA.
634 return ROLE_SYSTEM_CLIENT;
635 }
636 }
637
638 long ViewAccessibility::MSAAState(AccessibilityTypes::State state) {
639 switch (state) {
640 case AccessibilityTypes::STATE_HASPOPUP :
641 return STATE_SYSTEM_HASPOPUP;
642 case AccessibilityTypes::STATE_READONLY :
643 return STATE_SYSTEM_READONLY;
644 default :
645 // No default state in MSAA.
646 return 0;
647 }
609 } 648 }
610 649
611 // IAccessible functions not supported. 650 // IAccessible functions not supported.
612 651
613 HRESULT ViewAccessibility::accDoDefaultAction(VARIANT var_id) { 652 HRESULT ViewAccessibility::accDoDefaultAction(VARIANT var_id) {
614 return E_NOTIMPL; 653 return E_NOTIMPL;
615 } 654 }
616 655
617 STDMETHODIMP ViewAccessibility::get_accValue(VARIANT var_id, BSTR* value) { 656 STDMETHODIMP ViewAccessibility::get_accValue(VARIANT var_id, BSTR* value) {
618 if (value) 657 if (value)
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
650 689
651 STDMETHODIMP ViewAccessibility::put_accName(VARIANT var_id, BSTR put_name) { 690 STDMETHODIMP ViewAccessibility::put_accName(VARIANT var_id, BSTR put_name) {
652 // Deprecated. 691 // Deprecated.
653 return E_NOTIMPL; 692 return E_NOTIMPL;
654 } 693 }
655 694
656 STDMETHODIMP ViewAccessibility::put_accValue(VARIANT var_id, BSTR put_val) { 695 STDMETHODIMP ViewAccessibility::put_accValue(VARIANT var_id, BSTR put_val) {
657 // Deprecated. 696 // Deprecated.
658 return E_NOTIMPL; 697 return E_NOTIMPL;
659 } 698 }
OLDNEW
« no previous file with comments | « chrome/views/accessibility/view_accessibility.h ('k') | chrome/views/controls/button/button.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698