Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(204)

Unified Diff: content/common/accessibility_mode.h

Issue 2694413006: Scope and clean up uses of AccessibilityMode. (Closed)
Patch Set: merge Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/web_contents/web_contents_impl.cc ('k') | content/common/accessibility_mode_enums.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_
« no previous file with comments | « content/browser/web_contents/web_contents_impl.cc ('k') | content/common/accessibility_mode_enums.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698