| OLD | NEW |
| 1 // Copyright (c) 2017 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2017 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_com_win.h" | 5 #include "content/browser/accessibility/browser_accessibility_com_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> |
| 11 #include <iterator> | 11 #include <iterator> |
| 12 #include <utility> | 12 #include <utility> |
| 13 | 13 |
| 14 #include "base/metrics/histogram_macros.h" | |
| 15 #include "base/strings/string_number_conversions.h" | 14 #include "base/strings/string_number_conversions.h" |
| 16 #include "base/strings/string_split.h" | 15 #include "base/strings/string_split.h" |
| 17 #include "base/strings/string_util.h" | 16 #include "base/strings/string_util.h" |
| 18 #include "base/strings/utf_string_conversions.h" | 17 #include "base/strings/utf_string_conversions.h" |
| 19 #include "base/win/enum_variant.h" | 18 #include "base/win/enum_variant.h" |
| 20 #include "base/win/scoped_comptr.h" | 19 #include "base/win/scoped_comptr.h" |
| 21 #include "base/win/windows_version.h" | 20 #include "base/win/windows_version.h" |
| 22 #include "content/browser/accessibility/browser_accessibility_event_win.h" | 21 #include "content/browser/accessibility/browser_accessibility_event_win.h" |
| 23 #include "content/browser/accessibility/browser_accessibility_manager_win.h" | 22 #include "content/browser/accessibility/browser_accessibility_manager_win.h" |
| 24 #include "content/browser/accessibility/browser_accessibility_state_impl.h" | 23 #include "content/browser/accessibility/browser_accessibility_state_impl.h" |
| 25 #include "content/browser/accessibility/browser_accessibility_win.h" | 24 #include "content/browser/accessibility/browser_accessibility_win.h" |
| 26 #include "content/common/accessibility_messages.h" | 25 #include "content/common/accessibility_messages.h" |
| 27 #include "content/common/accessibility_mode.h" | 26 #include "content/common/accessibility_mode.h" |
| 28 #include "content/public/common/content_client.h" | 27 #include "content/public/common/content_client.h" |
| 29 #include "third_party/skia/include/core/SkColor.h" | 28 #include "third_party/skia/include/core/SkColor.h" |
| 30 #include "ui/accessibility/ax_role_properties.h" | 29 #include "ui/accessibility/ax_role_properties.h" |
| 31 #include "ui/accessibility/ax_text_utils.h" | 30 #include "ui/accessibility/ax_text_utils.h" |
| 32 #include "ui/base/win/accessibility_ids_win.h" | 31 #include "ui/base/win/accessibility_ids_win.h" |
| 33 #include "ui/base/win/accessibility_misc_utils.h" | 32 #include "ui/base/win/accessibility_misc_utils.h" |
| 34 #include "ui/base/win/atl_module.h" | 33 #include "ui/base/win/atl_module.h" |
| 35 | 34 |
| 36 namespace { | |
| 37 | |
| 38 // IMPORTANT! | |
| 39 // These values are written to logs. Do not renumber or delete | |
| 40 // existing items; add new entries to the end of the list. | |
| 41 enum { | |
| 42 UMA_API_ACC_DO_DEFAULT_ACTION = 0, | |
| 43 UMA_API_ACC_HIT_TEST = 1, | |
| 44 UMA_API_ACC_LOCATION = 2, | |
| 45 UMA_API_ACC_NAVIGATE = 3, | |
| 46 UMA_API_ACC_SELECT = 4, | |
| 47 UMA_API_ADD_SELECTION = 5, | |
| 48 UMA_API_CONVERT_RETURNED_ELEMENT = 6, | |
| 49 UMA_API_DO_ACTION = 7, | |
| 50 UMA_API_GET_ACCESSIBLE_AT = 8, | |
| 51 UMA_API_GET_ACC_CHILD = 9, | |
| 52 UMA_API_GET_ACC_CHILD_COUNT = 10, | |
| 53 UMA_API_GET_ACC_DEFAULT_ACTION = 11, | |
| 54 UMA_API_GET_ACC_DESCRIPTION = 12, | |
| 55 UMA_API_GET_ACC_FOCUS = 13, | |
| 56 UMA_API_GET_ACC_HELP = 14, | |
| 57 UMA_API_GET_ACC_HELP_TOPIC = 15, | |
| 58 UMA_API_GET_ACC_KEYBOARD_SHORTCUT = 16, | |
| 59 UMA_API_GET_ACC_NAME = 17, | |
| 60 UMA_API_GET_ACC_PARENT = 18, | |
| 61 UMA_API_GET_ACC_ROLE = 19, | |
| 62 UMA_API_GET_ACC_SELECTION = 20, | |
| 63 UMA_API_GET_ACC_STATE = 21, | |
| 64 UMA_API_GET_ACC_VALUE = 22, | |
| 65 UMA_API_GET_ANCHOR = 23, | |
| 66 UMA_API_GET_ANCHOR_TARGET = 24, | |
| 67 UMA_API_GET_APP_NAME = 25, | |
| 68 UMA_API_GET_APP_VERSION = 26, | |
| 69 UMA_API_GET_ATTRIBUTES_FOR_NAMES = 27, | |
| 70 UMA_API_GET_CAPTION = 28, | |
| 71 UMA_API_GET_CARET_OFFSET = 29, | |
| 72 UMA_API_GET_CELL_AT = 30, | |
| 73 UMA_API_GET_CHARACTER_EXTENTS = 31, | |
| 74 UMA_API_GET_CHILD_AT = 32, | |
| 75 UMA_API_GET_CHILD_INDEX = 33, | |
| 76 UMA_API_GET_CLIPPED_SUBSTRING_BOUNDS = 34, | |
| 77 UMA_API_GET_COLUMN_DESCRIPTION = 35, | |
| 78 UMA_API_GET_COLUMN_EXTENT = 36, | |
| 79 UMA_API_GET_COLUMN_EXTENT_AT = 37, | |
| 80 UMA_API_GET_COLUMN_HEADER = 38, | |
| 81 UMA_API_GET_COLUMN_HEADER_CELLS = 39, | |
| 82 UMA_API_GET_COLUMN_INDEX = 40, | |
| 83 UMA_API_GET_COMPUTED_STYLE = 41, | |
| 84 UMA_API_GET_COMPUTED_STYLE_FOR_PROPERTIES = 42, | |
| 85 UMA_API_GET_CURRENT_VALUE = 43, | |
| 86 UMA_API_GET_DESCRIPTION = 44, | |
| 87 UMA_API_GET_DOC_TYPE = 45, | |
| 88 UMA_API_GET_DOM_TEXT = 46, | |
| 89 UMA_API_GET_END_INDEX = 47, | |
| 90 UMA_API_GET_EXTENDED_ROLE = 48, | |
| 91 UMA_API_GET_EXTENDED_STATES = 49, | |
| 92 UMA_API_GET_FIRST_CHILD = 50, | |
| 93 UMA_API_GET_FONT_FAMILY = 51, | |
| 94 UMA_API_GET_GROUP_POSITION = 52, | |
| 95 UMA_API_GET_HOST_RAW_ELEMENT_PROVIDER = 53, | |
| 96 UMA_API_GET_HYPERLINK = 54, | |
| 97 UMA_API_GET_HYPERLINK_INDEX = 55, | |
| 98 UMA_API_GET_IACCESSIBLE_PAIR = 56, | |
| 99 UMA_API_GET_IMAGE_POSITION = 57, | |
| 100 UMA_API_GET_IMAGE_SIZE = 58, | |
| 101 UMA_API_GET_INDEX_IN_PARENT = 59, | |
| 102 UMA_API_GET_INNER_HTML = 60, | |
| 103 UMA_API_GET_IS_COLUMN_SELECTED = 61, | |
| 104 UMA_API_GET_IS_ROW_SELECTED = 62, | |
| 105 UMA_API_GET_IS_SELECTED = 63, | |
| 106 UMA_API_GET_KEY_BINDING = 64, | |
| 107 UMA_API_GET_LANGUAGE = 65, | |
| 108 UMA_API_GET_LAST_CHILD = 66, | |
| 109 UMA_API_GET_LOCALE = 67, | |
| 110 UMA_API_GET_LOCALIZED_EXTENDED_ROLE = 68, | |
| 111 UMA_API_GET_LOCALIZED_EXTENDED_STATES = 69, | |
| 112 UMA_API_GET_LOCALIZED_NAME = 70, | |
| 113 UMA_API_GET_LOCAL_INTERFACE = 71, | |
| 114 UMA_API_GET_MAXIMUM_VALUE = 72, | |
| 115 UMA_API_GET_MIME_TYPE = 73, | |
| 116 UMA_API_GET_MINIMUM_VALUE = 74, | |
| 117 UMA_API_GET_NAME = 75, | |
| 118 UMA_API_GET_NAMESPACE_URI_FOR_ID = 76, | |
| 119 UMA_API_GET_NEW_TEXT = 77, | |
| 120 UMA_API_GET_NEXT_SIBLING = 78, | |
| 121 UMA_API_GET_NODE_INFO = 79, | |
| 122 UMA_API_GET_N_CHARACTERS = 80, | |
| 123 UMA_API_GET_N_COLUMNS = 81, | |
| 124 UMA_API_GET_N_EXTENDED_STATES = 82, | |
| 125 UMA_API_GET_N_HYPERLINKS = 83, | |
| 126 UMA_API_GET_N_RELATIONS = 84, | |
| 127 UMA_API_GET_N_ROWS = 85, | |
| 128 UMA_API_GET_N_SELECTED_CELLS = 86, | |
| 129 UMA_API_GET_N_SELECTED_CHILDREN = 87, | |
| 130 UMA_API_GET_N_SELECTED_COLUMNS = 88, | |
| 131 UMA_API_GET_N_SELECTED_ROWS = 89, | |
| 132 UMA_API_GET_N_SELECTIONS = 90, | |
| 133 UMA_API_GET_OBJECT_FOR_CHILD = 91, | |
| 134 UMA_API_GET_OFFSET_AT_POINT = 92, | |
| 135 UMA_API_GET_OLD_TEXT = 93, | |
| 136 UMA_API_GET_PARENT_NODE = 94, | |
| 137 UMA_API_GET_PATTERN_PROVIDER = 95, | |
| 138 UMA_API_GET_PREVIOUS_SIBLING = 96, | |
| 139 UMA_API_GET_PROPERTY_VALUE = 97, | |
| 140 UMA_API_GET_PROVIDER_OPTIONS = 98, | |
| 141 UMA_API_GET_RELATION = 99, | |
| 142 UMA_API_GET_RELATIONS = 100, | |
| 143 UMA_API_GET_ROW_COLUMN_EXTENTS = 101, | |
| 144 UMA_API_GET_ROW_COLUMN_EXTENTS_AT_INDEX = 102, | |
| 145 UMA_API_GET_ROW_DESCRIPTION = 103, | |
| 146 UMA_API_GET_ROW_EXTENT = 104, | |
| 147 UMA_API_GET_ROW_EXTENT_AT = 105, | |
| 148 UMA_API_GET_ROW_HEADER = 106, | |
| 149 UMA_API_GET_ROW_HEADER_CELLS = 107, | |
| 150 UMA_API_GET_ROW_INDEX = 108, | |
| 151 UMA_API_GET_RUNTIME_ID = 109, | |
| 152 UMA_API_GET_SELECTED_CELLS = 110, | |
| 153 UMA_API_GET_SELECTED_CHILDREN = 111, | |
| 154 UMA_API_GET_SELECTED_COLUMNS = 112, | |
| 155 UMA_API_GET_SELECTED_ROWS = 113, | |
| 156 UMA_API_GET_SELECTION = 114, | |
| 157 UMA_API_GET_START_INDEX = 115, | |
| 158 UMA_API_GET_STATES = 116, | |
| 159 UMA_API_GET_SUMMARY = 117, | |
| 160 UMA_API_GET_TABLE = 118, | |
| 161 UMA_API_GET_TEXT = 119, | |
| 162 UMA_API_GET_TEXT_AFTER_OFFSET = 120, | |
| 163 UMA_API_GET_TEXT_AT_OFFSET = 121, | |
| 164 UMA_API_GET_TEXT_BEFORE_OFFSET = 122, | |
| 165 UMA_API_GET_TITLE = 123, | |
| 166 UMA_API_GET_TOOLKIT_NAME = 124, | |
| 167 UMA_API_GET_TOOLKIT_VERSION = 125, | |
| 168 UMA_API_GET_UNCLIPPED_SUBSTRING_BOUNDS = 126, | |
| 169 UMA_API_GET_UNIQUE_ID = 127, | |
| 170 UMA_API_GET_URL = 128, | |
| 171 UMA_API_GET_VALID = 129, | |
| 172 UMA_API_GET_WINDOW_HANDLE = 130, | |
| 173 UMA_API_IA2_GET_ATTRIBUTES = 131, | |
| 174 UMA_API_IA2_SCROLL_TO = 132, | |
| 175 UMA_API_IAACTION_GET_DESCRIPTION = 133, | |
| 176 UMA_API_IATEXT_GET_ATTRIBUTES = 134, | |
| 177 UMA_API_ISIMPLEDOMNODE_GET_ATTRIBUTES = 135, | |
| 178 UMA_API_ISIMPLEDOMNODE_SCROLL_TO = 136, | |
| 179 UMA_API_N_ACTIONS = 137, | |
| 180 UMA_API_PUT_ALTERNATE_VIEW_MEDIA_TYPES = 138, | |
| 181 UMA_API_QUERY_SERVICE = 139, | |
| 182 UMA_API_REMOVE_SELECTION = 140, | |
| 183 UMA_API_ROLE = 141, | |
| 184 UMA_API_SCROLL_SUBSTRING_TO = 142, | |
| 185 UMA_API_SCROLL_SUBSTRING_TO_POINT = 143, | |
| 186 UMA_API_SCROLL_TO_POINT = 144, | |
| 187 UMA_API_SCROLL_TO_SUBSTRING = 145, | |
| 188 UMA_API_SELECT_COLUMN = 146, | |
| 189 UMA_API_SELECT_ROW = 147, | |
| 190 UMA_API_SET_CARET_OFFSET = 148, | |
| 191 UMA_API_SET_CURRENT_VALUE = 149, | |
| 192 UMA_API_SET_SELECTION = 150, | |
| 193 UMA_API_TABLE2_GET_SELECTED_COLUMNS = 151, | |
| 194 UMA_API_TABLE2_GET_SELECTED_ROWS = 152, | |
| 195 UMA_API_TABLECELL_GET_COLUMN_INDEX = 153, | |
| 196 UMA_API_TABLECELL_GET_IS_SELECTED = 154, | |
| 197 UMA_API_TABLECELL_GET_ROW_INDEX = 155, | |
| 198 UMA_API_UNSELECT_COLUMN = 156, | |
| 199 UMA_API_UNSELECT_ROW = 157, | |
| 200 | |
| 201 // This must always be the last enum. It's okay for its value to | |
| 202 // increase, but none of the other enum values may change. | |
| 203 UMA_API_MAX | |
| 204 }; | |
| 205 | |
| 206 #define WIN_ACCESSIBILITY_API_HISTOGRAM(enum_value) \ | |
| 207 UMA_HISTOGRAM_ENUMERATION("Accessibility.WinAPIs", enum_value, UMA_API_MAX) | |
| 208 | |
| 209 // There is no easy way to decouple |kScreenReader| and |kHTML| accessibility | 35 // There is no easy way to decouple |kScreenReader| and |kHTML| accessibility |
| 210 // modes when Windows screen readers are used. For example, certain roles use | 36 // modes when Windows screen readers are used. For example, certain roles use |
| 211 // the HTML tag name. Input fields require their type attribute to be exposed. | 37 // the HTML tag name. Input fields require their type attribute to be exposed. |
| 212 const uint32_t kScreenReaderAndHTMLAccessibilityModes = | 38 const uint32_t kScreenReaderAndHTMLAccessibilityModes = |
| 213 content::AccessibilityMode::kScreenReader | | 39 content::AccessibilityMode::kScreenReader | |
| 214 content::AccessibilityMode::kHTML; | 40 content::AccessibilityMode::kHTML; |
| 215 | 41 |
| 216 const WCHAR* const IA2_RELATION_DETAILS = L"details"; | 42 const WCHAR* const IA2_RELATION_DETAILS = L"details"; |
| 217 const WCHAR* const IA2_RELATION_DETAILS_FOR = L"detailsFor"; | 43 const WCHAR* const IA2_RELATION_DETAILS_FOR = L"detailsFor"; |
| 218 const WCHAR* const IA2_RELATION_ERROR_MESSAGE = L"errorMessage"; | 44 const WCHAR* const IA2_RELATION_ERROR_MESSAGE = L"errorMessage"; |
| 219 | 45 |
| 220 } // namespace | |
| 221 | |
| 222 namespace content { | 46 namespace content { |
| 223 | 47 |
| 224 using AXPlatformPositionInstance = AXPlatformPosition::AXPositionInstance; | 48 using AXPlatformPositionInstance = AXPlatformPosition::AXPositionInstance; |
| 225 using AXPlatformRange = ui::AXRange<AXPlatformPositionInstance::element_type>; | 49 using AXPlatformRange = ui::AXRange<AXPlatformPositionInstance::element_type>; |
| 226 | 50 |
| 227 // These nonstandard GUIDs are taken directly from the Mozilla sources | 51 // These nonstandard GUIDs are taken directly from the Mozilla sources |
| 228 // (accessible/src/msaa/nsAccessNodeWrap.cpp); some documentation is here: | 52 // (accessible/src/msaa/nsAccessNodeWrap.cpp); some documentation is here: |
| 229 // http://developer.mozilla.org/en/Accessibility/AT-APIs/ImplementationFeatures/
MSAA | 53 // http://developer.mozilla.org/en/Accessibility/AT-APIs/ImplementationFeatures/
MSAA |
| 230 const GUID GUID_ISimpleDOM = {0x0c539790, | 54 const GUID GUID_ISimpleDOM = {0x0c539790, |
| 231 0x12e4, | 55 0x12e4, |
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 419 // | 243 // |
| 420 // Conventions: | 244 // Conventions: |
| 421 // * Always test for owner() first and return E_FAIL if it's false. | 245 // * Always test for owner() first and return E_FAIL if it's false. |
| 422 // * Always check for invalid arguments first, even if they're unused. | 246 // * Always check for invalid arguments first, even if they're unused. |
| 423 // * Return S_FALSE if the only output is a string argument and it's empty. | 247 // * Return S_FALSE if the only output is a string argument and it's empty. |
| 424 // * There are some methods that don't touch any state such as get_toolkitName. | 248 // * There are some methods that don't touch any state such as get_toolkitName. |
| 425 // For these rare cases, you may not need to call owner(). | 249 // For these rare cases, you may not need to call owner(). |
| 426 // | 250 // |
| 427 | 251 |
| 428 HRESULT BrowserAccessibilityComWin::accDoDefaultAction(VARIANT var_id) { | 252 HRESULT BrowserAccessibilityComWin::accDoDefaultAction(VARIANT var_id) { |
| 429 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_ACC_DO_DEFAULT_ACTION); | |
| 430 | |
| 431 if (!owner()) | 253 if (!owner()) |
| 432 return E_FAIL; | 254 return E_FAIL; |
| 433 | 255 |
| 434 return AXPlatformNodeWin::accDoDefaultAction(var_id); | 256 return AXPlatformNodeWin::accDoDefaultAction(var_id); |
| 435 } | 257 } |
| 436 | 258 |
| 437 STDMETHODIMP BrowserAccessibilityComWin::accHitTest(LONG x_left, | 259 STDMETHODIMP BrowserAccessibilityComWin::accHitTest(LONG x_left, |
| 438 LONG y_top, | 260 LONG y_top, |
| 439 VARIANT* child) { | 261 VARIANT* child) { |
| 440 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_ACC_HIT_TEST); | |
| 441 | |
| 442 if (!owner()) | 262 if (!owner()) |
| 443 return E_FAIL; | 263 return E_FAIL; |
| 444 | 264 |
| 445 return AXPlatformNodeWin::accHitTest(x_left, y_top, child); | 265 return AXPlatformNodeWin::accHitTest(x_left, y_top, child); |
| 446 } | 266 } |
| 447 | 267 |
| 448 STDMETHODIMP BrowserAccessibilityComWin::accLocation(LONG* x_left, | 268 STDMETHODIMP BrowserAccessibilityComWin::accLocation(LONG* x_left, |
| 449 LONG* y_top, | 269 LONG* y_top, |
| 450 LONG* width, | 270 LONG* width, |
| 451 LONG* height, | 271 LONG* height, |
| 452 VARIANT var_id) { | 272 VARIANT var_id) { |
| 453 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_ACC_LOCATION); | |
| 454 if (!owner()) | 273 if (!owner()) |
| 455 return E_FAIL; | 274 return E_FAIL; |
| 456 | 275 |
| 457 return AXPlatformNodeWin::accLocation(x_left, y_top, width, height, var_id); | 276 return AXPlatformNodeWin::accLocation(x_left, y_top, width, height, var_id); |
| 458 } | 277 } |
| 459 | 278 |
| 460 STDMETHODIMP BrowserAccessibilityComWin::accNavigate(LONG nav_dir, | 279 STDMETHODIMP BrowserAccessibilityComWin::accNavigate(LONG nav_dir, |
| 461 VARIANT start, | 280 VARIANT start, |
| 462 VARIANT* end) { | 281 VARIANT* end) { |
| 463 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_ACC_NAVIGATE); | |
| 464 if (!owner()) | 282 if (!owner()) |
| 465 return E_FAIL; | 283 return E_FAIL; |
| 466 | 284 |
| 467 return AXPlatformNodeWin::accNavigate(nav_dir, start, end); | 285 return AXPlatformNodeWin::accNavigate(nav_dir, start, end); |
| 468 } | 286 } |
| 469 | 287 |
| 470 STDMETHODIMP BrowserAccessibilityComWin::get_accChild(VARIANT var_child, | 288 STDMETHODIMP BrowserAccessibilityComWin::get_accChild(VARIANT var_child, |
| 471 IDispatch** disp_child) { | 289 IDispatch** disp_child) { |
| 472 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ACC_CHILD); | |
| 473 if (!owner()) | 290 if (!owner()) |
| 474 return E_FAIL; | 291 return E_FAIL; |
| 475 | 292 |
| 476 return AXPlatformNodeWin::get_accChild(var_child, disp_child); | 293 return AXPlatformNodeWin::get_accChild(var_child, disp_child); |
| 477 } | 294 } |
| 478 | 295 |
| 479 STDMETHODIMP BrowserAccessibilityComWin::get_accChildCount(LONG* child_count) { | 296 STDMETHODIMP BrowserAccessibilityComWin::get_accChildCount(LONG* child_count) { |
| 480 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ACC_CHILD_COUNT); | |
| 481 if (!owner()) | 297 if (!owner()) |
| 482 return E_FAIL; | 298 return E_FAIL; |
| 483 | 299 |
| 484 return AXPlatformNodeWin::get_accChildCount(child_count); | 300 return AXPlatformNodeWin::get_accChildCount(child_count); |
| 485 } | 301 } |
| 486 | 302 |
| 487 STDMETHODIMP BrowserAccessibilityComWin::get_accDefaultAction( | 303 STDMETHODIMP BrowserAccessibilityComWin::get_accDefaultAction( |
| 488 VARIANT var_id, | 304 VARIANT var_id, |
| 489 BSTR* def_action) { | 305 BSTR* def_action) { |
| 490 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ACC_DEFAULT_ACTION); | |
| 491 if (!owner()) | 306 if (!owner()) |
| 492 return E_FAIL; | 307 return E_FAIL; |
| 493 | 308 |
| 494 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 309 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 495 return AXPlatformNodeWin::get_accDefaultAction(var_id, def_action); | 310 return AXPlatformNodeWin::get_accDefaultAction(var_id, def_action); |
| 496 } | 311 } |
| 497 | 312 |
| 498 STDMETHODIMP BrowserAccessibilityComWin::get_accDescription(VARIANT var_id, | 313 STDMETHODIMP BrowserAccessibilityComWin::get_accDescription(VARIANT var_id, |
| 499 BSTR* desc) { | 314 BSTR* desc) { |
| 500 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ACC_DESCRIPTION); | |
| 501 if (!owner()) | 315 if (!owner()) |
| 502 return E_FAIL; | 316 return E_FAIL; |
| 503 | 317 |
| 504 return AXPlatformNodeWin::get_accDescription(var_id, desc); | 318 return AXPlatformNodeWin::get_accDescription(var_id, desc); |
| 505 } | 319 } |
| 506 | 320 |
| 507 STDMETHODIMP BrowserAccessibilityComWin::get_accFocus(VARIANT* focus_child) { | 321 STDMETHODIMP BrowserAccessibilityComWin::get_accFocus(VARIANT* focus_child) { |
| 508 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ACC_FOCUS); | |
| 509 if (!owner()) | 322 if (!owner()) |
| 510 return E_FAIL; | 323 return E_FAIL; |
| 511 | 324 |
| 512 return AXPlatformNodeWin::get_accFocus(focus_child); | 325 return AXPlatformNodeWin::get_accFocus(focus_child); |
| 513 } | 326 } |
| 514 | 327 |
| 515 STDMETHODIMP BrowserAccessibilityComWin::get_accHelp(VARIANT var_id, | 328 STDMETHODIMP BrowserAccessibilityComWin::get_accHelp(VARIANT var_id, |
| 516 BSTR* help) { | 329 BSTR* help) { |
| 517 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ACC_HELP); | |
| 518 if (!owner()) | 330 if (!owner()) |
| 519 return E_FAIL; | 331 return E_FAIL; |
| 520 | 332 |
| 521 return AXPlatformNodeWin::get_accHelp(var_id, help); | 333 return AXPlatformNodeWin::get_accHelp(var_id, help); |
| 522 } | 334 } |
| 523 | 335 |
| 524 STDMETHODIMP BrowserAccessibilityComWin::get_accKeyboardShortcut( | 336 STDMETHODIMP BrowserAccessibilityComWin::get_accKeyboardShortcut( |
| 525 VARIANT var_id, | 337 VARIANT var_id, |
| 526 BSTR* acc_key) { | 338 BSTR* acc_key) { |
| 527 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ACC_KEYBOARD_SHORTCUT); | |
| 528 if (!owner()) | 339 if (!owner()) |
| 529 return E_FAIL; | 340 return E_FAIL; |
| 530 | 341 |
| 531 return AXPlatformNodeWin::get_accKeyboardShortcut(var_id, acc_key); | 342 return AXPlatformNodeWin::get_accKeyboardShortcut(var_id, acc_key); |
| 532 } | 343 } |
| 533 | 344 |
| 534 STDMETHODIMP BrowserAccessibilityComWin::get_accName(VARIANT var_id, | 345 STDMETHODIMP BrowserAccessibilityComWin::get_accName(VARIANT var_id, |
| 535 BSTR* name) { | 346 BSTR* name) { |
| 536 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ACC_NAME); | |
| 537 if (!owner()) | 347 if (!owner()) |
| 538 return E_FAIL; | 348 return E_FAIL; |
| 539 | 349 |
| 540 return AXPlatformNodeWin::get_accName(var_id, name); | 350 return AXPlatformNodeWin::get_accName(var_id, name); |
| 541 } | 351 } |
| 542 | 352 |
| 543 STDMETHODIMP BrowserAccessibilityComWin::get_accParent( | 353 STDMETHODIMP BrowserAccessibilityComWin::get_accParent( |
| 544 IDispatch** disp_parent) { | 354 IDispatch** disp_parent) { |
| 545 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ACC_PARENT); | |
| 546 if (!owner()) | 355 if (!owner()) |
| 547 return E_FAIL; | 356 return E_FAIL; |
| 548 | 357 |
| 549 return AXPlatformNodeWin::get_accParent(disp_parent); | 358 return AXPlatformNodeWin::get_accParent(disp_parent); |
| 550 } | 359 } |
| 551 | 360 |
| 552 STDMETHODIMP BrowserAccessibilityComWin::get_accRole(VARIANT var_id, | 361 STDMETHODIMP BrowserAccessibilityComWin::get_accRole(VARIANT var_id, |
| 553 VARIANT* role) { | 362 VARIANT* role) { |
| 554 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ACC_ROLE); | |
| 555 if (!owner()) | 363 if (!owner()) |
| 556 return E_FAIL; | 364 return E_FAIL; |
| 557 | 365 |
| 558 return AXPlatformNodeWin::get_accRole(var_id, role); | 366 return AXPlatformNodeWin::get_accRole(var_id, role); |
| 559 } | 367 } |
| 560 | 368 |
| 561 STDMETHODIMP BrowserAccessibilityComWin::get_accState(VARIANT var_id, | 369 STDMETHODIMP BrowserAccessibilityComWin::get_accState(VARIANT var_id, |
| 562 VARIANT* state) { | 370 VARIANT* state) { |
| 563 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ACC_STATE); | |
| 564 if (!owner()) | 371 if (!owner()) |
| 565 return E_FAIL; | 372 return E_FAIL; |
| 566 | 373 |
| 567 return AXPlatformNodeWin::get_accState(var_id, state); | 374 return AXPlatformNodeWin::get_accState(var_id, state); |
| 568 } | 375 } |
| 569 | 376 |
| 570 bool BrowserAccessibilityComWin::IsRangeValueSupported() { | 377 bool BrowserAccessibilityComWin::IsRangeValueSupported() { |
| 571 switch (MSAARole()) { | 378 switch (MSAARole()) { |
| 572 case ROLE_SYSTEM_PROGRESSBAR: | 379 case ROLE_SYSTEM_PROGRESSBAR: |
| 573 case ROLE_SYSTEM_SLIDER: | 380 case ROLE_SYSTEM_SLIDER: |
| 574 case ROLE_SYSTEM_SPINBUTTON: | 381 case ROLE_SYSTEM_SPINBUTTON: |
| 575 case ROLE_SYSTEM_SCROLLBAR: | 382 case ROLE_SYSTEM_SCROLLBAR: |
| 576 return true; | 383 return true; |
| 577 case ROLE_SYSTEM_SEPARATOR: | 384 case ROLE_SYSTEM_SEPARATOR: |
| 578 return owner()->HasState(ui::AX_STATE_FOCUSABLE); | 385 return owner()->HasState(ui::AX_STATE_FOCUSABLE); |
| 579 default: | 386 default: |
| 580 return false; | 387 return false; |
| 581 } | 388 } |
| 582 } | 389 } |
| 583 | 390 |
| 584 STDMETHODIMP BrowserAccessibilityComWin::get_accValue(VARIANT var_id, | 391 STDMETHODIMP BrowserAccessibilityComWin::get_accValue(VARIANT var_id, |
| 585 BSTR* value) { | 392 BSTR* value) { |
| 586 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ACC_VALUE); | |
| 587 if (!owner()) | 393 if (!owner()) |
| 588 return E_FAIL; | 394 return E_FAIL; |
| 589 | 395 |
| 590 return AXPlatformNodeWin::get_accValue(var_id, value); | 396 return AXPlatformNodeWin::get_accValue(var_id, value); |
| 591 } | 397 } |
| 592 | 398 |
| 593 STDMETHODIMP BrowserAccessibilityComWin::get_accHelpTopic(BSTR* help_file, | 399 STDMETHODIMP BrowserAccessibilityComWin::get_accHelpTopic(BSTR* help_file, |
| 594 VARIANT var_id, | 400 VARIANT var_id, |
| 595 LONG* topic_id) { | 401 LONG* topic_id) { |
| 596 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ACC_HELP_TOPIC); | |
| 597 return AXPlatformNodeWin::get_accHelpTopic(help_file, var_id, topic_id); | 402 return AXPlatformNodeWin::get_accHelpTopic(help_file, var_id, topic_id); |
| 598 } | 403 } |
| 599 | 404 |
| 600 STDMETHODIMP BrowserAccessibilityComWin::get_accSelection(VARIANT* selected) { | 405 STDMETHODIMP BrowserAccessibilityComWin::get_accSelection(VARIANT* selected) { |
| 601 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ACC_SELECTION); | |
| 602 if (!owner()) | 406 if (!owner()) |
| 603 return E_FAIL; | 407 return E_FAIL; |
| 604 | 408 |
| 605 return AXPlatformNodeWin::get_accSelection(selected); | 409 return AXPlatformNodeWin::get_accSelection(selected); |
| 606 } | 410 } |
| 607 | 411 |
| 608 STDMETHODIMP BrowserAccessibilityComWin::accSelect(LONG flags_sel, | 412 STDMETHODIMP BrowserAccessibilityComWin::accSelect(LONG flags_sel, |
| 609 VARIANT var_id) { | 413 VARIANT var_id) { |
| 610 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_ACC_SELECT); | |
| 611 if (!owner()) | 414 if (!owner()) |
| 612 return E_FAIL; | 415 return E_FAIL; |
| 613 | 416 |
| 614 return AXPlatformNodeWin::accSelect(flags_sel, var_id); | 417 return AXPlatformNodeWin::accSelect(flags_sel, var_id); |
| 615 } | 418 } |
| 616 | 419 |
| 617 STDMETHODIMP | 420 STDMETHODIMP |
| 618 BrowserAccessibilityComWin::put_accName(VARIANT var_id, BSTR put_name) { | 421 BrowserAccessibilityComWin::put_accName(VARIANT var_id, BSTR put_name) { |
| 619 if (!owner()) | 422 if (!owner()) |
| 620 return E_FAIL; | 423 return E_FAIL; |
| 621 | 424 |
| 622 return AXPlatformNodeWin::put_accName(var_id, put_name); | 425 return AXPlatformNodeWin::put_accName(var_id, put_name); |
| 623 } | 426 } |
| 624 STDMETHODIMP | 427 STDMETHODIMP |
| 625 BrowserAccessibilityComWin::put_accValue(VARIANT var_id, BSTR put_val) { | 428 BrowserAccessibilityComWin::put_accValue(VARIANT var_id, BSTR put_val) { |
| 626 if (!owner()) | 429 if (!owner()) |
| 627 return E_FAIL; | 430 return E_FAIL; |
| 628 | 431 |
| 629 return AXPlatformNodeWin::put_accValue(var_id, put_val); | 432 return AXPlatformNodeWin::put_accValue(var_id, put_val); |
| 630 } | 433 } |
| 631 | 434 |
| 632 // | 435 // |
| 633 // IAccessible2 methods. | 436 // IAccessible2 methods. |
| 634 // | 437 // |
| 635 | 438 |
| 636 STDMETHODIMP BrowserAccessibilityComWin::role(LONG* role) { | 439 STDMETHODIMP BrowserAccessibilityComWin::role(LONG* role) { |
| 637 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_ROLE); | |
| 638 if (!owner()) | 440 if (!owner()) |
| 639 return E_FAIL; | 441 return E_FAIL; |
| 640 | 442 |
| 641 return AXPlatformNodeWin::role(role); | 443 return AXPlatformNodeWin::role(role); |
| 642 } | 444 } |
| 643 | 445 |
| 644 STDMETHODIMP BrowserAccessibilityComWin::get_attributes(BSTR* attributes) { | 446 STDMETHODIMP BrowserAccessibilityComWin::get_attributes(BSTR* attributes) { |
| 645 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_IA2_GET_ATTRIBUTES); | 447 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_IA2_GET_ATTRIBUTES); |
| 646 if (!owner()) | 448 if (!owner()) |
| 647 return E_FAIL; | 449 return E_FAIL; |
| (...skipping 11 matching lines...) Expand all Loading... |
| 659 | 461 |
| 660 if (str.empty()) | 462 if (str.empty()) |
| 661 return S_FALSE; | 463 return S_FALSE; |
| 662 | 464 |
| 663 *attributes = SysAllocString(str.c_str()); | 465 *attributes = SysAllocString(str.c_str()); |
| 664 DCHECK(*attributes); | 466 DCHECK(*attributes); |
| 665 return S_OK; | 467 return S_OK; |
| 666 } | 468 } |
| 667 | 469 |
| 668 STDMETHODIMP BrowserAccessibilityComWin::get_states(AccessibleStates* states) { | 470 STDMETHODIMP BrowserAccessibilityComWin::get_states(AccessibleStates* states) { |
| 669 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_STATES); | |
| 670 if (!owner()) | 471 if (!owner()) |
| 671 return E_FAIL; | 472 return E_FAIL; |
| 672 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 473 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 673 | 474 |
| 674 return AXPlatformNodeWin::get_states(states); | 475 return AXPlatformNodeWin::get_states(states); |
| 675 } | 476 } |
| 676 | 477 |
| 677 STDMETHODIMP BrowserAccessibilityComWin::get_uniqueID(LONG* unique_id) { | 478 STDMETHODIMP BrowserAccessibilityComWin::get_uniqueID(LONG* unique_id) { |
| 678 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_UNIQUE_ID); | 479 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_UNIQUE_ID); |
| 679 if (!owner()) | 480 if (!owner()) |
| (...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1056 } | 857 } |
| 1057 | 858 |
| 1058 // | 859 // |
| 1059 // IAccessibleTable methods. | 860 // IAccessibleTable methods. |
| 1060 // | 861 // |
| 1061 | 862 |
| 1062 STDMETHODIMP BrowserAccessibilityComWin::get_accessibleAt( | 863 STDMETHODIMP BrowserAccessibilityComWin::get_accessibleAt( |
| 1063 long row, | 864 long row, |
| 1064 long column, | 865 long column, |
| 1065 IUnknown** accessible) { | 866 IUnknown** accessible) { |
| 1066 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ACCESSIBLE_AT); | |
| 1067 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 867 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1068 if (!owner()) | 868 if (!owner()) |
| 1069 return E_FAIL; | 869 return E_FAIL; |
| 1070 | 870 |
| 1071 return AXPlatformNodeWin::get_accessibleAt(row, column, accessible); | 871 return AXPlatformNodeWin::get_accessibleAt(row, column, accessible); |
| 1072 } | 872 } |
| 1073 | 873 |
| 1074 STDMETHODIMP BrowserAccessibilityComWin::get_caption(IUnknown** accessible) { | 874 STDMETHODIMP BrowserAccessibilityComWin::get_caption(IUnknown** accessible) { |
| 1075 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_CAPTION); | |
| 1076 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 875 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1077 if (!owner()) | 876 if (!owner()) |
| 1078 return E_FAIL; | 877 return E_FAIL; |
| 1079 | 878 |
| 1080 return AXPlatformNodeWin::get_caption(accessible); | 879 return AXPlatformNodeWin::get_caption(accessible); |
| 1081 } | 880 } |
| 1082 | 881 |
| 1083 STDMETHODIMP BrowserAccessibilityComWin::get_childIndex(long row, | 882 STDMETHODIMP BrowserAccessibilityComWin::get_childIndex(long row, |
| 1084 long column, | 883 long column, |
| 1085 long* cell_index) { | 884 long* cell_index) { |
| 1086 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_CHILD_INDEX); | |
| 1087 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 885 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1088 if (!owner()) | 886 if (!owner()) |
| 1089 return E_FAIL; | 887 return E_FAIL; |
| 1090 | 888 |
| 1091 return AXPlatformNodeWin::get_childIndex(row, column, cell_index); | 889 return AXPlatformNodeWin::get_childIndex(row, column, cell_index); |
| 1092 } | 890 } |
| 1093 | 891 |
| 1094 STDMETHODIMP BrowserAccessibilityComWin::get_columnDescription( | 892 STDMETHODIMP BrowserAccessibilityComWin::get_columnDescription( |
| 1095 long column, | 893 long column, |
| 1096 BSTR* description) { | 894 BSTR* description) { |
| 1097 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_COLUMN_DESCRIPTION); | |
| 1098 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 895 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1099 if (!owner()) | 896 if (!owner()) |
| 1100 return E_FAIL; | 897 return E_FAIL; |
| 1101 | 898 |
| 1102 return AXPlatformNodeWin::get_columnDescription(column, description); | 899 return AXPlatformNodeWin::get_columnDescription(column, description); |
| 1103 } | 900 } |
| 1104 | 901 |
| 1105 STDMETHODIMP BrowserAccessibilityComWin::get_columnExtentAt( | 902 STDMETHODIMP BrowserAccessibilityComWin::get_columnExtentAt( |
| 1106 long row, | 903 long row, |
| 1107 long column, | 904 long column, |
| 1108 long* n_columns_spanned) { | 905 long* n_columns_spanned) { |
| 1109 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_COLUMN_EXTENT_AT); | |
| 1110 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 906 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1111 if (!owner()) | 907 if (!owner()) |
| 1112 return E_FAIL; | 908 return E_FAIL; |
| 1113 | 909 |
| 1114 return AXPlatformNodeWin::get_columnExtentAt(row, column, n_columns_spanned); | 910 return AXPlatformNodeWin::get_columnExtentAt(row, column, n_columns_spanned); |
| 1115 } | 911 } |
| 1116 | 912 |
| 1117 STDMETHODIMP BrowserAccessibilityComWin::get_columnHeader( | 913 STDMETHODIMP BrowserAccessibilityComWin::get_columnHeader( |
| 1118 IAccessibleTable** accessible_table, | 914 IAccessibleTable** accessible_table, |
| 1119 long* starting_row_index) { | 915 long* starting_row_index) { |
| 1120 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_COLUMN_HEADER); | |
| 1121 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 916 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1122 | 917 |
| 1123 if (!owner()) | 918 if (!owner()) |
| 1124 return E_FAIL; | 919 return E_FAIL; |
| 1125 | 920 |
| 1126 return AXPlatformNodeWin::get_columnHeader(accessible_table, | 921 return AXPlatformNodeWin::get_columnHeader(accessible_table, |
| 1127 starting_row_index); | 922 starting_row_index); |
| 1128 } | 923 } |
| 1129 | 924 |
| 1130 STDMETHODIMP BrowserAccessibilityComWin::get_columnIndex(long cell_index, | 925 STDMETHODIMP BrowserAccessibilityComWin::get_columnIndex(long cell_index, |
| 1131 long* column_index) { | 926 long* column_index) { |
| 1132 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_COLUMN_INDEX); | |
| 1133 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 927 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1134 if (!owner()) | 928 if (!owner()) |
| 1135 return E_FAIL; | 929 return E_FAIL; |
| 1136 | 930 |
| 1137 return AXPlatformNodeWin::get_columnIndex(cell_index, column_index); | 931 return AXPlatformNodeWin::get_columnIndex(cell_index, column_index); |
| 1138 } | 932 } |
| 1139 | 933 |
| 1140 STDMETHODIMP BrowserAccessibilityComWin::get_nColumns(long* column_count) { | 934 STDMETHODIMP BrowserAccessibilityComWin::get_nColumns(long* column_count) { |
| 1141 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_N_COLUMNS); | |
| 1142 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 935 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1143 if (!owner()) | 936 if (!owner()) |
| 1144 return E_FAIL; | 937 return E_FAIL; |
| 1145 | 938 |
| 1146 return AXPlatformNodeWin::get_nColumns(column_count); | 939 return AXPlatformNodeWin::get_nColumns(column_count); |
| 1147 } | 940 } |
| 1148 | 941 |
| 1149 STDMETHODIMP BrowserAccessibilityComWin::get_nRows(long* row_count) { | 942 STDMETHODIMP BrowserAccessibilityComWin::get_nRows(long* row_count) { |
| 1150 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_N_ROWS); | |
| 1151 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 943 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1152 if (!owner()) | 944 if (!owner()) |
| 1153 return E_FAIL; | 945 return E_FAIL; |
| 1154 | 946 |
| 1155 return AXPlatformNodeWin::get_nRows(row_count); | 947 return AXPlatformNodeWin::get_nRows(row_count); |
| 1156 } | 948 } |
| 1157 | 949 |
| 1158 STDMETHODIMP BrowserAccessibilityComWin::get_nSelectedChildren( | 950 STDMETHODIMP BrowserAccessibilityComWin::get_nSelectedChildren( |
| 1159 long* cell_count) { | 951 long* cell_count) { |
| 1160 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_N_SELECTED_CHILDREN); | |
| 1161 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 952 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1162 if (!owner()) | 953 if (!owner()) |
| 1163 return E_FAIL; | 954 return E_FAIL; |
| 1164 | 955 |
| 1165 return AXPlatformNodeWin::get_nSelectedChildren(cell_count); | 956 return AXPlatformNodeWin::get_nSelectedChildren(cell_count); |
| 1166 } | 957 } |
| 1167 | 958 |
| 1168 STDMETHODIMP BrowserAccessibilityComWin::get_nSelectedColumns( | 959 STDMETHODIMP BrowserAccessibilityComWin::get_nSelectedColumns( |
| 1169 long* column_count) { | 960 long* column_count) { |
| 1170 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_N_SELECTED_COLUMNS); | |
| 1171 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 961 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1172 if (!owner()) | 962 if (!owner()) |
| 1173 return E_FAIL; | 963 return E_FAIL; |
| 1174 | 964 |
| 1175 return AXPlatformNodeWin::get_nSelectedColumns(column_count); | 965 return AXPlatformNodeWin::get_nSelectedColumns(column_count); |
| 1176 } | 966 } |
| 1177 | 967 |
| 1178 STDMETHODIMP BrowserAccessibilityComWin::get_nSelectedRows(long* row_count) { | 968 STDMETHODIMP BrowserAccessibilityComWin::get_nSelectedRows(long* row_count) { |
| 1179 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_N_SELECTED_ROWS); | |
| 1180 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 969 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1181 if (!owner()) | 970 if (!owner()) |
| 1182 return E_FAIL; | 971 return E_FAIL; |
| 1183 | 972 |
| 1184 return AXPlatformNodeWin::get_nSelectedRows(row_count); | 973 return AXPlatformNodeWin::get_nSelectedRows(row_count); |
| 1185 } | 974 } |
| 1186 | 975 |
| 1187 STDMETHODIMP BrowserAccessibilityComWin::get_rowDescription(long row, | 976 STDMETHODIMP BrowserAccessibilityComWin::get_rowDescription(long row, |
| 1188 BSTR* description) { | 977 BSTR* description) { |
| 1189 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ROW_DESCRIPTION); | |
| 1190 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 978 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1191 if (!owner()) | 979 if (!owner()) |
| 1192 return E_FAIL; | 980 return E_FAIL; |
| 1193 | 981 |
| 1194 return AXPlatformNodeWin::get_rowDescription(row, description); | 982 return AXPlatformNodeWin::get_rowDescription(row, description); |
| 1195 } | 983 } |
| 1196 | 984 |
| 1197 STDMETHODIMP BrowserAccessibilityComWin::get_rowExtentAt(long row, | 985 STDMETHODIMP BrowserAccessibilityComWin::get_rowExtentAt(long row, |
| 1198 long column, | 986 long column, |
| 1199 long* n_rows_spanned) { | 987 long* n_rows_spanned) { |
| 1200 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ROW_EXTENT_AT); | |
| 1201 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 988 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1202 if (!owner()) | 989 if (!owner()) |
| 1203 return E_FAIL; | 990 return E_FAIL; |
| 1204 | 991 |
| 1205 return AXPlatformNodeWin::get_rowExtentAt(row, column, n_rows_spanned); | 992 return AXPlatformNodeWin::get_rowExtentAt(row, column, n_rows_spanned); |
| 1206 } | 993 } |
| 1207 | 994 |
| 1208 STDMETHODIMP BrowserAccessibilityComWin::get_rowHeader( | 995 STDMETHODIMP BrowserAccessibilityComWin::get_rowHeader( |
| 1209 IAccessibleTable** accessible_table, | 996 IAccessibleTable** accessible_table, |
| 1210 long* starting_column_index) { | 997 long* starting_column_index) { |
| 1211 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ROW_HEADER); | |
| 1212 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 998 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1213 if (!owner()) | 999 if (!owner()) |
| 1214 return E_FAIL; | 1000 return E_FAIL; |
| 1215 | 1001 |
| 1216 return AXPlatformNodeWin::get_rowHeader(accessible_table, | 1002 return AXPlatformNodeWin::get_rowHeader(accessible_table, |
| 1217 starting_column_index); | 1003 starting_column_index); |
| 1218 } | 1004 } |
| 1219 | 1005 |
| 1220 STDMETHODIMP BrowserAccessibilityComWin::get_rowIndex(long cell_index, | 1006 STDMETHODIMP BrowserAccessibilityComWin::get_rowIndex(long cell_index, |
| 1221 long* row_index) { | 1007 long* row_index) { |
| 1222 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ROW_INDEX); | |
| 1223 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 1008 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1224 if (!owner()) | 1009 if (!owner()) |
| 1225 return E_FAIL; | 1010 return E_FAIL; |
| 1226 | 1011 |
| 1227 return AXPlatformNodeWin::get_rowIndex(cell_index, row_index); | 1012 return AXPlatformNodeWin::get_rowIndex(cell_index, row_index); |
| 1228 } | 1013 } |
| 1229 | 1014 |
| 1230 STDMETHODIMP BrowserAccessibilityComWin::get_selectedChildren( | 1015 STDMETHODIMP BrowserAccessibilityComWin::get_selectedChildren( |
| 1231 long max_children, | 1016 long max_children, |
| 1232 long** children, | 1017 long** children, |
| 1233 long* n_children) { | 1018 long* n_children) { |
| 1234 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_SELECTED_CHILDREN); | |
| 1235 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 1019 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1236 if (!owner()) | 1020 if (!owner()) |
| 1237 return E_FAIL; | 1021 return E_FAIL; |
| 1238 | 1022 |
| 1239 return AXPlatformNodeWin::get_selectedChildren(max_children, children, | 1023 return AXPlatformNodeWin::get_selectedChildren(max_children, children, |
| 1240 n_children); | 1024 n_children); |
| 1241 } | 1025 } |
| 1242 | 1026 |
| 1243 STDMETHODIMP BrowserAccessibilityComWin::get_selectedColumns(long max_columns, | 1027 STDMETHODIMP BrowserAccessibilityComWin::get_selectedColumns(long max_columns, |
| 1244 long** columns, | 1028 long** columns, |
| 1245 long* n_columns) { | 1029 long* n_columns) { |
| 1246 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_SELECTED_COLUMNS); | |
| 1247 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 1030 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1248 if (!owner()) | 1031 if (!owner()) |
| 1249 return E_FAIL; | 1032 return E_FAIL; |
| 1250 | 1033 |
| 1251 return AXPlatformNodeWin::get_selectedColumns(max_columns, columns, | 1034 return AXPlatformNodeWin::get_selectedColumns(max_columns, columns, |
| 1252 n_columns); | 1035 n_columns); |
| 1253 } | 1036 } |
| 1254 | 1037 |
| 1255 STDMETHODIMP BrowserAccessibilityComWin::get_selectedRows(long max_rows, | 1038 STDMETHODIMP BrowserAccessibilityComWin::get_selectedRows(long max_rows, |
| 1256 long** rows, | 1039 long** rows, |
| 1257 long* n_rows) { | 1040 long* n_rows) { |
| 1258 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_SELECTED_ROWS); | |
| 1259 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 1041 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1260 if (!owner()) | 1042 if (!owner()) |
| 1261 return E_FAIL; | 1043 return E_FAIL; |
| 1262 | 1044 |
| 1263 return AXPlatformNodeWin::get_selectedRows(max_rows, rows, n_rows); | 1045 return AXPlatformNodeWin::get_selectedRows(max_rows, rows, n_rows); |
| 1264 } | 1046 } |
| 1265 | 1047 |
| 1266 STDMETHODIMP BrowserAccessibilityComWin::get_summary(IUnknown** accessible) { | 1048 STDMETHODIMP BrowserAccessibilityComWin::get_summary(IUnknown** accessible) { |
| 1267 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_SUMMARY); | |
| 1268 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 1049 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1269 if (!owner()) | 1050 if (!owner()) |
| 1270 return E_FAIL; | 1051 return E_FAIL; |
| 1271 | 1052 |
| 1272 return AXPlatformNodeWin::get_summary(accessible); | 1053 return AXPlatformNodeWin::get_summary(accessible); |
| 1273 } | 1054 } |
| 1274 | 1055 |
| 1275 STDMETHODIMP BrowserAccessibilityComWin::get_isColumnSelected( | 1056 STDMETHODIMP BrowserAccessibilityComWin::get_isColumnSelected( |
| 1276 long column, | 1057 long column, |
| 1277 boolean* is_selected) { | 1058 boolean* is_selected) { |
| 1278 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_IS_COLUMN_SELECTED); | |
| 1279 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 1059 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1280 if (!owner()) | 1060 if (!owner()) |
| 1281 return E_FAIL; | 1061 return E_FAIL; |
| 1282 | 1062 |
| 1283 return AXPlatformNodeWin::get_isColumnSelected(column, is_selected); | 1063 return AXPlatformNodeWin::get_isColumnSelected(column, is_selected); |
| 1284 } | 1064 } |
| 1285 | 1065 |
| 1286 STDMETHODIMP BrowserAccessibilityComWin::get_isRowSelected( | 1066 STDMETHODIMP BrowserAccessibilityComWin::get_isRowSelected( |
| 1287 long row, | 1067 long row, |
| 1288 boolean* is_selected) { | 1068 boolean* is_selected) { |
| 1289 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_IS_ROW_SELECTED); | |
| 1290 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 1069 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1291 if (!owner()) | 1070 if (!owner()) |
| 1292 return E_FAIL; | 1071 return E_FAIL; |
| 1293 | 1072 |
| 1294 return AXPlatformNodeWin::get_isRowSelected(row, is_selected); | 1073 return AXPlatformNodeWin::get_isRowSelected(row, is_selected); |
| 1295 } | 1074 } |
| 1296 | 1075 |
| 1297 STDMETHODIMP BrowserAccessibilityComWin::get_isSelected(long row, | 1076 STDMETHODIMP BrowserAccessibilityComWin::get_isSelected(long row, |
| 1298 long column, | 1077 long column, |
| 1299 boolean* is_selected) { | 1078 boolean* is_selected) { |
| 1300 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_IS_SELECTED); | |
| 1301 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 1079 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1302 if (!owner()) | 1080 if (!owner()) |
| 1303 return E_FAIL; | 1081 return E_FAIL; |
| 1304 | 1082 |
| 1305 return AXPlatformNodeWin::get_isSelected(row, column, is_selected); | 1083 return AXPlatformNodeWin::get_isSelected(row, column, is_selected); |
| 1306 } | 1084 } |
| 1307 | 1085 |
| 1308 STDMETHODIMP BrowserAccessibilityComWin::get_rowColumnExtentsAtIndex( | 1086 STDMETHODIMP BrowserAccessibilityComWin::get_rowColumnExtentsAtIndex( |
| 1309 long index, | 1087 long index, |
| 1310 long* row, | 1088 long* row, |
| 1311 long* column, | 1089 long* column, |
| 1312 long* row_extents, | 1090 long* row_extents, |
| 1313 long* column_extents, | 1091 long* column_extents, |
| 1314 boolean* is_selected) { | 1092 boolean* is_selected) { |
| 1315 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ROW_COLUMN_EXTENTS_AT_INDEX); | |
| 1316 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 1093 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1317 if (!owner()) | 1094 if (!owner()) |
| 1318 return E_FAIL; | 1095 return E_FAIL; |
| 1319 | 1096 |
| 1320 return AXPlatformNodeWin::get_rowColumnExtentsAtIndex( | 1097 return AXPlatformNodeWin::get_rowColumnExtentsAtIndex( |
| 1321 index, row, column, row_extents, column_extents, is_selected); | 1098 index, row, column, row_extents, column_extents, is_selected); |
| 1322 } | 1099 } |
| 1323 | 1100 |
| 1324 STDMETHODIMP BrowserAccessibilityComWin::selectRow(long row) { | 1101 STDMETHODIMP BrowserAccessibilityComWin::selectRow(long row) { |
| 1325 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_SELECT_ROW); | |
| 1326 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 1102 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1327 if (!owner()) | 1103 if (!owner()) |
| 1328 return E_FAIL; | 1104 return E_FAIL; |
| 1329 | 1105 |
| 1330 return AXPlatformNodeWin::selectRow(row); | 1106 return AXPlatformNodeWin::selectRow(row); |
| 1331 } | 1107 } |
| 1332 | 1108 |
| 1333 STDMETHODIMP BrowserAccessibilityComWin::selectColumn(long column) { | 1109 STDMETHODIMP BrowserAccessibilityComWin::selectColumn(long column) { |
| 1334 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_SELECT_COLUMN); | |
| 1335 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 1110 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1336 if (!owner()) | 1111 if (!owner()) |
| 1337 return E_FAIL; | 1112 return E_FAIL; |
| 1338 | 1113 |
| 1339 return AXPlatformNodeWin::selectColumn(column); | 1114 return AXPlatformNodeWin::selectColumn(column); |
| 1340 } | 1115 } |
| 1341 | 1116 |
| 1342 STDMETHODIMP BrowserAccessibilityComWin::unselectRow(long row) { | 1117 STDMETHODIMP BrowserAccessibilityComWin::unselectRow(long row) { |
| 1343 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_UNSELECT_ROW); | |
| 1344 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 1118 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1345 if (!owner()) | 1119 if (!owner()) |
| 1346 return E_FAIL; | 1120 return E_FAIL; |
| 1347 | 1121 |
| 1348 return AXPlatformNodeWin::unselectRow(row); | 1122 return AXPlatformNodeWin::unselectRow(row); |
| 1349 } | 1123 } |
| 1350 | 1124 |
| 1351 STDMETHODIMP BrowserAccessibilityComWin::unselectColumn(long column) { | 1125 STDMETHODIMP BrowserAccessibilityComWin::unselectColumn(long column) { |
| 1352 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_UNSELECT_COLUMN); | |
| 1353 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 1126 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1354 if (!owner()) | 1127 if (!owner()) |
| 1355 return E_FAIL; | 1128 return E_FAIL; |
| 1356 | 1129 |
| 1357 return AXPlatformNodeWin::unselectColumn(column); | 1130 return AXPlatformNodeWin::unselectColumn(column); |
| 1358 } | 1131 } |
| 1359 | 1132 |
| 1360 STDMETHODIMP | 1133 STDMETHODIMP |
| 1361 BrowserAccessibilityComWin::get_modelChange(IA2TableModelChange* model_change) { | 1134 BrowserAccessibilityComWin::get_modelChange(IA2TableModelChange* model_change) { |
| 1362 if (!owner()) | 1135 if (!owner()) |
| 1363 return E_FAIL; | 1136 return E_FAIL; |
| 1364 | 1137 |
| 1365 return AXPlatformNodeWin::get_modelChange(model_change); | 1138 return AXPlatformNodeWin::get_modelChange(model_change); |
| 1366 } | 1139 } |
| 1367 | 1140 |
| 1368 // | 1141 // |
| 1369 // IAccessibleTable2 methods. | 1142 // IAccessibleTable2 methods. |
| 1370 // | 1143 // |
| 1371 | 1144 |
| 1372 STDMETHODIMP BrowserAccessibilityComWin::get_cellAt(long row, | 1145 STDMETHODIMP BrowserAccessibilityComWin::get_cellAt(long row, |
| 1373 long column, | 1146 long column, |
| 1374 IUnknown** cell) { | 1147 IUnknown** cell) { |
| 1375 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_CELL_AT); | |
| 1376 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader); | 1148 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader); |
| 1377 if (!owner()) | 1149 if (!owner()) |
| 1378 return E_FAIL; | 1150 return E_FAIL; |
| 1379 | 1151 |
| 1380 return AXPlatformNodeWin::get_cellAt(row, column, cell); | 1152 return AXPlatformNodeWin::get_cellAt(row, column, cell); |
| 1381 } | 1153 } |
| 1382 | 1154 |
| 1383 STDMETHODIMP BrowserAccessibilityComWin::get_nSelectedCells(long* cell_count) { | 1155 STDMETHODIMP BrowserAccessibilityComWin::get_nSelectedCells(long* cell_count) { |
| 1384 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_N_SELECTED_CELLS); | |
| 1385 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 1156 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1386 if (!owner()) | 1157 if (!owner()) |
| 1387 return E_FAIL; | 1158 return E_FAIL; |
| 1388 | 1159 |
| 1389 return AXPlatformNodeWin::get_nSelectedCells(cell_count); | 1160 return AXPlatformNodeWin::get_nSelectedCells(cell_count); |
| 1390 } | 1161 } |
| 1391 | 1162 |
| 1392 STDMETHODIMP BrowserAccessibilityComWin::get_selectedCells( | 1163 STDMETHODIMP BrowserAccessibilityComWin::get_selectedCells( |
| 1393 IUnknown*** cells, | 1164 IUnknown*** cells, |
| 1394 long* n_selected_cells) { | 1165 long* n_selected_cells) { |
| 1395 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_SELECTED_CELLS); | |
| 1396 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 1166 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1397 if (!owner()) | 1167 if (!owner()) |
| 1398 return E_FAIL; | 1168 return E_FAIL; |
| 1399 | 1169 |
| 1400 return AXPlatformNodeWin::get_selectedCells(cells, n_selected_cells); | 1170 return AXPlatformNodeWin::get_selectedCells(cells, n_selected_cells); |
| 1401 } | 1171 } |
| 1402 | 1172 |
| 1403 STDMETHODIMP BrowserAccessibilityComWin::get_selectedColumns(long** columns, | 1173 STDMETHODIMP BrowserAccessibilityComWin::get_selectedColumns(long** columns, |
| 1404 long* n_columns) { | 1174 long* n_columns) { |
| 1405 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_TABLE2_GET_SELECTED_COLUMNS); | |
| 1406 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 1175 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1407 if (!owner()) | 1176 if (!owner()) |
| 1408 return E_FAIL; | 1177 return E_FAIL; |
| 1409 | 1178 |
| 1410 return AXPlatformNodeWin::get_selectedColumns(columns, n_columns); | 1179 return AXPlatformNodeWin::get_selectedColumns(columns, n_columns); |
| 1411 } | 1180 } |
| 1412 | 1181 |
| 1413 STDMETHODIMP BrowserAccessibilityComWin::get_selectedRows(long** rows, | 1182 STDMETHODIMP BrowserAccessibilityComWin::get_selectedRows(long** rows, |
| 1414 long* n_rows) { | 1183 long* n_rows) { |
| 1415 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_TABLE2_GET_SELECTED_ROWS); | |
| 1416 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 1184 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1417 if (!owner()) | 1185 if (!owner()) |
| 1418 return E_FAIL; | 1186 return E_FAIL; |
| 1419 | 1187 |
| 1420 return AXPlatformNodeWin::get_selectedRows(rows, n_rows); | 1188 return AXPlatformNodeWin::get_selectedRows(rows, n_rows); |
| 1421 } | 1189 } |
| 1422 | 1190 |
| 1423 // | 1191 // |
| 1424 // IAccessibleTableCell methods. | 1192 // IAccessibleTableCell methods. |
| 1425 // | 1193 // |
| 1426 | 1194 |
| 1427 STDMETHODIMP BrowserAccessibilityComWin::get_columnExtent( | 1195 STDMETHODIMP BrowserAccessibilityComWin::get_columnExtent( |
| 1428 long* n_columns_spanned) { | 1196 long* n_columns_spanned) { |
| 1429 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_COLUMN_EXTENT); | |
| 1430 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 1197 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1431 if (!owner()) | 1198 if (!owner()) |
| 1432 return E_FAIL; | 1199 return E_FAIL; |
| 1433 | 1200 |
| 1434 return AXPlatformNodeWin::get_columnExtent(n_columns_spanned); | 1201 return AXPlatformNodeWin::get_columnExtent(n_columns_spanned); |
| 1435 } | 1202 } |
| 1436 | 1203 |
| 1437 STDMETHODIMP BrowserAccessibilityComWin::get_columnHeaderCells( | 1204 STDMETHODIMP BrowserAccessibilityComWin::get_columnHeaderCells( |
| 1438 IUnknown*** cell_accessibles, | 1205 IUnknown*** cell_accessibles, |
| 1439 long* n_column_header_cells) { | 1206 long* n_column_header_cells) { |
| 1440 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_COLUMN_HEADER_CELLS); | |
| 1441 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 1207 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1442 if (!owner()) | 1208 if (!owner()) |
| 1443 return E_FAIL; | 1209 return E_FAIL; |
| 1444 | 1210 |
| 1445 return AXPlatformNodeWin::get_columnHeaderCells(cell_accessibles, | 1211 return AXPlatformNodeWin::get_columnHeaderCells(cell_accessibles, |
| 1446 n_column_header_cells); | 1212 n_column_header_cells); |
| 1447 } | 1213 } |
| 1448 | 1214 |
| 1449 STDMETHODIMP BrowserAccessibilityComWin::get_columnIndex(long* column_index) { | 1215 STDMETHODIMP BrowserAccessibilityComWin::get_columnIndex(long* column_index) { |
| 1450 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_TABLECELL_GET_COLUMN_INDEX); | |
| 1451 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 1216 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1452 if (!owner()) | 1217 if (!owner()) |
| 1453 return E_FAIL; | 1218 return E_FAIL; |
| 1454 | 1219 |
| 1455 return AXPlatformNodeWin::get_columnIndex(column_index); | 1220 return AXPlatformNodeWin::get_columnIndex(column_index); |
| 1456 } | 1221 } |
| 1457 | 1222 |
| 1458 STDMETHODIMP BrowserAccessibilityComWin::get_rowExtent(long* n_rows_spanned) { | 1223 STDMETHODIMP BrowserAccessibilityComWin::get_rowExtent(long* n_rows_spanned) { |
| 1459 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ROW_EXTENT); | |
| 1460 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 1224 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1461 if (!owner()) | 1225 if (!owner()) |
| 1462 return E_FAIL; | 1226 return E_FAIL; |
| 1463 | 1227 |
| 1464 return AXPlatformNodeWin::get_rowExtent(n_rows_spanned); | 1228 return AXPlatformNodeWin::get_rowExtent(n_rows_spanned); |
| 1465 } | 1229 } |
| 1466 | 1230 |
| 1467 STDMETHODIMP BrowserAccessibilityComWin::get_rowHeaderCells( | 1231 STDMETHODIMP BrowserAccessibilityComWin::get_rowHeaderCells( |
| 1468 IUnknown*** cell_accessibles, | 1232 IUnknown*** cell_accessibles, |
| 1469 long* n_row_header_cells) { | 1233 long* n_row_header_cells) { |
| 1470 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ROW_HEADER_CELLS); | |
| 1471 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 1234 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1472 if (!owner()) | 1235 if (!owner()) |
| 1473 return E_FAIL; | 1236 return E_FAIL; |
| 1474 | 1237 |
| 1475 return AXPlatformNodeWin::get_rowHeaderCells(cell_accessibles, | 1238 return AXPlatformNodeWin::get_rowHeaderCells(cell_accessibles, |
| 1476 n_row_header_cells); | 1239 n_row_header_cells); |
| 1477 } | 1240 } |
| 1478 | 1241 |
| 1479 STDMETHODIMP BrowserAccessibilityComWin::get_rowIndex(long* row_index) { | 1242 STDMETHODIMP BrowserAccessibilityComWin::get_rowIndex(long* row_index) { |
| 1480 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_TABLECELL_GET_ROW_INDEX); | |
| 1481 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 1243 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1482 if (!owner()) | 1244 if (!owner()) |
| 1483 return E_FAIL; | 1245 return E_FAIL; |
| 1484 | 1246 |
| 1485 return AXPlatformNodeWin::get_rowIndex(row_index); | 1247 return AXPlatformNodeWin::get_rowIndex(row_index); |
| 1486 } | 1248 } |
| 1487 | 1249 |
| 1488 STDMETHODIMP BrowserAccessibilityComWin::get_isSelected(boolean* is_selected) { | 1250 STDMETHODIMP BrowserAccessibilityComWin::get_isSelected(boolean* is_selected) { |
| 1489 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_TABLECELL_GET_IS_SELECTED); | |
| 1490 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 1251 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1491 if (!owner()) | 1252 if (!owner()) |
| 1492 return E_FAIL; | 1253 return E_FAIL; |
| 1493 | 1254 |
| 1494 return AXPlatformNodeWin::get_isSelected(is_selected); | 1255 return AXPlatformNodeWin::get_isSelected(is_selected); |
| 1495 } | 1256 } |
| 1496 | 1257 |
| 1497 STDMETHODIMP BrowserAccessibilityComWin::get_rowColumnExtents( | 1258 STDMETHODIMP BrowserAccessibilityComWin::get_rowColumnExtents( |
| 1498 long* row_index, | 1259 long* row_index, |
| 1499 long* column_index, | 1260 long* column_index, |
| 1500 long* row_extents, | 1261 long* row_extents, |
| 1501 long* column_extents, | 1262 long* column_extents, |
| 1502 boolean* is_selected) { | 1263 boolean* is_selected) { |
| 1503 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ROW_COLUMN_EXTENTS); | |
| 1504 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 1264 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1505 if (!owner()) | 1265 if (!owner()) |
| 1506 return E_FAIL; | 1266 return E_FAIL; |
| 1507 | 1267 |
| 1508 return AXPlatformNodeWin::get_rowColumnExtents( | 1268 return AXPlatformNodeWin::get_rowColumnExtents( |
| 1509 row_index, column_index, row_extents, column_extents, is_selected); | 1269 row_index, column_index, row_extents, column_extents, is_selected); |
| 1510 } | 1270 } |
| 1511 | 1271 |
| 1512 STDMETHODIMP BrowserAccessibilityComWin::get_table(IUnknown** table) { | 1272 STDMETHODIMP BrowserAccessibilityComWin::get_table(IUnknown** table) { |
| 1513 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_TABLE); | |
| 1514 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); | 1273 AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
| 1515 if (!owner()) | 1274 if (!owner()) |
| 1516 return E_FAIL; | 1275 return E_FAIL; |
| 1517 | 1276 |
| 1518 return AXPlatformNodeWin::get_table(table); | 1277 return AXPlatformNodeWin::get_table(table); |
| 1519 } | 1278 } |
| 1520 | 1279 |
| 1521 // | 1280 // |
| 1522 // IAccessibleText methods. | 1281 // IAccessibleText methods. |
| 1523 // | 1282 // |
| (...skipping 3059 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4583 | 4342 |
| 4584 BrowserAccessibilityComWin* ToBrowserAccessibilityComWin( | 4343 BrowserAccessibilityComWin* ToBrowserAccessibilityComWin( |
| 4585 BrowserAccessibility* obj) { | 4344 BrowserAccessibility* obj) { |
| 4586 if (!obj || !obj->IsNative()) | 4345 if (!obj || !obj->IsNative()) |
| 4587 return nullptr; | 4346 return nullptr; |
| 4588 auto* result = static_cast<BrowserAccessibilityWin*>(obj)->GetCOM(); | 4347 auto* result = static_cast<BrowserAccessibilityWin*>(obj)->GetCOM(); |
| 4589 return result; | 4348 return result; |
| 4590 } | 4349 } |
| 4591 | 4350 |
| 4592 } // namespace content | 4351 } // namespace content |
| OLD | NEW |