Index: ui/accessibility/platform/ax_fake_caret_win.h |
diff --git a/ui/accessibility/platform/ax_fake_caret_win.h b/ui/accessibility/platform/ax_fake_caret_win.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f1fdf77f764da1b7838f4a988487f4680337323c |
--- /dev/null |
+++ b/ui/accessibility/platform/ax_fake_caret_win.h |
@@ -0,0 +1,153 @@ |
+// Copyright (c) 2017 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 UI_ACCESSIBILITY_PLATFORM_AX_FAKE_CARET_WIN_H_ |
+#define UI_ACCESSIBILITY_PLATFORM_AX_FAKE_CARET_WIN_H_ |
+ |
+#include <atlbase.h> |
+#include <atlcom.h> |
+#include <oleacc.h> |
+#include <windows.h> |
+ |
+#include "base/compiler_specific.h" |
+#include "base/macros.h" |
+#include "ui/accessibility/ax_export.h" |
+#include "ui/gfx/geometry/rect.h" |
+ |
+namespace ui { |
+ |
+// A class representing the position of the caret to assistive software on |
+// Windows. This is required because Chrome doesn't use the standard system |
+// caret and because some assistive software still relies on specific |
+// accessibility APIs to retrieve the caret position. |
+class __declspec(uuid("170646b5-cb01-43e7-93f0-3ca455828d03")) AXFakeCaretWin |
+ : NON_EXPORTED_BASE(public CComObjectRootEx<CComSingleThreadModel>), |
+ public IDispatchImpl<IAccessible, |
+ &IID_IAccessible, |
+ &LIBID_Accessibility> { |
+ public: |
+ BEGIN_COM_MAP(AXFakeCaretWin) |
+ COM_INTERFACE_ENTRY2(IDispatch, IAccessible) |
+ COM_INTERFACE_ENTRY(IAccessible) |
+ END_COM_MAP() |
+ |
+ AXFakeCaretWin(); |
+ virtual ~AXFakeCaretWin() = default; |
+ |
+ gfx::Rect bounds() { return bounds_; } |
+ AX_EXPORT static void SetBounds(gfx::Rect bounds); |
+ |
+ // IAccessible methods. |
+ |
+ // Performs the default action on a given object. |
+ STDMETHODIMP accDoDefaultAction(VARIANT var_id) override { return E_NOTIMPL; } |
+ |
+ // Retrieves the child element or child object at a given point on the screen. |
+ STDMETHODIMP accHitTest(LONG x_left, LONG y_top, VARIANT* child) override { |
+ return E_NOTIMPL; |
+ } |
+ |
+ // Retrieves the specified object's current screen location. |
+ STDMETHODIMP accLocation(LONG* x_left, |
+ LONG* y_top, |
+ LONG* width, |
+ LONG* height, |
+ VARIANT var_id) override; |
+ |
+ // Traverses to another UI element and retrieves the object. |
+ STDMETHODIMP accNavigate(LONG nav_dir, VARIANT start, VARIANT* end) override { |
+ return E_NOTIMPL; |
+ } |
+ |
+ // Retrieves an IDispatch interface pointer for the specified child. |
+ STDMETHODIMP get_accChild(VARIANT var_child, |
+ IDispatch** disp_child) override { |
+ return E_NOTIMPL; |
+ } |
+ |
+ // Retrieves the number of accessible children. |
+ STDMETHODIMP get_accChildCount(LONG* child_count) override { |
+ return E_NOTIMPL; |
+ } |
+ |
+ // Retrieves a string that describes the object's default action. |
+ STDMETHODIMP get_accDefaultAction(VARIANT var_id, |
+ BSTR* default_action) override { |
+ return E_NOTIMPL; |
+ } |
+ |
+ // Retrieves the object's description. |
+ STDMETHODIMP get_accDescription(VARIANT var_id, BSTR* desc) override { |
+ return E_NOTIMPL; |
+ } |
+ |
+ // Retrieves the object that has the keyboard focus. |
+ STDMETHODIMP get_accFocus(VARIANT* focus_child) override { return E_NOTIMPL; } |
+ |
+ // Retrieves the help information associated with the object. |
+ STDMETHODIMP get_accHelp(VARIANT var_id, BSTR* heflp) override { |
+ return E_NOTIMPL; |
+ } |
+ |
+ // Retrieves the specified object's shortcut. |
+ STDMETHODIMP get_accKeyboardShortcut(VARIANT var_id, |
+ BSTR* access_key) override { |
+ return E_NOTIMPL; |
+ } |
+ |
+ // Retrieves the name of the specified object. |
+ STDMETHODIMP get_accName(VARIANT var_id, BSTR* name) override; |
+ |
+ // Retrieves the IDispatch interface of the object's parent. |
+ STDMETHODIMP get_accParent(IDispatch** disp_parent) override { |
+ return E_NOTIMPL; |
+ } |
+ |
+ // Retrieves information describing the role of the specified object. |
+ STDMETHODIMP get_accRole(VARIANT var_id, VARIANT* role) override; |
+ |
+ // Retrieves the current state of the specified object. |
+ STDMETHODIMP get_accState(VARIANT var_id, VARIANT* state) override { |
+ return E_NOTIMPL; |
+ } |
+ |
+ // Returns the value associated with the object. |
+ STDMETHODIMP get_accValue(VARIANT var_id, BSTR* value) override { |
+ return E_NOTIMPL; |
+ } |
+ |
+ // Make an object take focus or extend the selection. |
+ STDMETHODIMP accSelect(LONG flags_sel, VARIANT var_id) override { |
+ return E_NOTIMPL; |
+ } |
+ |
+ STDMETHODIMP get_accHelpTopic(BSTR* help_file, |
+ VARIANT var_id, |
+ LONG* topic_id) override { |
+ return E_NOTIMPL; |
+ } |
+ |
+ STDMETHODIMP get_accSelection(VARIANT* selected) override { |
+ return E_NOTIMPL; |
+ } |
+ |
+ // Deprecated methods. |
+ STDMETHODIMP put_accName(VARIANT var_id, BSTR put_name) override { |
+ return E_NOTIMPL; |
+ } |
+ |
+ STDMETHODIMP put_accValue(VARIANT var_id, BSTR put_val) override { |
+ return E_NOTIMPL; |
+ } |
+ |
+ private: |
+ const LPCTSTR OBJECT_NAME = L"Caret"; |
+ // There is only one caret present at any one time. |
+ static gfx::Rect bounds_; |
+ DISALLOW_COPY_AND_ASSIGN(AXFakeCaretWin); |
+}; |
+ |
+} // namespace ui |
+ |
+#endif // UI_ACCESSIBILITY_PLATFORM_AX_FAKE_CARET_WIN_H_ |