| 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 |