diff options
author | ctguil@chromium.org <ctguil@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-22 00:03:22 +0000 |
---|---|---|
committer | ctguil@chromium.org <ctguil@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-22 00:03:22 +0000 |
commit | 5fe1572eaaec0f18f8126b9d6d48e7f575e9bcb2 (patch) | |
tree | 185fc94efbf78529bd3cbfdf9fb04f04f8e64fe3 /views/widget | |
parent | 3b12395d378c0740947438ddeb770de52ad3162a (diff) | |
download | chromium_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.cc | 36 |
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) { |