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