| Index: content/common/accessibility_mode.h
|
| diff --git a/content/common/accessibility_mode.h b/content/common/accessibility_mode.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..c23410c6024f6e198561e4b8f3a2badf515b54a5
|
| --- /dev/null
|
| +++ b/content/common/accessibility_mode.h
|
| @@ -0,0 +1,93 @@
|
| +// 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 CONTENT_COMMON_ACCESSIBILITY_MODE_ENUMS_H_
|
| +#define CONTENT_COMMON_ACCESSIBILITY_MODE_ENUMS_H_
|
| +
|
| +namespace content {
|
| +
|
| +class AccessibilityMode {
|
| + public:
|
| + // Native accessibility APIs, specific to each platform, are enabled.
|
| + // When this mode is set that indicates the presence of a third-party
|
| + // client accessing Chrome via accessibility APIs. However, unless one
|
| + // of the modes below is set, the contents of web pages will not be
|
| + // accessible.
|
| + static constexpr uint32_t kNativeAPIs = 1 << 0;
|
| +
|
| + // The renderer process will generate an accessibility tree containing
|
| + // basic information about all nodes, including role, name, value,
|
| + // state, and location. This is the minimum mode required in order for
|
| + // web contents to be accessible, and the remaining modes are meaningless
|
| + // unless this one is set.
|
| + //
|
| + // Note that sometimes this mode will be set when kNativeAPI is not, when the
|
| + // content layer embedder is providing accessibility support via some other
|
| + // mechanism other than what's implemented in content/browser.
|
| + static constexpr uint32_t kWebContents = 1 << 1;
|
| +
|
| + // The accessibility tree will contain inline text boxes, which are
|
| + // necessary to expose information about line breaks and word boundaries.
|
| + // Without this mode, you can retrieve the plaintext value of a text field
|
| + // but not the information about how it's broken down into lines.
|
| + //
|
| + // Note that when this mode is off it's still possible to request inline
|
| + // text boxes for a specific node on-demand, asynchronously.
|
| + static constexpr uint32_t kInlineTextBoxes = 1 << 2;
|
| +
|
| + // The accessibility tree will contain extra accessibility
|
| + // attributes typically only needed by screen readers and other
|
| + // assistive technology for blind users. Examples include text style
|
| + // attributes, table cell information, live region properties, range
|
| + // values, and relationship attributes.
|
| + static constexpr uint32_t kScreenReader = 1 << 3;
|
| +
|
| + // The accessibility tree will contain the HTML tag name and HTML attributes
|
| + // for all accessibility nodes that come from web content.
|
| + static constexpr uint32_t kHTML = 1 << 4;
|
| +
|
| + constexpr AccessibilityMode() : flags_(0) {}
|
| + constexpr AccessibilityMode(uint32_t flags) : flags_(flags) {}
|
| +
|
| + bool has_mode(uint32_t flag) const { return (flags_ & flag) > 0; }
|
| +
|
| + void set_mode(uint32_t flag, bool value) {
|
| + flags_ = value ? (flags_ | flag) : (flags_ & ~flag);
|
| + }
|
| +
|
| + uint32_t mode() const { return flags_; }
|
| +
|
| + bool operator==(AccessibilityMode rhs) const {
|
| + if (flags_ == rhs.flags_)
|
| + return true;
|
| + return false;
|
| + }
|
| +
|
| + bool is_mode_off() const { return flags_ == 0; }
|
| +
|
| + bool operator!=(AccessibilityMode rhs) const { return !(*this == rhs); }
|
| +
|
| + AccessibilityMode& operator|=(const AccessibilityMode& rhs) {
|
| + flags_ |= rhs.flags_;
|
| + return *this;
|
| + }
|
| +
|
| + private:
|
| + uint32_t flags_;
|
| +};
|
| +
|
| +static constexpr AccessibilityMode kAccessibilityModeWebContentsOnly(
|
| + AccessibilityMode::kWebContents | AccessibilityMode::kInlineTextBoxes |
|
| + AccessibilityMode::kScreenReader |
|
| + AccessibilityMode::kHTML);
|
| +
|
| +static constexpr AccessibilityMode kAccessibilityModeComplete(
|
| + AccessibilityMode::kNativeAPIs | AccessibilityMode::kWebContents |
|
| + AccessibilityMode::kInlineTextBoxes |
|
| + AccessibilityMode::kScreenReader |
|
| + AccessibilityMode::kHTML);
|
| +
|
| +} // namespace content
|
| +
|
| +#endif // CONTENT_COMMON_ACCESSIBILITY_MODE_ENUMS_H_
|
|
|