| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 #ifndef CHROME_BROWSER_BROWSER_ACCESSIBILITY_H_ | 5 #ifndef CHROME_BROWSER_BROWSER_ACCESSIBILITY_H_ |
| 6 #define CHROME_BROWSER_BROWSER_ACCESSIBILITY_H_ | 6 #define CHROME_BROWSER_BROWSER_ACCESSIBILITY_H_ |
| 7 | 7 |
| 8 #include <atlbase.h> | 8 #include <atlbase.h> |
| 9 #include <atlcom.h> | 9 #include <atlcom.h> |
| 10 | 10 |
| 11 #include <oleacc.h> | 11 #include <oleacc.h> |
| 12 | 12 |
| 13 #include "base/basictypes.h" | |
| 14 #include "webkit/glue/webaccessibility.h" | 13 #include "webkit/glue/webaccessibility.h" |
| 15 | 14 |
| 16 using webkit_glue::WebAccessibility; | 15 using webkit_glue::WebAccessibility; |
| 17 | 16 |
| 18 //////////////////////////////////////////////////////////////////////////////// | 17 //////////////////////////////////////////////////////////////////////////////// |
| 19 // | 18 // |
| 20 // BrowserAccessibility | 19 // BrowserAccessibility |
| 21 // | 20 // |
| 22 // Class implementing the MSAA IAccessible COM interface for the | 21 // Class implementing the MSAA IAccessible COM interface for the |
| 23 // Browser-Renderer communication of MSAA information, providing accessibility | 22 // Browser-Renderer communication of MSAA information, providing accessibility |
| 24 // to be used by screen readers and other assistive technology (AT). | 23 // to be used by screen readers and other assistive technology (AT). |
| 25 // | 24 // |
| 26 //////////////////////////////////////////////////////////////////////////////// | 25 //////////////////////////////////////////////////////////////////////////////// |
| 27 class ATL_NO_VTABLE BrowserAccessibility | 26 class ATL_NO_VTABLE BrowserAccessibility |
| 28 : public CComObjectRootEx<CComMultiThreadModel>, | 27 : public CComObjectRootEx<CComMultiThreadModel>, |
| 29 public IDispatchImpl<IAccessible, &IID_IAccessible, &LIBID_Accessibility> { | 28 public IDispatchImpl<IAccessible, &IID_IAccessible, &LIBID_Accessibility> { |
| 30 public: | 29 public: |
| 31 BEGIN_COM_MAP(BrowserAccessibility) | 30 BEGIN_COM_MAP(BrowserAccessibility) |
| 32 COM_INTERFACE_ENTRY2(IDispatch, IAccessible) | 31 COM_INTERFACE_ENTRY2(IDispatch, IAccessible) |
| 33 COM_INTERFACE_ENTRY(IAccessible) | 32 COM_INTERFACE_ENTRY(IAccessible) |
| 34 END_COM_MAP() | 33 END_COM_MAP() |
| 35 | 34 |
| 36 BrowserAccessibility(); | 35 BrowserAccessibility() {} |
| 37 ~BrowserAccessibility() {} | 36 ~BrowserAccessibility() {} |
| 38 | 37 |
| 38 HRESULT Initialize(int iaccessible_id, |
| 39 int routing_id, |
| 40 int process_id, |
| 41 HWND parent_hwnd); |
| 42 |
| 39 // Supported IAccessible methods. | 43 // Supported IAccessible methods. |
| 40 | 44 |
| 41 // Performs the default action on a given object. | 45 // Performs the default action on a given object. |
| 42 STDMETHODIMP accDoDefaultAction(VARIANT var_id); | 46 STDMETHODIMP accDoDefaultAction(VARIANT var_id); |
| 43 | 47 |
| 44 // Retrieves the child element or child object at a given point on the screen. | 48 // Retrieves the child element or child object at a given point on the screen. |
| 45 STDMETHODIMP accHitTest(LONG x_left, LONG y_top, VARIANT* child); | 49 STDMETHODIMP accHitTest(LONG x_left, LONG y_top, VARIANT* child); |
| 46 | 50 |
| 47 // Retrieves the specified object's current screen location. | 51 // Retrieves the specified object's current screen location. |
| 48 STDMETHODIMP accLocation(LONG* x_left, | 52 STDMETHODIMP accLocation(LONG* x_left, |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 84 // Retrieves information describing the role of the specified object. | 88 // Retrieves information describing the role of the specified object. |
| 85 STDMETHODIMP get_accRole(VARIANT var_id, VARIANT* role); | 89 STDMETHODIMP get_accRole(VARIANT var_id, VARIANT* role); |
| 86 | 90 |
| 87 // Retrieves the current state of the specified object. | 91 // Retrieves the current state of the specified object. |
| 88 STDMETHODIMP get_accState(VARIANT var_id, VARIANT* state); | 92 STDMETHODIMP get_accState(VARIANT var_id, VARIANT* state); |
| 89 | 93 |
| 90 // Returns the value associated with the object. | 94 // Returns the value associated with the object. |
| 91 STDMETHODIMP get_accValue(VARIANT var_id, BSTR* value); | 95 STDMETHODIMP get_accValue(VARIANT var_id, BSTR* value); |
| 92 | 96 |
| 93 // Non-supported (by WebKit) IAccessible methods. | 97 // Non-supported (by WebKit) IAccessible methods. |
| 94 STDMETHODIMP accSelect(LONG flags_sel, VARIANT var_id); | 98 STDMETHODIMP accSelect(LONG flags_sel, VARIANT var_id) { return E_NOTIMPL; } |
| 95 | 99 |
| 96 STDMETHODIMP get_accHelpTopic(BSTR* help_file, | 100 STDMETHODIMP get_accHelpTopic(BSTR* help_file, |
| 97 VARIANT var_id, | 101 VARIANT var_id, |
| 98 LONG* topic_id); | 102 LONG* topic_id); |
| 99 | 103 |
| 100 STDMETHODIMP get_accSelection(VARIANT* selected); | 104 STDMETHODIMP get_accSelection(VARIANT* selected); |
| 101 | 105 |
| 102 // Deprecated functions, not implemented here. | 106 // Deprecated functions, not implemented here. |
| 103 STDMETHODIMP put_accName(VARIANT var_id, BSTR put_name); | 107 STDMETHODIMP put_accName(VARIANT var_id, BSTR put_name) { return E_NOTIMPL; } |
| 104 STDMETHODIMP put_accValue(VARIANT var_id, BSTR put_val); | 108 STDMETHODIMP put_accValue(VARIANT var_id, BSTR put_val) { return E_NOTIMPL; } |
| 105 | 109 |
| 106 // Modify/retrieve the unique id of this IAccessible instance. | 110 // Accessors/mutators. |
| 107 void set_iaccessible_id(int iaccessible_id) { | 111 HWND parent_hwnd() const { return parent_hwnd_;} |
| 108 iaccessible_id_ = iaccessible_id; | |
| 109 } | |
| 110 int iaccessible_id() const { return iaccessible_id_; } | |
| 111 | |
| 112 // Modify/retrieve the unique id of this IAccessible's routing variables. | |
| 113 void set_instance_id(int instance_id) { | |
| 114 instance_id_ = instance_id; | |
| 115 } | |
| 116 int instance_id() const { return instance_id_; } | |
| 117 | 112 |
| 118 // Modify/retrieve the state (active/inactive) of this instance. | 113 // Modify/retrieve the state (active/inactive) of this instance. |
| 119 void set_instance_active(bool instance_active) { | 114 void set_instance_active(bool instance_active) { |
| 120 instance_active_ = instance_active; | 115 instance_active_ = instance_active; |
| 121 } | 116 } |
| 122 int instance_active() const { return instance_active_; } | 117 int instance_active() const { return instance_active_; } |
| 123 | 118 |
| 119 void set_direct_descendant(bool direct_descendant) { |
| 120 direct_descendant_ = direct_descendant; |
| 121 } |
| 122 bool direct_descendant() const { return direct_descendant_; } |
| 123 |
| 124 int routing_id() const { return routing_id_; } |
| 125 |
| 124 private: | 126 private: |
| 125 // Creates an empty VARIANT. Used as the equivalent of a NULL (unused) input | 127 // Creates an empty VARIANT. Used as the equivalent of a NULL (unused) input |
| 126 // parameter. | 128 // parameter. |
| 127 VARIANT EmptyVariant() const { | 129 VARIANT EmptyVariant() const { |
| 128 VARIANT empty; | 130 VARIANT empty; |
| 129 empty.vt = VT_EMPTY; | 131 empty.vt = VT_EMPTY; |
| 130 return empty; | 132 return empty; |
| 131 } | 133 } |
| 132 | 134 |
| 133 // Wrapper functions, calling through to singleton instance of | 135 // Wrapper functions, calling through to singleton instance of |
| 134 // BrowserAccessibilityManager. | 136 // BrowserAccessibilityManager. |
| 135 | 137 |
| 136 // Creates an instance of BrowserAccessibility, initializes it and sets the | 138 // Creates an instance of BrowserAccessibility, initializes it and sets the |
| 137 // [iaccessible_id] and [parent_id]. | 139 // [iaccessible_id] and [parent_id]. |
| 138 STDMETHODIMP CreateInstance(REFIID iid, | 140 STDMETHODIMP CreateInstance(REFIID iid, |
| 139 int iaccessible_id, | 141 int iaccessible_id, |
| 140 void** interface_ptr); | 142 void** interface_ptr); |
| 141 | 143 |
| 142 // Composes and sends a message for requesting needed accessibility | 144 // Composes and sends a message for requesting needed accessibility |
| 143 // information. Unused LONG input parameters should be NULL, and the VARIANT | 145 // information. Unused LONG input parameters should be NULL, and the VARIANT |
| 144 // an empty, valid instance. | 146 // an empty, valid instance. |
| 145 bool RequestAccessibilityInfo(int iaccessible_func_id, | 147 bool RequestAccessibilityInfo(int iaccessible_func_id, |
| 146 VARIANT var_id, | 148 VARIANT var_id, |
| 147 LONG input1, LONG input2); | 149 LONG input1, LONG input2); |
| 148 | 150 |
| 149 // Accessors. | 151 // Accessors. |
| 150 const WebAccessibility::OutParams& response(); | 152 const WebAccessibility::OutParams& response(); |
| 151 HWND parent_hwnd(); | |
| 152 | 153 |
| 153 // Returns a conversion from the BrowserAccessibilityRole (as defined in | 154 // Returns a conversion from the BrowserAccessibilityRole (as defined in |
| 154 // webkit/glue/webaccessibility.h) to an MSAA role. | 155 // webkit/glue/webaccessibility.h) to an MSAA role. |
| 155 long MSAARole(long browser_accessibility_role); | 156 long MSAARole(long browser_accessibility_role); |
| 156 | 157 |
| 157 // Returns a conversion from the BrowserAccessibilityState (as defined in | 158 // Returns a conversion from the BrowserAccessibilityState (as defined in |
| 158 // webkit/glue/webaccessibility.h) to MSAA states set. | 159 // webkit/glue/webaccessibility.h) to MSAA states set. |
| 159 long MSAAState(long browser_accessibility_state); | 160 long MSAAState(long browser_accessibility_state); |
| 160 | 161 |
| 161 // Id to uniquely distinguish this instance in the render-side caching, | 162 // Id to uniquely distinguish this instance in the render-side caching, |
| 162 // mapping it to the correct IAccessible on that side. Initialized to -1. | 163 // mapping it to the correct IAccessible on that side. Initialized to -1. |
| 163 int iaccessible_id_; | 164 int iaccessible_id_; |
| 164 | 165 |
| 165 // The unique id of this IAccessible instance. Used to help | 166 // The unique ids of this IAccessible instance. Used to help |
| 166 // BrowserAccessibilityManager instance retrieve the correct member | 167 // BrowserAccessibilityManager instance retrieve the correct member |
| 167 // variables for this process. | 168 // variables for this process. |
| 168 int instance_id_; | 169 int routing_id_; |
| 170 int process_id_; |
| 171 |
| 172 HWND parent_hwnd_; |
| 173 |
| 174 // Indicates if an incoming request for child information relates to a child |
| 175 // id of a direct child of the BrowserAccessibility object, or if it refers |
| 176 // to an object elsewhere in the MSAA tree. Set by BrowserAccessibilityManager |
| 177 // and applicable only to the root BrowserAccessibility object (id 0). Needed |
| 178 // to properly handled MSAA focus events, where the child id is the only |
| 179 // parameter in our control. |
| 180 bool direct_descendant_; |
| 169 | 181 |
| 170 // The instance should only be active if there is a non-terminated | 182 // The instance should only be active if there is a non-terminated |
| 171 // RenderProcessHost associated with it. The BrowserAccessibilityManager keeps | 183 // RenderProcessHost associated with it. The BrowserAccessibilityManager keeps |
| 172 // track of this state, and sets it to false to disable all calls into the | 184 // track of this state, and sets it to false to disable all calls into the |
| 173 // renderer from this instance of BroweserAccessibility, and have all | 185 // renderer from this instance of BroweserAccessibility, and have all |
| 174 // IAccessible functions return E_FAIL. | 186 // IAccessible functions return E_FAIL. |
| 175 bool instance_active_; | 187 bool instance_active_; |
| 176 | 188 |
| 177 DISALLOW_COPY_AND_ASSIGN(BrowserAccessibility); | 189 DISALLOW_COPY_AND_ASSIGN(BrowserAccessibility); |
| 178 }; | 190 }; |
| 179 #endif // CHROME_BROWSER_BROWSER_ACCESSIBILITY_H_ | 191 #endif // CHROME_BROWSER_BROWSER_ACCESSIBILITY_H_ |
| OLD | NEW |