in libcef/browser/osr/osr_accessibility_util.cc [71:224]
void operator()(const std::pair<ax::mojom::IntAttribute, int32_t> attr) {
if (attr.first == ax::mojom::IntAttribute::kNone)
return;
switch (attr.first) {
case ax::mojom::IntAttribute::kNone:
break;
case ax::mojom::IntAttribute::kScrollX:
case ax::mojom::IntAttribute::kScrollXMin:
case ax::mojom::IntAttribute::kScrollXMax:
case ax::mojom::IntAttribute::kScrollY:
case ax::mojom::IntAttribute::kScrollYMin:
case ax::mojom::IntAttribute::kScrollYMax:
case ax::mojom::IntAttribute::kHasPopup:
case ax::mojom::IntAttribute::kHierarchicalLevel:
case ax::mojom::IntAttribute::kTextSelStart:
case ax::mojom::IntAttribute::kTextSelEnd:
case ax::mojom::IntAttribute::kAriaColumnCount:
case ax::mojom::IntAttribute::kAriaCellColumnIndex:
case ax::mojom::IntAttribute::kAriaRowCount:
case ax::mojom::IntAttribute::kAriaCellRowIndex:
case ax::mojom::IntAttribute::kTableRowCount:
case ax::mojom::IntAttribute::kTableColumnCount:
case ax::mojom::IntAttribute::kTableCellColumnIndex:
case ax::mojom::IntAttribute::kTableCellRowIndex:
case ax::mojom::IntAttribute::kTableCellColumnSpan:
case ax::mojom::IntAttribute::kTableCellRowSpan:
case ax::mojom::IntAttribute::kTableColumnHeaderId:
case ax::mojom::IntAttribute::kTableColumnIndex:
case ax::mojom::IntAttribute::kTableHeaderId:
case ax::mojom::IntAttribute::kTableRowHeaderId:
case ax::mojom::IntAttribute::kTableRowIndex:
case ax::mojom::IntAttribute::kActivedescendantId:
case ax::mojom::IntAttribute::kInPageLinkTargetId:
case ax::mojom::IntAttribute::kErrormessageId:
case ax::mojom::IntAttribute::kDOMNodeId:
case ax::mojom::IntAttribute::kDropeffect:
case ax::mojom::IntAttribute::kMemberOfId:
case ax::mojom::IntAttribute::kNextFocusId:
case ax::mojom::IntAttribute::kNextOnLineId:
case ax::mojom::IntAttribute::kPreviousFocusId:
case ax::mojom::IntAttribute::kPreviousOnLineId:
case ax::mojom::IntAttribute::kSetSize:
case ax::mojom::IntAttribute::kPosInSet:
case ax::mojom::IntAttribute::kPopupForId:
attributes->SetInt(ToString(attr.first), attr.second);
break;
case ax::mojom::IntAttribute::kDefaultActionVerb:
attributes->SetString(
ToString(attr.first),
ui::ToString(
static_cast<ax::mojom::DefaultActionVerb>(attr.second)));
break;
case ax::mojom::IntAttribute::kInvalidState: {
auto state = static_cast<ax::mojom::InvalidState>(attr.second);
if (ax::mojom::InvalidState::kNone != state) {
attributes->SetString(ToString(attr.first), ToString(state));
}
} break;
case ax::mojom::IntAttribute::kCheckedState: {
auto state = static_cast<ax::mojom::CheckedState>(attr.second);
if (ax::mojom::CheckedState::kNone != state) {
attributes->SetString(ToString(attr.first), ToString(state));
}
} break;
case ax::mojom::IntAttribute::kRestriction:
attributes->SetString(
ToString(attr.first),
ToString(static_cast<ax::mojom::Restriction>(attr.second)));
break;
case ax::mojom::IntAttribute::kListStyle: {
auto state = static_cast<ax::mojom::ListStyle>(attr.second);
if (ax::mojom::ListStyle::kNone != state) {
attributes->SetString(ToString(attr.first), ToString(state));
}
} break;
case ax::mojom::IntAttribute::kSortDirection: {
auto state = static_cast<ax::mojom::SortDirection>(attr.second);
if (ax::mojom::SortDirection::kNone != state) {
attributes->SetString(ToString(attr.first), ToString(state));
}
} break;
case ax::mojom::IntAttribute::kTextAlign: {
auto state = static_cast<ax::mojom::TextAlign>(attr.second);
if (ax::mojom::TextAlign::kNone != state) {
attributes->SetString(ToString(attr.first), ToString(state));
}
} break;
case ax::mojom::IntAttribute::kNameFrom:
attributes->SetString(
ToString(attr.first),
ToString(static_cast<ax::mojom::NameFrom>(attr.second)));
break;
case ax::mojom::IntAttribute::kColorValue:
case ax::mojom::IntAttribute::kBackgroundColor:
case ax::mojom::IntAttribute::kColor:
attributes->SetString(ToString(attr.first),
base::StringPrintf("0x%X", attr.second));
break;
case ax::mojom::IntAttribute::kDescriptionFrom:
attributes->SetString(
ToString(attr.first),
ToString(static_cast<ax::mojom::DescriptionFrom>(attr.second)));
break;
case ax::mojom::IntAttribute::kAriaCurrentState: {
auto state = static_cast<ax::mojom::AriaCurrentState>(attr.second);
if (ax::mojom::AriaCurrentState::kNone != state) {
attributes->SetString(ToString(attr.first), ToString(state));
}
} break;
case ax::mojom::IntAttribute::kTextDirection: {
auto state = static_cast<ax::mojom::WritingDirection>(attr.second);
if (ax::mojom::WritingDirection::kNone != state) {
attributes->SetString(ToString(attr.first), ToString(state));
}
} break;
case ax::mojom::IntAttribute::kTextPosition: {
auto state = static_cast<ax::mojom::TextPosition>(attr.second);
if (ax::mojom::TextPosition::kNone != state) {
attributes->SetString(ToString(attr.first), ToString(state));
}
} break;
case ax::mojom::IntAttribute::kTextStyle: {
static ax::mojom::TextStyle textStyleArr[] = {
ax::mojom::TextStyle::kBold, ax::mojom::TextStyle::kItalic,
ax::mojom::TextStyle::kUnderline,
ax::mojom::TextStyle::kLineThrough,
ax::mojom::TextStyle::kOverline};
CefRefPtr<CefListValue> list = CefListValue::Create();
int index = 0;
// Iterate and find which states are set.
for (unsigned i = 0; i < base::size(textStyleArr); i++) {
if (attr.second & static_cast<int>(textStyleArr[i]))
list->SetString(index++, ToString(textStyleArr[i]));
}
attributes->SetList(ToString(attr.first), list);
} break;
case ax::mojom::IntAttribute::kTextOverlineStyle:
case ax::mojom::IntAttribute::kTextStrikethroughStyle:
case ax::mojom::IntAttribute::kTextUnderlineStyle: {
auto state = static_cast<ax::mojom::TextDecorationStyle>(attr.second);
if (ax::mojom::TextDecorationStyle::kNone != state) {
attributes->SetString(ToString(attr.first), ToString(state));
}
} break;
case ax::mojom::IntAttribute::kAriaCellColumnSpan:
case ax::mojom::IntAttribute::kAriaCellRowSpan:
case ax::mojom::IntAttribute::kImageAnnotationStatus: {
// TODO(cef): Implement support for Image Annotation Status,
// kAriaCellColumnSpan and kAriaCellRowSpan
} break;
}
}