| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "views/accessibility/view_accessibility.h" | 5 #include "views/accessibility/view_accessibility.h" |
| 6 | 6 |
| 7 #include "app/view_prop.h" | 7 #include "app/view_prop.h" |
| 8 #include "views/controls/button/native_button.h" |
| 8 #include "views/widget/widget.h" | 9 #include "views/widget/widget.h" |
| 9 #include "views/widget/widget_win.h" | 10 #include "views/widget/widget_win.h" |
| 10 | 11 |
| 11 const char kViewsNativeHostPropForAccessibility[] = | 12 const char kViewsNativeHostPropForAccessibility[] = |
| 12 "Views_NativeViewHostHWNDForAccessibility"; | 13 "Views_NativeViewHostHWNDForAccessibility"; |
| 13 | 14 |
| 14 // static | 15 // static |
| 15 scoped_refptr<ViewAccessibility> ViewAccessibility::Create(views::View* view) { | 16 scoped_refptr<ViewAccessibility> ViewAccessibility::Create(views::View* view) { |
| 16 CComObject<ViewAccessibility>* instance = NULL; | 17 CComObject<ViewAccessibility>* instance = NULL; |
| 17 HRESULT hr = CComObject<ViewAccessibility>::CreateInstance(&instance); | 18 HRESULT hr = CComObject<ViewAccessibility>::CreateInstance(&instance); |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 76 child->vt = VT_I4; | 77 child->vt = VT_I4; |
| 77 child->lVal = CHILDID_SELF; | 78 child->lVal = CHILDID_SELF; |
| 78 } else { | 79 } else { |
| 79 child->vt = VT_DISPATCH; | 80 child->vt = VT_DISPATCH; |
| 80 child->pdispVal = GetAccessibleForView(view); | 81 child->pdispVal = GetAccessibleForView(view); |
| 81 child->pdispVal->AddRef(); | 82 child->pdispVal->AddRef(); |
| 82 } | 83 } |
| 83 return S_OK; | 84 return S_OK; |
| 84 } | 85 } |
| 85 | 86 |
| 87 HRESULT ViewAccessibility::accDoDefaultAction(VARIANT var_id) { |
| 88 if (!IsValidId(var_id)) |
| 89 return E_INVALIDARG; |
| 90 |
| 91 if (view_->GetClassName() == views::NativeButton::kViewClassName) { |
| 92 views::NativeButton* native_button = |
| 93 static_cast<views::NativeButton*>(view_); |
| 94 native_button->ButtonPressed(); |
| 95 return S_OK; |
| 96 } |
| 97 |
| 98 // The object does not support the method. This value is returned for |
| 99 // controls that do not perform actions, such as edit fields. |
| 100 return DISP_E_MEMBERNOTFOUND; |
| 101 } |
| 102 |
| 86 STDMETHODIMP ViewAccessibility::accLocation( | 103 STDMETHODIMP ViewAccessibility::accLocation( |
| 87 LONG* x_left, LONG* y_top, LONG* width, LONG* height, VARIANT var_id) { | 104 LONG* x_left, LONG* y_top, LONG* width, LONG* height, VARIANT var_id) { |
| 88 if (!IsValidId(var_id) || !x_left || !y_top || !width || !height) | 105 if (!IsValidId(var_id) || !x_left || !y_top || !width || !height) |
| 89 return E_INVALIDARG; | 106 return E_INVALIDARG; |
| 90 | 107 |
| 91 if (!view_) | 108 if (!view_) |
| 92 return E_FAIL; | 109 return E_FAIL; |
| 93 | 110 |
| 94 gfx::Rect view_bounds; | 111 gfx::Rect view_bounds; |
| 95 // Retrieving the parent View to be used for converting from view-to-screen | 112 // Retrieving the parent View to be used for converting from view-to-screen |
| (...skipping 432 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 528 | 545 |
| 529 if (view->HasFocus()) | 546 if (view->HasFocus()) |
| 530 msaa_state->lVal |= STATE_SYSTEM_FOCUSED; | 547 msaa_state->lVal |= STATE_SYSTEM_FOCUSED; |
| 531 | 548 |
| 532 // Add on any view-specific states. | 549 // Add on any view-specific states. |
| 533 msaa_state->lVal |= MSAAState(view->GetAccessibleState()); | 550 msaa_state->lVal |= MSAAState(view->GetAccessibleState()); |
| 534 } | 551 } |
| 535 | 552 |
| 536 // IAccessible functions not supported. | 553 // IAccessible functions not supported. |
| 537 | 554 |
| 538 HRESULT ViewAccessibility::accDoDefaultAction(VARIANT var_id) { | |
| 539 return E_NOTIMPL; | |
| 540 } | |
| 541 | |
| 542 STDMETHODIMP ViewAccessibility::get_accSelection(VARIANT* selected) { | 555 STDMETHODIMP ViewAccessibility::get_accSelection(VARIANT* selected) { |
| 543 if (selected) | 556 if (selected) |
| 544 selected->vt = VT_EMPTY; | 557 selected->vt = VT_EMPTY; |
| 545 return E_NOTIMPL; | 558 return E_NOTIMPL; |
| 546 } | 559 } |
| 547 | 560 |
| 548 STDMETHODIMP ViewAccessibility::accSelect(LONG flagsSelect, VARIANT var_id) { | 561 STDMETHODIMP ViewAccessibility::accSelect(LONG flagsSelect, VARIANT var_id) { |
| 549 return E_NOTIMPL; | 562 return E_NOTIMPL; |
| 550 } | 563 } |
| 551 | 564 |
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 726 HWND native_view_window , IAccessible** accessible) { | 739 HWND native_view_window , IAccessible** accessible) { |
| 727 if (IsWindow(native_view_window)) { | 740 if (IsWindow(native_view_window)) { |
| 728 LRESULT ret = SendMessage(native_view_window, WM_GETOBJECT, 0, | 741 LRESULT ret = SendMessage(native_view_window, WM_GETOBJECT, 0, |
| 729 OBJID_CLIENT); | 742 OBJID_CLIENT); |
| 730 return ObjectFromLresult(ret, IID_IDispatch, 0, | 743 return ObjectFromLresult(ret, IID_IDispatch, 0, |
| 731 reinterpret_cast<void**>(accessible)); | 744 reinterpret_cast<void**>(accessible)); |
| 732 } | 745 } |
| 733 | 746 |
| 734 return E_FAIL; | 747 return E_FAIL; |
| 735 } | 748 } |
| OLD | NEW |