// Copyright 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_VIEWS_ACCESSIBILITY_VIEW_ACCESSIBILITY_H_ #define UI_VIEWS_ACCESSIBILITY_VIEW_ACCESSIBILITY_H_ #include #include "base/macros.h" #include "ui/accessibility/ax_enums.mojom.h" #include "ui/accessibility/ax_node_data.h" #include "ui/accessibility/platform/ax_unique_id.h" #include "ui/gfx/native_widget_types.h" #include "ui/views/views_export.h" namespace views { class View; // An object that manages the accessibility interface for a View. // // The default accessibility properties of a View is determined by // calling View::GetAccessibleNodeData(), which is overridden by many // View subclasses. ViewAccessibility lets you override these for a // particular view. // // On some platforms, subclasses of ViewAccessibility own the // AXPlatformNode that implements the native accessibility APIs on that // platform. class VIEWS_EXPORT ViewAccessibility { public: static std::unique_ptr Create(View* view); virtual ~ViewAccessibility(); // Modifies |node_data| to reflect the current accessible state of the // associated View, taking any custom overrides into account // (see OverrideRole, etc. below). virtual void GetAccessibleNodeData(ui::AXNodeData* node_data) const; // // These override accessibility information, including properties returned // from View::GetAccessibleNodeData(). // Note that string attributes are only used if non-empty, so you can't // override a string with the empty string. // void OverrideRole(ax::mojom::Role role); void OverrideName(const std::string& name); void OverrideName(const base::string16& name); void OverrideDescription(const std::string& description); void OverrideIsLeaf(); // Force this node to be treated as a leaf node. virtual void OnAutofillShown(){}; virtual void OnAutofillHidden(){}; virtual gfx::NativeViewAccessible GetNativeObject(); virtual void NotifyAccessibilityEvent(ax::mojom::Event event_type) {} virtual const ui::AXUniqueId& GetUniqueId() const; bool IsLeaf() const; protected: explicit ViewAccessibility(View* view); View* view() const { return owner_view_; } private: // Weak. Owns this. View* const owner_view_; const ui::AXUniqueId unique_id_; // Contains data set explicitly via SetRole, SetName, etc. that overrides // anything provided by GetAccessibleNodeData(). ui::AXNodeData custom_data_; bool is_leaf_; DISALLOW_COPY_AND_ASSIGN(ViewAccessibility); }; } // namespace views #endif // UI_VIEWS_ACCESSIBILITY_VIEW_ACCESSIBILITY_H_