blob: 02235b33af392bd15bc957b025b39c7b7489e7a1 [file] [log] [blame]
// 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.
#include "ui/accessibility/ax_role_properties.h"
#include "build/build_config.h"
namespace ui {
namespace {
#if defined(OS_WIN)
static bool kExposeLayoutTableAsDataTable = true;
#else
static bool kExposeLayoutTableAsDataTable = false;
#endif
} // namespace
bool IsRoleClickable(ax::mojom::Role role) {
switch (role) {
case ax::mojom::Role::kButton:
case ax::mojom::Role::kCheckBox:
case ax::mojom::Role::kColorWell:
case ax::mojom::Role::kDisclosureTriangle:
case ax::mojom::Role::kLink:
case ax::mojom::Role::kListBoxOption:
case ax::mojom::Role::kMenuButton:
case ax::mojom::Role::kMenuItem:
case ax::mojom::Role::kMenuItemCheckBox:
case ax::mojom::Role::kMenuItemRadio:
case ax::mojom::Role::kMenuListOption:
case ax::mojom::Role::kMenuListPopup:
case ax::mojom::Role::kPopUpButton:
case ax::mojom::Role::kRadioButton:
case ax::mojom::Role::kSwitch:
case ax::mojom::Role::kTab:
case ax::mojom::Role::kToggleButton:
return true;
default:
return false;
}
}
bool IsDocument(ax::mojom::Role role) {
switch (role) {
case ax::mojom::Role::kRootWebArea:
case ax::mojom::Role::kWebArea:
return true;
default:
return false;
}
}
bool IsCellOrTableHeaderRole(ax::mojom::Role role) {
switch (role) {
case ax::mojom::Role::kCell:
case ax::mojom::Role::kColumnHeader:
case ax::mojom::Role::kRowHeader:
return true;
case ax::mojom::Role::kLayoutTableCell:
return kExposeLayoutTableAsDataTable;
default:
return false;
}
}
bool IsTableLikeRole(ax::mojom::Role role) {
switch (role) {
case ax::mojom::Role::kTable:
case ax::mojom::Role::kGrid:
case ax::mojom::Role::kTreeGrid:
return true;
case ax::mojom::Role::kLayoutTable:
return kExposeLayoutTableAsDataTable;
default:
return false;
}
}
bool IsContainerWithSelectableChildrenRole(ax::mojom::Role role) {
switch (role) {
case ax::mojom::Role::kComboBoxGrouping:
case ax::mojom::Role::kComboBoxMenuButton:
case ax::mojom::Role::kGrid:
case ax::mojom::Role::kListBox:
case ax::mojom::Role::kMenu:
case ax::mojom::Role::kMenuBar:
case ax::mojom::Role::kRadioGroup:
case ax::mojom::Role::kTabList:
case ax::mojom::Role::kToolbar:
case ax::mojom::Role::kTree:
case ax::mojom::Role::kTreeGrid:
return true;
default:
return false;
}
}
bool IsRowContainer(ax::mojom::Role role) {
switch (role) {
case ax::mojom::Role::kTree:
case ax::mojom::Role::kTreeGrid:
case ax::mojom::Role::kGrid:
case ax::mojom::Role::kTable:
return true;
default:
return false;
}
}
bool IsControl(ax::mojom::Role role) {
switch (role) {
case ax::mojom::Role::kButton:
case ax::mojom::Role::kCheckBox:
case ax::mojom::Role::kColorWell:
case ax::mojom::Role::kComboBoxMenuButton:
case ax::mojom::Role::kDisclosureTriangle:
case ax::mojom::Role::kListBox:
case ax::mojom::Role::kMenu:
case ax::mojom::Role::kMenuBar:
case ax::mojom::Role::kMenuButton:
case ax::mojom::Role::kMenuItem:
case ax::mojom::Role::kMenuItemCheckBox:
case ax::mojom::Role::kMenuItemRadio:
case ax::mojom::Role::kMenuListOption:
case ax::mojom::Role::kMenuListPopup:
case ax::mojom::Role::kPopUpButton:
case ax::mojom::Role::kRadioButton:
case ax::mojom::Role::kScrollBar:
case ax::mojom::Role::kSearchBox:
case ax::mojom::Role::kSlider:
case ax::mojom::Role::kSpinButton:
case ax::mojom::Role::kSwitch:
case ax::mojom::Role::kTab:
case ax::mojom::Role::kTextField:
case ax::mojom::Role::kTextFieldWithComboBox:
case ax::mojom::Role::kToggleButton:
case ax::mojom::Role::kTree:
return true;
default:
return false;
}
}
bool IsMenuRelated(ax::mojom::Role role) {
switch (role) {
case ax::mojom::Role::kMenu:
case ax::mojom::Role::kMenuBar:
case ax::mojom::Role::kMenuButton:
case ax::mojom::Role::kMenuItem:
case ax::mojom::Role::kMenuItemCheckBox:
case ax::mojom::Role::kMenuItemRadio:
case ax::mojom::Role::kMenuListOption:
case ax::mojom::Role::kMenuListPopup:
return true;
default:
return false;
}
}
bool IsImage(ax::mojom::Role role) {
switch (role) {
case ax::mojom::Role::kCanvas:
case ax::mojom::Role::kImageMap:
case ax::mojom::Role::kImage:
case ax::mojom::Role::kSvgRoot:
case ax::mojom::Role::kVideo:
return true;
default:
return false;
}
}
} // namespace ui