blob: 5d754c4281b4804601fdbf4d8df18b13d4c0ad3b [file] [log] [blame]
// Copyright (c) 2018 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 "content/browser/accessibility/accessibility_tree_formatter_utils_auralinux.h"
#include "base/stl_util.h"
namespace content {
namespace {
struct PlatformConstantToNameEntry {
int32_t value;
const char* name;
};
const char* GetNameForPlatformConstant(
const PlatformConstantToNameEntry table[],
size_t table_size,
int32_t value) {
for (size_t i = 0; i < table_size; ++i) {
auto& entry = table[i];
if (entry.value == value)
return entry.name;
}
return "<unknown>";
}
} // namespace
#define QUOTE(X) \
{ X, #X }
CONTENT_EXPORT const char* ATSPIStateToString(AtspiStateType state) {
static const PlatformConstantToNameEntry state_table[] = {
QUOTE(ATSPI_STATE_INVALID),
QUOTE(ATSPI_STATE_ACTIVE),
QUOTE(ATSPI_STATE_ARMED),
QUOTE(ATSPI_STATE_BUSY),
QUOTE(ATSPI_STATE_CHECKED),
QUOTE(ATSPI_STATE_COLLAPSED),
QUOTE(ATSPI_STATE_DEFUNCT),
QUOTE(ATSPI_STATE_EDITABLE),
QUOTE(ATSPI_STATE_ENABLED),
QUOTE(ATSPI_STATE_EXPANDABLE),
QUOTE(ATSPI_STATE_EXPANDED),
QUOTE(ATSPI_STATE_FOCUSABLE),
QUOTE(ATSPI_STATE_FOCUSED),
QUOTE(ATSPI_STATE_HAS_TOOLTIP),
QUOTE(ATSPI_STATE_HORIZONTAL),
QUOTE(ATSPI_STATE_ICONIFIED),
QUOTE(ATSPI_STATE_MODAL),
QUOTE(ATSPI_STATE_MULTI_LINE),
QUOTE(ATSPI_STATE_MULTISELECTABLE),
QUOTE(ATSPI_STATE_OPAQUE),
QUOTE(ATSPI_STATE_PRESSED),
QUOTE(ATSPI_STATE_RESIZABLE),
QUOTE(ATSPI_STATE_SELECTABLE),
QUOTE(ATSPI_STATE_SELECTED),
QUOTE(ATSPI_STATE_SENSITIVE),
QUOTE(ATSPI_STATE_SHOWING),
QUOTE(ATSPI_STATE_SINGLE_LINE),
QUOTE(ATSPI_STATE_STALE),
QUOTE(ATSPI_STATE_TRANSIENT),
QUOTE(ATSPI_STATE_VERTICAL),
QUOTE(ATSPI_STATE_VISIBLE),
QUOTE(ATSPI_STATE_MANAGES_DESCENDANTS),
QUOTE(ATSPI_STATE_INDETERMINATE),
QUOTE(ATSPI_STATE_REQUIRED),
QUOTE(ATSPI_STATE_TRUNCATED),
QUOTE(ATSPI_STATE_ANIMATED),
QUOTE(ATSPI_STATE_INVALID_ENTRY),
QUOTE(ATSPI_STATE_SUPPORTS_AUTOCOMPLETION),
QUOTE(ATSPI_STATE_SELECTABLE_TEXT),
QUOTE(ATSPI_STATE_IS_DEFAULT),
QUOTE(ATSPI_STATE_VISITED),
QUOTE(ATSPI_STATE_CHECKABLE),
QUOTE(ATSPI_STATE_HAS_POPUP),
QUOTE(ATSPI_STATE_READ_ONLY),
QUOTE(ATSPI_STATE_LAST_DEFINED),
};
return GetNameForPlatformConstant(state_table, base::size(state_table),
state);
}
} // namespace content