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 |