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 1925 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1936 } | 1936 } |
1937 | 1937 |
1938 STDMETHODIMP BrowserAccessibilityWin::get_caretOffset(LONG* offset) { | 1938 STDMETHODIMP BrowserAccessibilityWin::get_caretOffset(LONG* offset) { |
1939 if (!instance_active()) | 1939 if (!instance_active()) |
1940 return E_FAIL; | 1940 return E_FAIL; |
1941 | 1941 |
1942 if (!offset) | 1942 if (!offset) |
1943 return E_INVALIDARG; | 1943 return E_INVALIDARG; |
1944 | 1944 |
1945 *offset = 0; | 1945 *offset = 0; |
1946 if (GetRole() == ui::AX_ROLE_TEXT_FIELD || | 1946 if (GetRole() == ui::AX_ROLE_TEXT_FIELD) { |
1947 GetRole() == ui::AX_ROLE_TEXT_AREA) { | |
1948 int sel_start = 0; | 1947 int sel_start = 0; |
1949 if (GetIntAttribute(ui::AX_ATTR_TEXT_SEL_START, | 1948 if (GetIntAttribute(ui::AX_ATTR_TEXT_SEL_START, |
1950 &sel_start)) | 1949 &sel_start)) |
1951 *offset = sel_start; | 1950 *offset = sel_start; |
1952 } | 1951 } |
1953 | 1952 |
1954 return S_OK; | 1953 return S_OK; |
1955 } | 1954 } |
1956 | 1955 |
1957 STDMETHODIMP BrowserAccessibilityWin::get_characterExtents( | 1956 STDMETHODIMP BrowserAccessibilityWin::get_characterExtents( |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1992 } | 1991 } |
1993 | 1992 |
1994 STDMETHODIMP BrowserAccessibilityWin::get_nSelections(LONG* n_selections) { | 1993 STDMETHODIMP BrowserAccessibilityWin::get_nSelections(LONG* n_selections) { |
1995 if (!instance_active()) | 1994 if (!instance_active()) |
1996 return E_FAIL; | 1995 return E_FAIL; |
1997 | 1996 |
1998 if (!n_selections) | 1997 if (!n_selections) |
1999 return E_INVALIDARG; | 1998 return E_INVALIDARG; |
2000 | 1999 |
2001 *n_selections = 0; | 2000 *n_selections = 0; |
2002 if (GetRole() == ui::AX_ROLE_TEXT_FIELD || | 2001 if (GetRole() == ui::AX_ROLE_TEXT_FIELD) { |
2003 GetRole() == ui::AX_ROLE_TEXT_AREA) { | |
2004 int sel_start = 0; | 2002 int sel_start = 0; |
2005 int sel_end = 0; | 2003 int sel_end = 0; |
2006 if (GetIntAttribute(ui::AX_ATTR_TEXT_SEL_START, | 2004 if (GetIntAttribute(ui::AX_ATTR_TEXT_SEL_START, |
2007 &sel_start) && | 2005 &sel_start) && |
2008 GetIntAttribute(ui::AX_ATTR_TEXT_SEL_END, &sel_end) && | 2006 GetIntAttribute(ui::AX_ATTR_TEXT_SEL_END, &sel_end) && |
2009 sel_start != sel_end) | 2007 sel_start != sel_end) |
2010 *n_selections = 1; | 2008 *n_selections = 1; |
2011 } | 2009 } |
2012 | 2010 |
2013 return S_OK; | 2011 return S_OK; |
2014 } | 2012 } |
2015 | 2013 |
2016 STDMETHODIMP BrowserAccessibilityWin::get_selection(LONG selection_index, | 2014 STDMETHODIMP BrowserAccessibilityWin::get_selection(LONG selection_index, |
2017 LONG* start_offset, | 2015 LONG* start_offset, |
2018 LONG* end_offset) { | 2016 LONG* end_offset) { |
2019 if (!instance_active()) | 2017 if (!instance_active()) |
2020 return E_FAIL; | 2018 return E_FAIL; |
2021 | 2019 |
2022 if (!start_offset || !end_offset || selection_index != 0) | 2020 if (!start_offset || !end_offset || selection_index != 0) |
2023 return E_INVALIDARG; | 2021 return E_INVALIDARG; |
2024 | 2022 |
2025 *start_offset = 0; | 2023 *start_offset = 0; |
2026 *end_offset = 0; | 2024 *end_offset = 0; |
2027 if (GetRole() == ui::AX_ROLE_TEXT_FIELD || | 2025 if (GetRole() == ui::AX_ROLE_TEXT_FIELD) { |
2028 GetRole() == ui::AX_ROLE_TEXT_AREA) { | |
2029 int sel_start = 0; | 2026 int sel_start = 0; |
2030 int sel_end = 0; | 2027 int sel_end = 0; |
2031 if (GetIntAttribute( | 2028 if (GetIntAttribute( |
2032 ui::AX_ATTR_TEXT_SEL_START, &sel_start) && | 2029 ui::AX_ATTR_TEXT_SEL_START, &sel_start) && |
2033 GetIntAttribute(ui::AX_ATTR_TEXT_SEL_END, &sel_end)) { | 2030 GetIntAttribute(ui::AX_ATTR_TEXT_SEL_END, &sel_end)) { |
2034 *start_offset = sel_start; | 2031 *start_offset = sel_start; |
2035 *end_offset = sel_end; | 2032 *end_offset = sel_end; |
2036 } | 2033 } |
2037 } | 2034 } |
2038 | 2035 |
(...skipping 2011 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4050 case ui::AX_ROLE_TAB_LIST: | 4047 case ui::AX_ROLE_TAB_LIST: |
4051 ia_role = ROLE_SYSTEM_PAGETABLIST; | 4048 ia_role = ROLE_SYSTEM_PAGETABLIST; |
4052 break; | 4049 break; |
4053 case ui::AX_ROLE_TAB_PANEL: | 4050 case ui::AX_ROLE_TAB_PANEL: |
4054 ia_role = ROLE_SYSTEM_PROPERTYPAGE; | 4051 ia_role = ROLE_SYSTEM_PROPERTYPAGE; |
4055 break; | 4052 break; |
4056 case ui::AX_ROLE_TOGGLE_BUTTON: | 4053 case ui::AX_ROLE_TOGGLE_BUTTON: |
4057 ia_role = ROLE_SYSTEM_PUSHBUTTON; | 4054 ia_role = ROLE_SYSTEM_PUSHBUTTON; |
4058 ia2_role = IA2_ROLE_TOGGLE_BUTTON; | 4055 ia2_role = IA2_ROLE_TOGGLE_BUTTON; |
4059 break; | 4056 break; |
4060 case ui::AX_ROLE_TEXT_AREA: | |
4061 ia_role = ROLE_SYSTEM_TEXT; | |
4062 ia2_state |= IA2_STATE_MULTI_LINE; | |
4063 ia2_state |= IA2_STATE_EDITABLE; | |
4064 ia2_state |= IA2_STATE_SELECTABLE_TEXT; | |
4065 break; | |
4066 case ui::AX_ROLE_TEXT_FIELD: | 4057 case ui::AX_ROLE_TEXT_FIELD: |
4067 case ui::AX_ROLE_SEARCH_BOX: | 4058 case ui::AX_ROLE_SEARCH_BOX: |
4068 ia_role = ROLE_SYSTEM_TEXT; | 4059 ia_role = ROLE_SYSTEM_TEXT; |
4069 ia2_state |= IA2_STATE_SINGLE_LINE; | 4060 if (HasState(ui::AX_STATE_MULTILINE)) |
| 4061 ia2_state |= IA2_STATE_MULTI_LINE |
| 4062 else |
| 4063 ia2_state |= IA2_STATE_SINGLE_LINE |
4070 ia2_state |= IA2_STATE_EDITABLE; | 4064 ia2_state |= IA2_STATE_EDITABLE; |
4071 ia2_state |= IA2_STATE_SELECTABLE_TEXT; | 4065 ia2_state |= IA2_STATE_SELECTABLE_TEXT; |
4072 break; | 4066 break; |
4073 case ui::AX_ROLE_TIME: | 4067 case ui::AX_ROLE_TIME: |
4074 ia_role = ROLE_SYSTEM_SPINBUTTON; | 4068 ia_role = ROLE_SYSTEM_SPINBUTTON; |
4075 break; | 4069 break; |
4076 case ui::AX_ROLE_TIMER: | 4070 case ui::AX_ROLE_TIMER: |
4077 ia_role = ROLE_SYSTEM_CLOCK; | 4071 ia_role = ROLE_SYSTEM_CLOCK; |
4078 ia_state |= STATE_SYSTEM_READONLY; | 4072 ia_state |= STATE_SYSTEM_READONLY; |
4079 break; | 4073 break; |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4137 ia2_role = ia_role; | 4131 ia2_role = ia_role; |
4138 | 4132 |
4139 win_attributes_->ia_role = ia_role; | 4133 win_attributes_->ia_role = ia_role; |
4140 win_attributes_->ia_state = ia_state; | 4134 win_attributes_->ia_state = ia_state; |
4141 win_attributes_->role_name = role_name; | 4135 win_attributes_->role_name = role_name; |
4142 win_attributes_->ia2_role = ia2_role; | 4136 win_attributes_->ia2_role = ia2_role; |
4143 win_attributes_->ia2_state = ia2_state; | 4137 win_attributes_->ia2_state = ia2_state; |
4144 } | 4138 } |
4145 | 4139 |
4146 } // namespace content | 4140 } // namespace content |
OLD | NEW |