| // Copyright 2013 The Flutter 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 FLUTTER_SHELL_PLATFORM_WINDOWS_ACCESSIBILITY_ALERT_H_ | |
| #define FLUTTER_SHELL_PLATFORM_WINDOWS_ACCESSIBILITY_ALERT_H_ | |
| #include <atlbase.h> | |
| #include <atlcom.h> | |
| #include <oleacc.h> | |
| #include <string> | |
| namespace flutter { | |
| class AccessibilityRootNode; | |
| // An IAccessible node representing an alert read to the screen reader. | |
| // When an announcement is requested by the framework, an instance of | |
| // this class, if none exists already, is created and made a child of | |
| // the root AccessibilityRootNode node, and is therefore also a sibling | |
| // of the window's root node. | |
| // This node is not interactable to the user. | |
| class __declspec(uuid("778c1bd8-383f-4d49-b6be-8937e12b6a32")) | |
| AccessibilityAlert : public CComObjectRootEx<CComMultiThreadModel>, | |
| public IDispatchImpl<IAccessible>, | |
| public IServiceProvider { | |
| public: | |
| BEGIN_COM_MAP(AccessibilityAlert) | |
| COM_INTERFACE_ENTRY(AccessibilityAlert) | |
| COM_INTERFACE_ENTRY(IAccessible) | |
| COM_INTERFACE_ENTRY(IDispatch) | |
| COM_INTERFACE_ENTRY(IServiceProvider) | |
| END_COM_MAP() | |
| // | |
| // IAccessible methods. | |
| // | |
| // Retrieves the child element or child object at a given point on the screen. | |
| IFACEMETHODIMP accHitTest(LONG screen_physical_pixel_x, | |
| LONG screen_physical_pixel_y, | |
| VARIANT* child) override; | |
| // Retrieves an IDispatch interface pointer for the specified child. | |
| IFACEMETHODIMP get_accChild(VARIANT var_child, | |
| IDispatch** disp_child) override; | |
| // Retrieves the number of accessible children. | |
| IFACEMETHODIMP get_accChildCount(LONG* child_count) override; | |
| // Retrieves a string that describes the object's default action. | |
| IFACEMETHODIMP get_accDefaultAction(VARIANT var_id, | |
| BSTR* default_action) override; | |
| // Retrieves the tooltip description. | |
| IFACEMETHODIMP get_accDescription(VARIANT var_id, BSTR* desc) override; | |
| // Retrieves the name of the specified object. | |
| IFACEMETHODIMP get_accName(VARIANT var_id, BSTR* name) override; | |
| // Retrieves the IDispatch interface of the object's parent. | |
| IFACEMETHODIMP get_accParent(IDispatch** disp_parent) override; | |
| // Retrieves information describing the role of the specified object. | |
| IFACEMETHODIMP get_accRole(VARIANT var_id, VARIANT* role) override; | |
| // Retrieves the current state of the specified object. | |
| IFACEMETHODIMP get_accState(VARIANT var_id, VARIANT* state) override; | |
| // Gets the help string for the specified object. | |
| IFACEMETHODIMP get_accHelp(VARIANT var_id, BSTR* help) override; | |
| // Retrieve the string value associated with the specified object. | |
| IFACEMETHODIMP get_accValue(VARIANT var_id, BSTR* value) override; | |
| // IAccessible methods not implemented. | |
| IFACEMETHODIMP accLocation(LONG* physical_pixel_left, | |
| LONG* physical_pixel_top, | |
| LONG* width, | |
| LONG* height, | |
| VARIANT var_id) override; | |
| IFACEMETHODIMP accNavigate(LONG nav_dir, | |
| VARIANT start, | |
| VARIANT* end) override; | |
| IFACEMETHODIMP accDoDefaultAction(VARIANT var_id) override; | |
| IFACEMETHODIMP get_accFocus(VARIANT* focus_child) override; | |
| IFACEMETHODIMP get_accKeyboardShortcut(VARIANT var_id, | |
| BSTR* access_key) override; | |
| IFACEMETHODIMP get_accSelection(VARIANT* selected) override; | |
| IFACEMETHODIMP accSelect(LONG flags_sel, VARIANT var_id) override; | |
| IFACEMETHODIMP get_accHelpTopic(BSTR* help_file, | |
| VARIANT var_id, | |
| LONG* topic_id) override; | |
| IFACEMETHODIMP put_accName(VARIANT var_id, BSTR put_name) override; | |
| IFACEMETHODIMP put_accValue(VARIANT var_id, BSTR new_value) override; | |
| // End of IAccessible methods. | |
| // | |
| // IServiceProvider method. | |
| // | |
| IFACEMETHODIMP QueryService(REFGUID guidService, | |
| REFIID riid, | |
| void** object) override; | |
| AccessibilityAlert(); | |
| ~AccessibilityAlert() = default; | |
| // Sets the text of this alert to the provided message. | |
| void SetText(const std::wstring& text); | |
| void SetParent(AccessibilityRootNode* parent); | |
| private: | |
| std::wstring text_; | |
| AccessibilityRootNode* parent_; | |
| }; | |
| } // namespace flutter | |
| #endif // FLUTTER_SHELL_PLATFORM_WINDOWS_ACCESSIBILITY_ALERT_H_ |