1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CHROME_BROWSER_AUTOCOMPLETE_AUTOCOMPLETE_ACCESSIBILITY_H_ 6 #define CHROME_BROWSER_AUTOCOMPLETE_AUTOCOMPLETE_ACCESSIBILITY_H_ 7 #pragma once 8 9 #include <atlbase.h> 10 #include <atlcom.h> 11 #include <oleacc.h> 12 13 #include "base/basictypes.h" 14 #include "base/win/scoped_comptr.h" 15 16 class AutocompleteEditViewWin; 17 18 //////////////////////////////////////////////////////////////////////////////// 19 // 20 // AutocompleteAccessibility 21 // 22 // Class implementing the MSAA IAccessible COM interface for 23 // AutocompleteEditViewWin, providing accessibility to be used by screen 24 // readers and other assistive technology (AT). 25 // 26 //////////////////////////////////////////////////////////////////////////////// 27 class ATL_NO_VTABLE AutocompleteAccessibility 28 : public CComObjectRootEx<CComMultiThreadModel>, 29 public IDispatchImpl<IAccessible, &IID_IAccessible, &LIBID_Accessibility> { 30 public: 31 BEGIN_COM_MAP(AutocompleteAccessibility) 32 COM_INTERFACE_ENTRY2(IDispatch, IAccessible) 33 COM_INTERFACE_ENTRY(IAccessible) 34 END_COM_MAP() 35 36 AutocompleteAccessibility() {} 37 ~AutocompleteAccessibility() {} 38 39 HRESULT Initialize(const AutocompleteEditViewWin* edit_box); 40 41 // Supported IAccessible methods. 42 43 // Retrieves the number of accessible children. 44 STDMETHODIMP get_accChildCount(LONG* child_count); 45 46 // Retrieves an IDispatch interface pointer for the specified child. 47 STDMETHODIMP get_accChild(VARIANT var_child, IDispatch** disp_child); 48 49 // Retrieves the IDispatch interface of the object's parent. 50 STDMETHODIMP get_accParent(IDispatch** disp_parent); 51 52 // Traverses to another UI element and retrieves the object. 53 STDMETHODIMP accNavigate(LONG nav_dir, VARIANT start, VARIANT* end); 54 55 // Retrieves the object that has the keyboard focus. 56 STDMETHODIMP get_accFocus(VARIANT* focus_child); 57 58 // Retrieves the name of the specified object. 59 STDMETHODIMP get_accName(VARIANT var_id, BSTR* name); 60 61 // Retrieves the tooltip description. 62 STDMETHODIMP get_accDescription(VARIANT var_id, BSTR* desc); 63 64 // Returns the current value of the edit box. 65 STDMETHODIMP get_accValue(VARIANT var_id, BSTR* value); 66 67 // Retrieves the current state of the specified object. 68 STDMETHODIMP get_accState(VARIANT var_id, VARIANT* state); 69 70 // Retrieves information describing the role of the specified object. 71 STDMETHODIMP get_accRole(VARIANT var_id, VARIANT* role); 72 73 // Retrieves a string that describes the object's default action. 74 STDMETHODIMP get_accDefaultAction(VARIANT var_id, BSTR* default_action); 75 76 // Retrieves the specified object's current screen location. 77 STDMETHODIMP accLocation(LONG* x_left, LONG* y_top, LONG* width, LONG* height, 78 VARIANT var_id); 79 80 // Retrieves the child element or child object at a given point on the screen. 81 STDMETHODIMP accHitTest(LONG x_left, LONG y_top, VARIANT* child); 82 83 // Retrieves the specified object's shortcut. 84 STDMETHODIMP get_accKeyboardShortcut(VARIANT var_id, BSTR* access_key); 85 86 // Non-supported IAccessible methods. 87 88 // Out-dated and can be safely said to be very rarely used. 89 STDMETHODIMP accDoDefaultAction(VARIANT var_id); 90 91 // Selections not applicable to views. 92 STDMETHODIMP get_accSelection(VARIANT* selected); 93 STDMETHODIMP accSelect(LONG flags_sel, VARIANT var_id); 94 95 // Help functions not supported. 96 STDMETHODIMP get_accHelp(VARIANT var_id, BSTR* help); 97 STDMETHODIMP get_accHelpTopic(BSTR* help_file, VARIANT var_id, 98 LONG* topic_id); 99 100 // Deprecated functions, not implemented here. 101 STDMETHODIMP put_accName(VARIANT var_id, BSTR put_name); 102 STDMETHODIMP put_accValue(VARIANT var_id, BSTR put_val); 103 104 protected: 105 // A pointer containing the Windows' default IAccessible implementation for 106 // this object. Used where it is acceptable to return default MSAA 107 // information. 108 base::win::ScopedComPtr<IAccessible> default_accessibility_server_; 109 110 private: 111 const AutocompleteEditViewWin* edit_box_; 112 113 DISALLOW_COPY_AND_ASSIGN(AutocompleteAccessibility); 114 }; 115 116 #endif // CHROME_BROWSER_AUTOCOMPLETE_AUTOCOMPLETE_ACCESSIBILITY_H_ 117