Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 <atlbase.h> | 5 #include <atlbase.h> |
| 6 #include <atlcom.h> | 6 #include <atlcom.h> |
| 7 #include <limits.h> | 7 #include <limits.h> |
| 8 #include <oleacc.h> | 8 #include <oleacc.h> |
| 9 #include <stdint.h> | 9 #include <stdint.h> |
| 10 | 10 |
| (...skipping 723 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 734 // Deprecated. | 734 // Deprecated. |
| 735 return E_NOTIMPL; | 735 return E_NOTIMPL; |
| 736 } | 736 } |
| 737 | 737 |
| 738 // | 738 // |
| 739 // IAccessible2 implementation. | 739 // IAccessible2 implementation. |
| 740 // | 740 // |
| 741 | 741 |
| 742 STDMETHODIMP AXPlatformNodeWin::role(LONG* role) { | 742 STDMETHODIMP AXPlatformNodeWin::role(LONG* role) { |
| 743 COM_OBJECT_VALIDATE_1_ARG(role); | 743 COM_OBJECT_VALIDATE_1_ARG(role); |
| 744 *role = MSAARole(); | 744 |
| 745 *role = MSAA_IA2Role(); | |
| 746 // If we didn't explicitly set the IAccessible2 role, make it the same | |
| 747 // as the MSAA role. | |
| 748 if (!*role) | |
| 749 *role = MSAARole(); | |
| 745 return S_OK; | 750 return S_OK; |
| 746 } | 751 } |
| 747 | 752 |
| 748 STDMETHODIMP AXPlatformNodeWin::get_states(AccessibleStates* states) { | 753 STDMETHODIMP AXPlatformNodeWin::get_states(AccessibleStates* states) { |
| 749 COM_OBJECT_VALIDATE_1_ARG(states); | 754 COM_OBJECT_VALIDATE_1_ARG(states); |
| 750 *states = MSAA_IA2State(); | 755 *states = MSAA_IA2State(); |
| 751 return S_OK; | 756 return S_OK; |
| 752 } | 757 } |
| 753 | 758 |
| 754 STDMETHODIMP AXPlatformNodeWin::get_uniqueID(LONG* unique_id) { | 759 STDMETHODIMP AXPlatformNodeWin::get_uniqueID(LONG* unique_id) { |
| (...skipping 889 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1644 ia2_state |= IA2_STATE_SINGLE_LINE; | 1649 ia2_state |= IA2_STATE_SINGLE_LINE; |
| 1645 } | 1650 } |
| 1646 ia2_state |= IA2_STATE_SELECTABLE_TEXT; | 1651 ia2_state |= IA2_STATE_SELECTABLE_TEXT; |
| 1647 break; | 1652 break; |
| 1648 default: | 1653 default: |
| 1649 break; | 1654 break; |
| 1650 } | 1655 } |
| 1651 return ia2_state; | 1656 return ia2_state; |
| 1652 } | 1657 } |
| 1653 | 1658 |
| 1659 int32_t AXPlatformNodeWin::MSAA_IA2Role() { | |
|
dmazzoni
2017/07/06 22:58:05
Same, I'd drop MSAA_
I'd also add a comment here
| |
| 1660 // If this is a web area for a presentational iframe, give it a role of | |
| 1661 // something other than DOCUMENT so that the fact that it's a separate doc | |
| 1662 // is not exposed to AT. | |
| 1663 if (IsWebAreaForPresentationalIframe()) { | |
| 1664 return ROLE_SYSTEM_GROUPING; | |
| 1665 } | |
| 1666 | |
| 1667 int32_t ia2_role = 0; | |
| 1668 | |
| 1669 switch (GetData().role) { | |
| 1670 case ui::AX_ROLE_BANNER: | |
| 1671 ia2_role = IA2_ROLE_HEADER; | |
| 1672 break; | |
| 1673 case ui::AX_ROLE_BLOCKQUOTE: | |
| 1674 ia2_role = IA2_ROLE_SECTION; | |
| 1675 break; | |
| 1676 case ui::AX_ROLE_CANVAS: | |
| 1677 if (GetBoolAttribute(ui::AX_ATTR_CANVAS_HAS_FALLBACK)) { | |
| 1678 ia2_role = IA2_ROLE_CANVAS; | |
| 1679 } | |
| 1680 break; | |
| 1681 case ui::AX_ROLE_CAPTION: | |
| 1682 ia2_role = IA2_ROLE_CAPTION; | |
| 1683 break; | |
| 1684 case ui::AX_ROLE_COLOR_WELL: | |
| 1685 ia2_role = IA2_ROLE_COLOR_CHOOSER; | |
| 1686 break; | |
| 1687 case ui::AX_ROLE_COMPLEMENTARY: | |
| 1688 ia2_role = IA2_ROLE_NOTE; | |
| 1689 break; | |
| 1690 case ui::AX_ROLE_CONTENT_INFO: | |
| 1691 ia2_role = IA2_ROLE_PARAGRAPH; | |
| 1692 break; | |
| 1693 case ui::AX_ROLE_DATE: | |
| 1694 case ui::AX_ROLE_DATE_TIME: | |
| 1695 ia2_role = IA2_ROLE_DATE_EDITOR; | |
| 1696 break; | |
| 1697 case ui::AX_ROLE_DEFINITION: | |
| 1698 ia2_role = IA2_ROLE_PARAGRAPH; | |
| 1699 break; | |
| 1700 case ui::AX_ROLE_DESCRIPTION_LIST_DETAIL: | |
| 1701 ia2_role = IA2_ROLE_PARAGRAPH; | |
| 1702 break; | |
| 1703 case ui::AX_ROLE_EMBEDDED_OBJECT: | |
| 1704 if (!delegate_->GetChildCount()) { | |
| 1705 ia2_role = IA2_ROLE_EMBEDDED_OBJECT; | |
| 1706 } | |
| 1707 break; | |
| 1708 case ui::AX_ROLE_FIGCAPTION: | |
| 1709 ia2_role = IA2_ROLE_CAPTION; | |
| 1710 break; | |
| 1711 case ui::AX_ROLE_FORM: | |
| 1712 ia2_role = IA2_ROLE_FORM; | |
| 1713 break; | |
| 1714 case ui::AX_ROLE_FOOTER: | |
| 1715 ia2_role = IA2_ROLE_FOOTER; | |
| 1716 break; | |
| 1717 case ui::AX_ROLE_GENERIC_CONTAINER: | |
| 1718 ia2_role = IA2_ROLE_SECTION; | |
| 1719 break; | |
| 1720 case ui::AX_ROLE_HEADING: | |
| 1721 ia2_role = IA2_ROLE_HEADING; | |
| 1722 break; | |
| 1723 case ui::AX_ROLE_IFRAME: | |
| 1724 ia2_role = IA2_ROLE_INTERNAL_FRAME; | |
| 1725 break; | |
| 1726 case ui::AX_ROLE_IMAGE_MAP: | |
| 1727 ia2_role = IA2_ROLE_IMAGE_MAP; | |
| 1728 break; | |
| 1729 case ui::AX_ROLE_LABEL_TEXT: | |
| 1730 case ui::AX_ROLE_LEGEND: | |
| 1731 ia2_role = IA2_ROLE_LABEL; | |
| 1732 break; | |
| 1733 case ui::AX_ROLE_MAIN: | |
| 1734 ia2_role = IA2_ROLE_PARAGRAPH; | |
| 1735 break; | |
| 1736 case ui::AX_ROLE_MARK: | |
| 1737 ia2_role = IA2_ROLE_TEXT_FRAME; | |
| 1738 break; | |
| 1739 case ui::AX_ROLE_MENU_ITEM_CHECK_BOX: | |
| 1740 ia2_role = IA2_ROLE_CHECK_MENU_ITEM; | |
| 1741 break; | |
| 1742 case ui::AX_ROLE_MENU_ITEM_RADIO: | |
| 1743 ia2_role = IA2_ROLE_RADIO_MENU_ITEM; | |
| 1744 break; | |
| 1745 case ui::AX_ROLE_NAVIGATION: | |
| 1746 ia2_role = IA2_ROLE_SECTION; | |
| 1747 break; | |
| 1748 case ui::AX_ROLE_NOTE: | |
| 1749 ia2_role = IA2_ROLE_NOTE; | |
| 1750 break; | |
| 1751 case ui::AX_ROLE_PARAGRAPH: | |
| 1752 ia2_role = IA2_ROLE_PARAGRAPH; | |
| 1753 break; | |
| 1754 case ui::AX_ROLE_PRE: | |
| 1755 ia2_role = IA2_ROLE_PARAGRAPH; | |
| 1756 break; | |
| 1757 case ui::AX_ROLE_REGION: { | |
| 1758 base::string16 html_tag = GetString16Attribute(ui::AX_ATTR_HTML_TAG); | |
| 1759 | |
| 1760 if (html_tag == L"section") { | |
| 1761 ia2_role = IA2_ROLE_SECTION; | |
| 1762 } | |
| 1763 } break; | |
| 1764 case ui::AX_ROLE_RUBY: | |
| 1765 ia2_role = IA2_ROLE_TEXT_FRAME; | |
| 1766 break; | |
| 1767 case ui::AX_ROLE_RULER: | |
| 1768 ia2_role = IA2_ROLE_RULER; | |
| 1769 break; | |
| 1770 case ui::AX_ROLE_SCROLL_AREA: | |
| 1771 ia2_role = IA2_ROLE_SCROLL_PANE; | |
| 1772 break; | |
| 1773 case ui::AX_ROLE_SEARCH: | |
| 1774 ia2_role = IA2_ROLE_SECTION; | |
| 1775 break; | |
| 1776 case ui::AX_ROLE_SWITCH: | |
| 1777 ia2_role = IA2_ROLE_TOGGLE_BUTTON; | |
| 1778 break; | |
| 1779 case ui::AX_ROLE_TABLE_HEADER_CONTAINER: | |
| 1780 ia2_role = IA2_ROLE_SECTION; | |
| 1781 break; | |
| 1782 case ui::AX_ROLE_TOGGLE_BUTTON: | |
| 1783 ia2_role = IA2_ROLE_TOGGLE_BUTTON; | |
| 1784 break; | |
| 1785 case ui::AX_ROLE_ABBR: | |
| 1786 case ui::AX_ROLE_TIME: | |
| 1787 ia2_role = IA2_ROLE_TEXT_FRAME; | |
| 1788 break; | |
| 1789 default: | |
| 1790 break; | |
| 1791 } | |
| 1792 return ia2_role; | |
| 1793 } | |
| 1794 | |
| 1654 bool AXPlatformNodeWin::ShouldNodeHaveReadonlyState( | 1795 bool AXPlatformNodeWin::ShouldNodeHaveReadonlyState( |
| 1655 const AXNodeData& data) const { | 1796 const AXNodeData& data) const { |
| 1656 if (data.GetBoolAttribute(ui::AX_ATTR_ARIA_READONLY)) | 1797 if (data.GetBoolAttribute(ui::AX_ATTR_ARIA_READONLY)) |
| 1657 return true; | 1798 return true; |
| 1658 | 1799 |
| 1659 if (!data.HasState(ui::AX_STATE_READ_ONLY)) | 1800 if (!data.HasState(ui::AX_STATE_READ_ONLY)) |
| 1660 return false; | 1801 return false; |
| 1661 | 1802 |
| 1662 switch (data.role) { | 1803 switch (data.role) { |
| 1663 case ui::AX_ROLE_ARTICLE: | 1804 case ui::AX_ROLE_ARTICLE: |
| (...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1987 } | 2128 } |
| 1988 | 2129 |
| 1989 if (!container) { | 2130 if (!container) { |
| 1990 return false; | 2131 return false; |
| 1991 } | 2132 } |
| 1992 | 2133 |
| 1993 return container->GetData().role == ui::AX_ROLE_TREE_GRID; | 2134 return container->GetData().role == ui::AX_ROLE_TREE_GRID; |
| 1994 } | 2135 } |
| 1995 | 2136 |
| 1996 } // namespace ui | 2137 } // namespace ui |
| OLD | NEW |