OLD | NEW |
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 "base/strings/string_number_conversions.h" | 10 #include "base/strings/string_number_conversions.h" |
(...skipping 3421 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3432 ia_role_ = ROLE_SYSTEM_COLUMN; | 3432 ia_role_ = ROLE_SYSTEM_COLUMN; |
3433 ia_state_ |= STATE_SYSTEM_READONLY; | 3433 ia_state_ |= STATE_SYSTEM_READONLY; |
3434 break; | 3434 break; |
3435 case ui::AX_ROLE_COLUMN_HEADER: | 3435 case ui::AX_ROLE_COLUMN_HEADER: |
3436 ia_role_ = ROLE_SYSTEM_COLUMNHEADER; | 3436 ia_role_ = ROLE_SYSTEM_COLUMNHEADER; |
3437 ia_state_ |= STATE_SYSTEM_READONLY; | 3437 ia_state_ |= STATE_SYSTEM_READONLY; |
3438 break; | 3438 break; |
3439 case ui::AX_ROLE_COMBO_BOX: | 3439 case ui::AX_ROLE_COMBO_BOX: |
3440 ia_role_ = ROLE_SYSTEM_COMBOBOX; | 3440 ia_role_ = ROLE_SYSTEM_COMBOBOX; |
3441 break; | 3441 break; |
| 3442 case ui::AX_ROLE_COMPLEMENTARY: |
| 3443 ia_role_ = ROLE_SYSTEM_GROUPING; |
| 3444 ia2_role_ = IA2_ROLE_NOTE; |
| 3445 break; |
| 3446 case ui::AX_ROLE_CONTENT_INFO: |
| 3447 ia_role_ = ROLE_SYSTEM_TEXT; |
| 3448 ia2_role_ = IA2_ROLE_PARAGRAPH; |
| 3449 break; |
3442 case ui::AX_ROLE_DIV: | 3450 case ui::AX_ROLE_DIV: |
3443 role_name_ = L"div"; | 3451 role_name_ = L"div"; |
3444 ia2_role_ = IA2_ROLE_SECTION; | 3452 ia2_role_ = IA2_ROLE_SECTION; |
3445 break; | 3453 break; |
3446 case ui::AX_ROLE_DEFINITION: | 3454 case ui::AX_ROLE_DEFINITION: |
3447 role_name_ = html_tag; | 3455 role_name_ = html_tag; |
3448 ia2_role_ = IA2_ROLE_PARAGRAPH; | 3456 ia2_role_ = IA2_ROLE_PARAGRAPH; |
3449 ia_state_ |= STATE_SYSTEM_READONLY; | 3457 ia_state_ |= STATE_SYSTEM_READONLY; |
3450 break; | 3458 break; |
3451 case ui::AX_ROLE_DESCRIPTION_LIST_DETAIL: | 3459 case ui::AX_ROLE_DESCRIPTION_LIST_DETAIL: |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3549 break; | 3557 break; |
3550 case ui::AX_ROLE_IMAGE_MAP_LINK: | 3558 case ui::AX_ROLE_IMAGE_MAP_LINK: |
3551 ia_role_ = ROLE_SYSTEM_LINK; | 3559 ia_role_ = ROLE_SYSTEM_LINK; |
3552 ia_state_ |= STATE_SYSTEM_LINKED; | 3560 ia_state_ |= STATE_SYSTEM_LINKED; |
3553 ia_state_ |= STATE_SYSTEM_READONLY; | 3561 ia_state_ |= STATE_SYSTEM_READONLY; |
3554 break; | 3562 break; |
3555 case ui::AX_ROLE_LABEL_TEXT: | 3563 case ui::AX_ROLE_LABEL_TEXT: |
3556 ia_role_ = ROLE_SYSTEM_TEXT; | 3564 ia_role_ = ROLE_SYSTEM_TEXT; |
3557 ia2_role_ = IA2_ROLE_LABEL; | 3565 ia2_role_ = IA2_ROLE_LABEL; |
3558 break; | 3566 break; |
3559 case ui::AX_ROLE_MAIN: | |
3560 ia_role_ = ROLE_SYSTEM_GROUPING; | |
3561 break; | |
3562 case ui::AX_ROLE_BANNER: | 3567 case ui::AX_ROLE_BANNER: |
3563 case ui::AX_ROLE_COMPLEMENTARY: | |
3564 case ui::AX_ROLE_CONTENT_INFO: | |
3565 case ui::AX_ROLE_NAVIGATION: | |
3566 case ui::AX_ROLE_SEARCH: | 3568 case ui::AX_ROLE_SEARCH: |
3567 ia_role_ = ROLE_SYSTEM_GROUPING; | 3569 ia_role_ = ROLE_SYSTEM_GROUPING; |
3568 ia2_role_ = IA2_ROLE_SECTION; | 3570 ia2_role_ = IA2_ROLE_SECTION; |
3569 ia_state_ |= STATE_SYSTEM_READONLY; | 3571 ia_state_ |= STATE_SYSTEM_READONLY; |
3570 break; | 3572 break; |
3571 case ui::AX_ROLE_LINK: | 3573 case ui::AX_ROLE_LINK: |
3572 ia_role_ = ROLE_SYSTEM_LINK; | 3574 ia_role_ = ROLE_SYSTEM_LINK; |
3573 ia_state_ |= STATE_SYSTEM_LINKED; | 3575 ia_state_ |= STATE_SYSTEM_LINKED; |
3574 break; | 3576 break; |
3575 case ui::AX_ROLE_LIST: | 3577 case ui::AX_ROLE_LIST: |
3576 ia_role_ = ROLE_SYSTEM_LIST; | 3578 ia_role_ = ROLE_SYSTEM_LIST; |
3577 ia_state_ |= STATE_SYSTEM_READONLY; | 3579 ia_state_ |= STATE_SYSTEM_READONLY; |
3578 break; | 3580 break; |
3579 case ui::AX_ROLE_LIST_BOX: | 3581 case ui::AX_ROLE_LIST_BOX: |
3580 ia_role_ = ROLE_SYSTEM_LIST; | 3582 ia_role_ = ROLE_SYSTEM_LIST; |
3581 break; | 3583 break; |
3582 case ui::AX_ROLE_LIST_BOX_OPTION: | 3584 case ui::AX_ROLE_LIST_BOX_OPTION: |
3583 ia_role_ = ROLE_SYSTEM_LISTITEM; | 3585 ia_role_ = ROLE_SYSTEM_LISTITEM; |
3584 if (ia_state_ & STATE_SYSTEM_SELECTABLE) { | 3586 if (ia_state_ & STATE_SYSTEM_SELECTABLE) { |
3585 ia_state_ |= STATE_SYSTEM_FOCUSABLE; | 3587 ia_state_ |= STATE_SYSTEM_FOCUSABLE; |
3586 if (HasState(ui::AX_STATE_FOCUSED)) | 3588 if (HasState(ui::AX_STATE_FOCUSED)) |
3587 ia_state_ |= STATE_SYSTEM_FOCUSED; | 3589 ia_state_ |= STATE_SYSTEM_FOCUSED; |
3588 } | 3590 } |
3589 break; | 3591 break; |
3590 case ui::AX_ROLE_LIST_ITEM: | 3592 case ui::AX_ROLE_LIST_ITEM: |
3591 ia_role_ = ROLE_SYSTEM_LISTITEM; | 3593 ia_role_ = ROLE_SYSTEM_LISTITEM; |
3592 ia_state_ |= STATE_SYSTEM_READONLY; | 3594 ia_state_ |= STATE_SYSTEM_READONLY; |
3593 break; | 3595 break; |
| 3596 case ui::AX_ROLE_MAIN: |
| 3597 ia_role_ = ROLE_SYSTEM_GROUPING; |
| 3598 ia2_role_ = IA2_ROLE_PARAGRAPH; |
| 3599 break; |
3594 case ui::AX_ROLE_MATH_ELEMENT: | 3600 case ui::AX_ROLE_MATH_ELEMENT: |
3595 ia_role_ = ROLE_SYSTEM_EQUATION; | 3601 ia_role_ = ROLE_SYSTEM_EQUATION; |
3596 ia_state_ |= STATE_SYSTEM_READONLY; | 3602 ia_state_ |= STATE_SYSTEM_READONLY; |
3597 break; | 3603 break; |
3598 case ui::AX_ROLE_MENU: | 3604 case ui::AX_ROLE_MENU: |
3599 case ui::AX_ROLE_MENU_BUTTON: | 3605 case ui::AX_ROLE_MENU_BUTTON: |
3600 ia_role_ = ROLE_SYSTEM_MENUPOPUP; | 3606 ia_role_ = ROLE_SYSTEM_MENUPOPUP; |
3601 break; | 3607 break; |
3602 case ui::AX_ROLE_MENU_BAR: | 3608 case ui::AX_ROLE_MENU_BAR: |
3603 ia_role_ = ROLE_SYSTEM_MENUBAR; | 3609 ia_role_ = ROLE_SYSTEM_MENUBAR; |
3604 break; | 3610 break; |
3605 case ui::AX_ROLE_MENU_ITEM: | 3611 case ui::AX_ROLE_MENU_ITEM: |
3606 ia_role_ = ROLE_SYSTEM_MENUITEM; | 3612 ia_role_ = ROLE_SYSTEM_MENUITEM; |
3607 break; | 3613 break; |
3608 case ui::AX_ROLE_MENU_LIST_POPUP: | 3614 case ui::AX_ROLE_MENU_LIST_POPUP: |
3609 ia_role_ = ROLE_SYSTEM_CLIENT; | 3615 ia_role_ = ROLE_SYSTEM_CLIENT; |
3610 break; | 3616 break; |
3611 case ui::AX_ROLE_MENU_LIST_OPTION: | 3617 case ui::AX_ROLE_MENU_LIST_OPTION: |
3612 ia_role_ = ROLE_SYSTEM_LISTITEM; | 3618 ia_role_ = ROLE_SYSTEM_LISTITEM; |
3613 if (ia_state_ & STATE_SYSTEM_SELECTABLE) { | 3619 if (ia_state_ & STATE_SYSTEM_SELECTABLE) { |
3614 ia_state_ |= STATE_SYSTEM_FOCUSABLE; | 3620 ia_state_ |= STATE_SYSTEM_FOCUSABLE; |
3615 if (HasState(ui::AX_STATE_FOCUSED)) | 3621 if (HasState(ui::AX_STATE_FOCUSED)) |
3616 ia_state_ |= STATE_SYSTEM_FOCUSED; | 3622 ia_state_ |= STATE_SYSTEM_FOCUSED; |
3617 } | 3623 } |
3618 break; | 3624 break; |
| 3625 case ui::AX_ROLE_NAVIGATION: |
| 3626 ia_role_ = ROLE_SYSTEM_GROUPING; |
| 3627 ia2_role_ = IA2_ROLE_SECTION; |
| 3628 break; |
3619 case ui::AX_ROLE_NOTE: | 3629 case ui::AX_ROLE_NOTE: |
3620 ia_role_ = ROLE_SYSTEM_GROUPING; | 3630 ia_role_ = ROLE_SYSTEM_GROUPING; |
3621 ia2_role_ = IA2_ROLE_NOTE; | 3631 ia2_role_ = IA2_ROLE_NOTE; |
3622 ia_state_ |= STATE_SYSTEM_READONLY; | 3632 ia_state_ |= STATE_SYSTEM_READONLY; |
3623 break; | 3633 break; |
3624 case ui::AX_ROLE_OUTLINE: | 3634 case ui::AX_ROLE_OUTLINE: |
3625 ia_role_ = ROLE_SYSTEM_OUTLINE; | 3635 ia_role_ = ROLE_SYSTEM_OUTLINE; |
3626 ia_state_ |= STATE_SYSTEM_READONLY; | 3636 ia_state_ |= STATE_SYSTEM_READONLY; |
3627 break; | 3637 break; |
3628 case ui::AX_ROLE_PARAGRAPH: | 3638 case ui::AX_ROLE_PARAGRAPH: |
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3812 // The role should always be set. | 3822 // The role should always be set. |
3813 DCHECK(!role_name_.empty() || ia_role_); | 3823 DCHECK(!role_name_.empty() || ia_role_); |
3814 | 3824 |
3815 // If we didn't explicitly set the IAccessible2 role, make it the same | 3825 // If we didn't explicitly set the IAccessible2 role, make it the same |
3816 // as the MSAA role. | 3826 // as the MSAA role. |
3817 if (!ia2_role_) | 3827 if (!ia2_role_) |
3818 ia2_role_ = ia_role_; | 3828 ia2_role_ = ia_role_; |
3819 } | 3829 } |
3820 | 3830 |
3821 } // namespace content | 3831 } // namespace content |
OLD | NEW |