summaryrefslogtreecommitdiffstats
path: root/views/widget
diff options
context:
space:
mode:
authorctguil@chromium.org <ctguil@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-22 00:03:22 +0000
committerctguil@chromium.org <ctguil@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-22 00:03:22 +0000
commit5fe1572eaaec0f18f8126b9d6d48e7f575e9bcb2 (patch)
tree185fc94efbf78529bd3cbfdf9fb04f04f8e64fe3 /views/widget
parent3b12395d378c0740947438ddeb770de52ad3162a (diff)
downloadchromium_src-5fe1572eaaec0f18f8126b9d6d48e7f575e9bcb2.zip
chromium_src-5fe1572eaaec0f18f8126b9d6d48e7f575e9bcb2.tar.gz
chromium_src-5fe1572eaaec0f18f8126b9d6d48e7f575e9bcb2.tar.bz2
Some cleanup of view accessibility and view accessibility wrapper.
1. Remove the ViewAccessibilityWrapper class. The view can directly manage it's ViewAccessibility. 2. Always use GetAccessibleForView to retrieve a view's associated accessibility object. This ensures that the correct accessibility object is returned for native view host objects. 3. Update get_accFocus to use FocusManager. 4. Move oleacc guid definitions to view_win.cc. BUG=none TEST=interactive_ui_tests:BrowserViewsAccessibilityTest.TestBrowserRootViewAccObj TEST=Manual: I can select the accessibility object of a native view host within AccExplorer32.exe. Review URL: http://codereview.chromium.org/4047001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@63451 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views/widget')
-rw-r--r--views/widget/widget_win.cc36
1 files changed, 5 insertions, 31 deletions
diff --git a/views/widget/widget_win.cc b/views/widget/widget_win.cc
index 5db4c82..102b48d 100644
--- a/views/widget/widget_win.cc
+++ b/views/widget/widget_win.cc
@@ -631,39 +631,13 @@ LRESULT WidgetWin::OnGetObject(UINT uMsg, WPARAM w_param, LPARAM l_param) {
// Accessibility readers will send an OBJID_CLIENT message
if (OBJID_CLIENT == l_param) {
- // If our MSAA root is already created, reuse that pointer. Otherwise,
- // create a new one.
- if (!accessibility_root_) {
- CComObject<ViewAccessibility>* instance = NULL;
+ // Retrieve MSAA dispatch object for the root view.
+ ScopedComPtr<IAccessible> root(
+ ViewAccessibility::GetAccessibleForView(GetRootView()));
- HRESULT hr = CComObject<ViewAccessibility>::CreateInstance(&instance);
- DCHECK(SUCCEEDED(hr));
-
- if (!instance) {
- // Return with failure.
- return static_cast<LRESULT>(0L);
- }
-
- ScopedComPtr<IAccessible> accessibility_instance(instance);
-
- if (!SUCCEEDED(instance->Initialize(root_view_.get()))) {
- // Return with failure.
- return static_cast<LRESULT>(0L);
- }
-
- // All is well, assign the temp instance to the class smart pointer
- accessibility_root_.Attach(accessibility_instance.Detach());
-
- if (!accessibility_root_) {
- // Return with failure.
- return static_cast<LRESULT>(0L);
- }
- }
-
- // Create a reference to ViewAccessibility that MSAA will marshall
- // to the client.
+ // Create a reference that MSAA will marshall to the client.
reference_result = LresultFromObject(IID_IAccessible, w_param,
- static_cast<IAccessible*>(accessibility_root_));
+ static_cast<IAccessible*>(root.Detach()));
}
if (OBJID_CUSTOM == l_param) {