chromium/ui/views/accessibility/view_accessibility.cc

// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "ui/views/accessibility/view_accessibility.h"

#include <utility>

#include "base/auto_reset.h"
#include "base/functional/callback.h"
#include "base/memory/ptr_util.h"
#include "base/ranges/algorithm.h"
#include "base/strings/utf_string_conversions.h"
#include "build/chromeos_buildflags.h"
#include "ui/accessibility/accessibility_features.h"
#include "ui/accessibility/ax_enums.mojom.h"
#include "ui/accessibility/platform/ax_platform_node.h"
#include "ui/accessibility/platform/ax_platform_node_delegate.h"
#include "ui/base/buildflags.h"
#include "ui/display/display.h"
#include "ui/display/screen.h"
#include "ui/views/accessibility/atomic_view_ax_tree_manager.h"
#include "ui/views/accessibility/ax_event_manager.h"
#include "ui/views/accessibility/widget_ax_tree_id_map.h"
#include "ui/views/view.h"
#include "ui/views/view_utils.h"
#include "ui/views/widget/root_view.h"
#include "ui/views/widget/widget.h"

namespace views {

namespace {

bool IsValidRoleForViews(ax::mojom::Role role) {}

}  // namespace

#define RETURN_IF_UNAVAILABLE()

#if !BUILDFLAG_INTERNAL_HAS_NATIVE_ACCESSIBILITY()
// static
std::unique_ptr<ViewAccessibility> ViewAccessibility::Create(View* view) {
  // Cannot use std::make_unique because constructor is protected.
  return base::WrapUnique(new ViewAccessibility(view));
}
#endif

ViewAccessibility::ViewAccessibility(View* view)
    :{}

ViewAccessibility::~ViewAccessibility() = default;

void ViewAccessibility::AddVirtualChildView(
    std::unique_ptr<AXVirtualView> virtual_view) {}

void ViewAccessibility::AddVirtualChildViewAt(
    std::unique_ptr<AXVirtualView> virtual_view,
    size_t index) {}

std::unique_ptr<AXVirtualView> ViewAccessibility::RemoveVirtualChildView(
    AXVirtualView* virtual_view) {}

void ViewAccessibility::RemoveAllVirtualChildViews() {}

bool ViewAccessibility::Contains(const AXVirtualView* virtual_view) const {}

std::optional<size_t> ViewAccessibility::GetIndexOf(
    const AXVirtualView* virtual_view) const {}

void ViewAccessibility::GetAccessibleNodeData(ui::AXNodeData* data) const {}

void ViewAccessibility::NotifyEvent(ax::mojom::Event event_type,
                                    bool send_native_event) {}

void ViewAccessibility::OverrideFocus(AXVirtualView* virtual_view) {}

bool ViewAccessibility::IsAccessibilityFocusable() const {}

bool ViewAccessibility::IsFocusedForTesting() const {}

void ViewAccessibility::SetPopupFocusOverride() {}

void ViewAccessibility::EndPopupFocusOverride() {}

void ViewAccessibility::FireFocusAfterMenuClose() {}

void ViewAccessibility::SetProperties(
    std::optional<ax::mojom::Role> role,
    std::optional<std::u16string> name,
    std::optional<std::u16string> description,
    std::optional<std::u16string> role_description,
    std::optional<ax::mojom::NameFrom> name_from,
    std::optional<ax::mojom::DescriptionFrom> description_from) {}

void ViewAccessibility::SetIsLeaf(bool value) {}

bool ViewAccessibility::IsLeaf() const {}

bool ViewAccessibility::IsChildOfLeaf() const {}

void ViewAccessibility::SetReadOnly(bool read_only) {}

bool ViewAccessibility::GetIsPruned() const {}

void ViewAccessibility::SetCharacterOffsets(
    const std::vector<int32_t>& offsets) {}

const std::vector<int32_t>& ViewAccessibility::GetCharacterOffsets() const {}

void ViewAccessibility::SetWordStarts(const std::vector<int32_t>& offsets) {}

const std::vector<int32_t>& ViewAccessibility::GetWordStarts() const {}

void ViewAccessibility::SetWordEnds(const std::vector<int32_t>& offsets) {}

const std::vector<int32_t>& ViewAccessibility::GetWordEnds() const {}

void ViewAccessibility::ClearTextOffsets() {}

void ViewAccessibility::SetHasPopup(const ax::mojom::HasPopup has_popup) {}

void ViewAccessibility::SetRole(const ax::mojom::Role role) {}

void ViewAccessibility::SetRole(const ax::mojom::Role role,
                                const std::u16string& role_description) {}

void ViewAccessibility::SetName(std::u16string name,
                                ax::mojom::NameFrom name_from) {}

void ViewAccessibility::SetName(const std::string& name,
                                ax::mojom::NameFrom name_from) {}

void ViewAccessibility::SetName(const std::string& name) {}

void ViewAccessibility::SetName(const std::u16string& name) {}

void ViewAccessibility::SetName(View& naming_view) {}

void ViewAccessibility::RemoveName() {}

std::u16string ViewAccessibility::GetCachedName() const {}

ax::mojom::NameFrom ViewAccessibility::GetCachedNameFrom() const {}

ax::mojom::Role ViewAccessibility::GetCachedRole() const {}

void ViewAccessibility::SetRoleDescription(
    const std::u16string& role_description) {}

void ViewAccessibility::SetRoleDescription(
    const std::string& role_description) {}

void ViewAccessibility::RemoveRoleDescription() {}

void ViewAccessibility::SetIsEditable(bool editable) {}

void ViewAccessibility::SetBounds(const gfx::RectF& bounds) {}

void ViewAccessibility::SetPosInSet(int pos_in_set) {}

void ViewAccessibility::SetSetSize(int set_size) {}

void ViewAccessibility::ClearPosInSet() {}

void ViewAccessibility::ClearSetSize() {}

void ViewAccessibility::SetScrollX(int scroll_x) {}

void ViewAccessibility::SetScrollXMin(int scroll_x_min) {}

void ViewAccessibility::SetScrollXMax(int scroll_x_max) {}

void ViewAccessibility::SetScrollY(int scroll_y) {}

void ViewAccessibility::SetScrollYMin(int scroll_y_min) {}

void ViewAccessibility::SetScrollYMax(int scroll_y_max) {}

void ViewAccessibility::SetIsScrollable(bool is_scrollable) {}

void ViewAccessibility::SetActiveDescendant(views::View& view) {}

void ViewAccessibility::SetActiveDescendant(ui::AXPlatformNodeId id) {}

void ViewAccessibility::ClearActiveDescendant() {}

void ViewAccessibility::SetIsInvisible(bool is_invisible) {}

void ViewAccessibility::SetIsDefault(bool is_default) {}

void ViewAccessibility::SetIsEnabled(bool is_enabled) {}

bool ViewAccessibility::GetIsEnabled() const {}

void ViewAccessibility::SetTableRowCount(int row_count) {}

void ViewAccessibility::SetTableColumnCount(int column_count) {}

void ViewAccessibility::ClearDescriptionAndDescriptionFrom() {}

void ViewAccessibility::RemoveDescription() {}

void ViewAccessibility::SetDescription(
    const std::string& description,
    const ax::mojom::DescriptionFrom description_from) {}

void ViewAccessibility::SetDescription(
    const std::u16string& description,
    const ax::mojom::DescriptionFrom description_from) {}

void ViewAccessibility::SetDescription(View& describing_view) {}

std::u16string ViewAccessibility::GetCachedDescription() const {}

void ViewAccessibility::SetPlaceholder(const std::string& placeholder) {}

void ViewAccessibility::AddAction(ax::mojom::Action action) {}

void ViewAccessibility::SetCheckedState(ax::mojom::CheckedState checked_state) {}

void ViewAccessibility::RemoveCheckedState() {}

void ViewAccessibility::SetKeyShortcuts(const std::string& key_shortcuts) {}

void ViewAccessibility::RemoveKeyShortcuts() {}

void ViewAccessibility::SetAccessKey(const std::string& access_key) {}

void ViewAccessibility::RemoveAccessKey() {}

void ViewAccessibility::SetChildTreeNodeAppId(const std::string& app_id) {}

void ViewAccessibility::RemoveChildTreeNodeAppId() {}

void ViewAccessibility::SetIsSelected(bool selected) {}

void ViewAccessibility::SetIsMultiselectable(bool multiselectable) {}

void ViewAccessibility::SetIsIgnored(bool is_ignored) {}

bool ViewAccessibility::GetIsIgnored() const {}

void ViewAccessibility::OverrideNativeWindowTitle(const std::string& title) {}

void ViewAccessibility::OverrideNativeWindowTitle(const std::u16string& title) {}

void ViewAccessibility::SetNextFocus(Widget* widget) {}

void ViewAccessibility::SetPreviousFocus(Widget* widget) {}

Widget* ViewAccessibility::GetNextWindowFocus() const {}

Widget* ViewAccessibility::GetPreviousWindowFocus() const {}

void ViewAccessibility::SetShowContextMenu(bool show_context_menu) {}

void ViewAccessibility::SetContainerLiveStatus(const std::string& status) {}

void ViewAccessibility::RemoveContainerLiveStatus() {}

void ViewAccessibility::SetValue(const std::string& value) {}

void ViewAccessibility::SetValue(const std::u16string& value) {}

void ViewAccessibility::RemoveValue() {}

std::u16string ViewAccessibility::GetValue() const {}

void ViewAccessibility::SetDefaultActionVerb(
    const ax::mojom::DefaultActionVerb default_action_verb) {}

void ViewAccessibility::RemoveDefaultActionVerb() {}

void ViewAccessibility::SetAutoComplete(const std::string autocomplete) {}

void ViewAccessibility::UpdateFocusableState() {}

void ViewAccessibility::UpdateFocusableStateRecursive() {}

void ViewAccessibility::UpdateStatesForViewAndDescendants() {}

void ViewAccessibility::SetRootViewIsReadyToNotifyEvents() {}

void ViewAccessibility::UpdateInvisibleState() {}

void ViewAccessibility::SetChildTreeID(ui::AXTreeID tree_id) {}

ui::AXTreeID ViewAccessibility::GetChildTreeID() const {}

void ViewAccessibility::SetChildTreeScaleFactor(float scale_factor) {}

gfx::NativeViewAccessible ViewAccessibility::GetNativeObject() const {}

void ViewAccessibility::AnnounceAlert(const std::u16string& text) {}

void ViewAccessibility::AnnouncePolitely(const std::u16string& text) {}

void ViewAccessibility::AnnounceText(const std::u16string& text) {}

ui::AXPlatformNodeId ViewAccessibility::GetUniqueId() const {}

AtomicViewAXTreeManager*
ViewAccessibility::GetAtomicViewAXTreeManagerForTesting() const {}

gfx::NativeViewAccessible ViewAccessibility::GetFocusedDescendant() {}

void ViewAccessibility::FireNativeEvent(ax::mojom::Event event_type) {}

const ViewAccessibility::AccessibilityEventsCallback&
ViewAccessibility::accessibility_events_callback() const {}

void ViewAccessibility::set_accessibility_events_callback(
    ViewAccessibility::AccessibilityEventsCallback callback) {}

void ViewAccessibility::CompleteCacheInitializationRecursive() {}

void ViewAccessibility::InitializeRoleIfNeeded() {}

void ViewAccessibility::OnWidgetClosing(Widget* widget) {}

void ViewAccessibility::OnWidgetDestroyed(Widget* widget) {}

void ViewAccessibility::OnWidgetUpdated(Widget* widget, Widget* old_widget) {}

void ViewAccessibility::CompleteCacheInitialization() {}

void ViewAccessibility::PruneSubtree() {}

void ViewAccessibility::UnpruneSubtree() {}

void ViewAccessibility::UpdateIgnoredState() {}

void ViewAccessibility::UpdateReadyToNotifyEvents() {}

void ViewAccessibility::SetReadyToNotifyEvents() {}

void ViewAccessibility::SetWidgetClosedRecursive(Widget* widget, bool value) {}

void ViewAccessibility::SetDataForClosedWidget(ui::AXNodeData* data) const {}

void ViewAccessibility::SetHierarchicalLevel(int hierarchical_level) {}

void ViewAccessibility::SetState(ax::mojom::State state, bool is_enabled) {}
void ViewAccessibility::SetIsHovered(bool is_hovered) {}

bool ViewAccessibility::GetIsHovered() const {}

void ViewAccessibility::SetPopupForId(ui::AXPlatformNodeId popup_for_id) {}

void ViewAccessibility::SetTextDirection(int text_direction) {}

void ViewAccessibility::SetIsProtected(bool is_protected) {}

void ViewAccessibility::SetIsExpanded() {}

void ViewAccessibility::SetIsCollapsed() {}

void ViewAccessibility::RemoveExpandCollapseState() {}

void ViewAccessibility::SetIsVertical(bool vertical) {}

void ViewAccessibility::SetTextSelStart(int32_t text_sel_start) {}

void ViewAccessibility::SetTextSelEnd(int32_t text_sel_end) {}

}  // namespace views