| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/browser/accessibility/browser_accessibility_win.h" | 5 #include "content/browser/accessibility/browser_accessibility_win.h" |
| 6 | 6 |
| 7 #include <UIAutomationClient.h> | 7 #include <UIAutomationClient.h> |
| 8 #include <UIAutomationCoreApi.h> | 8 #include <UIAutomationCoreApi.h> |
| 9 | 9 |
| 10 #include "base/strings/string_number_conversions.h" | 10 #include "base/strings/string_number_conversions.h" |
| 11 #include "base/strings/string_split.h" | 11 #include "base/strings/string_split.h" |
| 12 #include "base/strings/string_util.h" | 12 #include "base/strings/string_util.h" |
| 13 #include "base/strings/utf_string_conversions.h" | 13 #include "base/strings/utf_string_conversions.h" |
| 14 #include "base/win/enum_variant.h" | 14 #include "base/win/enum_variant.h" |
| 15 #include "base/win/scoped_comptr.h" | 15 #include "base/win/scoped_comptr.h" |
| 16 #include "base/win/windows_version.h" | 16 #include "base/win/windows_version.h" |
| 17 #include "content/browser/accessibility/browser_accessibility_manager_win.h" | 17 #include "content/browser/accessibility/browser_accessibility_manager_win.h" |
| 18 #include "content/browser/accessibility/browser_accessibility_state_impl.h" | 18 #include "content/browser/accessibility/browser_accessibility_state_impl.h" |
| 19 #include "content/common/accessibility_messages.h" | 19 #include "content/common/accessibility_messages.h" |
| 20 #include "content/public/common/content_client.h" | 20 #include "content/public/common/content_client.h" |
| 21 #include "ui/accessibility/ax_text_utils.h" | 21 #include "ui/accessibility/ax_text_utils.h" |
| 22 #include "ui/base/win/accessibility_ids_win.h" | 22 #include "ui/base/win/accessibility_ids_win.h" |
| 23 #include "ui/base/win/accessibility_misc_utils.h" | 23 #include "ui/base/win/accessibility_misc_utils.h" |
| 24 #include "ui/base/win/atl_module.h" |
| 24 | 25 |
| 25 namespace content { | 26 namespace content { |
| 26 | 27 |
| 27 // These nonstandard GUIDs are taken directly from the Mozilla sources | 28 // These nonstandard GUIDs are taken directly from the Mozilla sources |
| 28 // (accessible/src/msaa/nsAccessNodeWrap.cpp); some documentation is here: | 29 // (accessible/src/msaa/nsAccessNodeWrap.cpp); some documentation is here: |
| 29 // http://developer.mozilla.org/en/Accessibility/AT-APIs/ImplementationFeatures/
MSAA | 30 // http://developer.mozilla.org/en/Accessibility/AT-APIs/ImplementationFeatures/
MSAA |
| 30 const GUID GUID_ISimpleDOM = { | 31 const GUID GUID_ISimpleDOM = { |
| 31 0x0c539790, 0x12e4, 0x11cf, | 32 0x0c539790, 0x12e4, 0x11cf, |
| 32 0xb6, 0x61, 0x00, 0xaa, 0x00, 0x4c, 0xd6, 0xd8}; | 33 0xb6, 0x61, 0x00, 0xaa, 0x00, 0x4c, 0xd6, 0xd8}; |
| 33 const GUID GUID_IAccessibleContentDocument = { | 34 const GUID GUID_IAccessibleContentDocument = { |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 172 | 173 |
| 173 return S_OK; | 174 return S_OK; |
| 174 } | 175 } |
| 175 | 176 |
| 176 // | 177 // |
| 177 // BrowserAccessibilityWin | 178 // BrowserAccessibilityWin |
| 178 // | 179 // |
| 179 | 180 |
| 180 // static | 181 // static |
| 181 BrowserAccessibility* BrowserAccessibility::Create() { | 182 BrowserAccessibility* BrowserAccessibility::Create() { |
| 183 ui::win::CreateATLModuleIfNeeded(); |
| 182 CComObject<BrowserAccessibilityWin>* instance; | 184 CComObject<BrowserAccessibilityWin>* instance; |
| 183 HRESULT hr = CComObject<BrowserAccessibilityWin>::CreateInstance(&instance); | 185 HRESULT hr = CComObject<BrowserAccessibilityWin>::CreateInstance(&instance); |
| 184 DCHECK(SUCCEEDED(hr)); | 186 DCHECK(SUCCEEDED(hr)); |
| 185 return instance->NewReference(); | 187 return instance->NewReference(); |
| 186 } | 188 } |
| 187 | 189 |
| 188 BrowserAccessibilityWin* BrowserAccessibility::ToBrowserAccessibilityWin() { | 190 BrowserAccessibilityWin* BrowserAccessibility::ToBrowserAccessibilityWin() { |
| 189 return static_cast<BrowserAccessibilityWin*>(this); | 191 return static_cast<BrowserAccessibilityWin*>(this); |
| 190 } | 192 } |
| 191 | 193 |
| (...skipping 3598 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3790 // The role should always be set. | 3792 // The role should always be set. |
| 3791 DCHECK(!role_name_.empty() || ia_role_); | 3793 DCHECK(!role_name_.empty() || ia_role_); |
| 3792 | 3794 |
| 3793 // If we didn't explicitly set the IAccessible2 role, make it the same | 3795 // If we didn't explicitly set the IAccessible2 role, make it the same |
| 3794 // as the MSAA role. | 3796 // as the MSAA role. |
| 3795 if (!ia2_role_) | 3797 if (!ia2_role_) |
| 3796 ia2_role_ = ia_role_; | 3798 ia2_role_ = ia_role_; |
| 3797 } | 3799 } |
| 3798 | 3800 |
| 3799 } // namespace content | 3801 } // namespace content |
| OLD | NEW |