// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_AUTOCOMPLETE_AUTOCOMPLETE_ACCESSIBILITY_H_ #define CHROME_BROWSER_AUTOCOMPLETE_AUTOCOMPLETE_ACCESSIBILITY_H_ #pragma once #include <atlbase.h> #include <atlcom.h> #include <oleacc.h> #include "base/basictypes.h" #include "base/win/scoped_comptr.h" class AutocompleteEditViewWin; //////////////////////////////////////////////////////////////////////////////// // // AutocompleteAccessibility // // Class implementing the MSAA IAccessible COM interface for // AutocompleteEditViewWin, providing accessibility to be used by screen // readers and other assistive technology (AT). // //////////////////////////////////////////////////////////////////////////////// class ATL_NO_VTABLE AutocompleteAccessibility : public CComObjectRootEx<CComMultiThreadModel>, public IDispatchImpl<IAccessible, &IID_IAccessible, &LIBID_Accessibility> { public: BEGIN_COM_MAP(AutocompleteAccessibility) COM_INTERFACE_ENTRY2(IDispatch, IAccessible) COM_INTERFACE_ENTRY(IAccessible) END_COM_MAP() AutocompleteAccessibility() {} ~AutocompleteAccessibility() {} HRESULT Initialize(const AutocompleteEditViewWin* edit_box); // Supported IAccessible methods. // Retrieves the number of accessible children. STDMETHODIMP get_accChildCount(LONG* child_count); // Retrieves an IDispatch interface pointer for the specified child. STDMETHODIMP get_accChild(VARIANT var_child, IDispatch** disp_child); // Retrieves the IDispatch interface of the object's parent. STDMETHODIMP get_accParent(IDispatch** disp_parent); // Traverses to another UI element and retrieves the object. STDMETHODIMP accNavigate(LONG nav_dir, VARIANT start, VARIANT* end); // Retrieves the object that has the keyboard focus. STDMETHODIMP get_accFocus(VARIANT* focus_child); // Retrieves the name of the specified object. STDMETHODIMP get_accName(VARIANT var_id, BSTR* name); // Retrieves the tooltip description. STDMETHODIMP get_accDescription(VARIANT var_id, BSTR* desc); // Returns the current value of the edit box. STDMETHODIMP get_accValue(VARIANT var_id, BSTR* value); // Retrieves the current state of the specified object. STDMETHODIMP get_accState(VARIANT var_id, VARIANT* state); // Retrieves information describing the role of the specified object. STDMETHODIMP get_accRole(VARIANT var_id, VARIANT* role); // Retrieves a string that describes the object's default action. STDMETHODIMP get_accDefaultAction(VARIANT var_id, BSTR* default_action); // Retrieves the specified object's current screen location. STDMETHODIMP accLocation(LONG* x_left, LONG* y_top, LONG* width, LONG* height, VARIANT var_id); // Retrieves the child element or child object at a given point on the screen. STDMETHODIMP accHitTest(LONG x_left, LONG y_top, VARIANT* child); // Retrieves the specified object's shortcut. STDMETHODIMP get_accKeyboardShortcut(VARIANT var_id, BSTR* access_key); // Non-supported IAccessible methods. // Out-dated and can be safely said to be very rarely used. STDMETHODIMP accDoDefaultAction(VARIANT var_id); // Selections not applicable to views. STDMETHODIMP get_accSelection(VARIANT* selected); STDMETHODIMP accSelect(LONG flags_sel, VARIANT var_id); // Help functions not supported. STDMETHODIMP get_accHelp(VARIANT var_id, BSTR* help); STDMETHODIMP get_accHelpTopic(BSTR* help_file, VARIANT var_id, LONG* topic_id); // Deprecated functions, not implemented here. STDMETHODIMP put_accName(VARIANT var_id, BSTR put_name); STDMETHODIMP put_accValue(VARIANT var_id, BSTR put_val); protected: // A pointer containing the Windows' default IAccessible implementation for // this object. Used where it is acceptable to return default MSAA // information. base::win::ScopedComPtr<IAccessible> default_accessibility_server_; private: const AutocompleteEditViewWin* edit_box_; DISALLOW_COPY_AND_ASSIGN(AutocompleteAccessibility); }; #endif // CHROME_BROWSER_AUTOCOMPLETE_AUTOCOMPLETE_ACCESSIBILITY_H_