• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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:
BEGIN_COM_MAP(AutocompleteAccessibility)31   BEGIN_COM_MAP(AutocompleteAccessibility)
32     COM_INTERFACE_ENTRY2(IDispatch, IAccessible)
33     COM_INTERFACE_ENTRY(IAccessible)
34   END_COM_MAP()
35 
36   AutocompleteAccessibility() {}
~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