Chromium Code Reviews| 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..df2f1784f96c32e1796211e5be911fb7c6adf53c |
| --- /dev/null |
| +++ b/content/common/accessibility_mode.h |
| @@ -0,0 +1,97 @@ |
| +// Copyright 2014 The Chromium Authors. All rights reserved. |
|
danakj
2017/02/22 21:27:56
2017
dougt
2017/02/22 22:19:59
Done.
|
| +// 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_ |
|
danakj
2017/02/22 21:27:56
white space around the #ifndef#define
dougt
2017/02/22 22:19:59
Done.
|
| +#define CONTENT_COMMON_ACCESSIBILITY_MODE_ENUMS_H_ |
| +// Note: keep enums in content/browser/resources/accessibility/accessibility.js |
| +// in sync with these two enums |
|
danakj
2017/02/22 21:27:56
These aren't enums anymore maybe clarify this comm
dougt
2017/02/22 22:19:58
dropping comment. Adding a PRESUBMIT in a follow
|
| + |
| +namespace content { |
| + |
| +class AccessibilityMode { |
| + public: |
| + const static int OFF = 0; |
|
danakj
2017/02/22 21:27:56
constexpr instead of const.
kOff, kNativeApis, et
dougt
2017/02/22 22:19:58
Done.
dougt
2017/02/22 22:19:59
Done.
|
| + |
| + // 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. |
| + const static int NATIVE_APIS = 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 NATIVE_APIS is not, when the |
| + // content layer embedder is providing accessibility support via some other |
| + // mechanism other than what's implemented in content/browser. |
| + const static int WEB_CONTENTS = 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. |
| + const static int INLINE_TEXT_BOXES = 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. |
| + const static int SCREEN_READER = 1 << 3; |
| + |
| + // The accessibility tree will contain the HTML tag name and HTML attributes |
| + // for all accessibility nodes that come from web content. |
| + const static int HTML = 1 << 4; |
| + |
| + const static int COMPLETE = |
| + NATIVE_APIS | WEB_CONTENTS | INLINE_TEXT_BOXES | SCREEN_READER | HTML; |
| + |
| + const static int WEB_CONTENTS_ONLY = |
| + WEB_CONTENTS | INLINE_TEXT_BOXES | SCREEN_READER | HTML; |
| + |
| + AccessibilityMode(int flag = OFF) : flags_(flag) {} |
|
danakj
2017/02/22 21:27:56
explicit
dougt
2017/02/22 22:19:58
Done.
|
| + |
| + bool has(int flag) const { return (flags_ & flag) > 0; } |
| + int get() const { return flags_; } |
|
danakj
2017/02/22 21:27:56
do you need a get()? it breaks the encapsulation
dougt
2017/02/22 22:19:58
Sadly, for now yes. The encapsulation gets broken
|
| + |
| + void set(int flag) { flags_ |= flag; } |
|
danakj
2017/02/22 21:27:56
set is maybe an odd name here, you're getting a un
aboxhall
2017/02/22 22:05:50
Maybe set(int flag, bool state)?
danakj
2017/02/22 22:08:19
If you go with a setter that can add or remove the
|
| + void set(AccessibilityMode& mode) { set(mode.get()); } |
| + |
| + void clear() { set(OFF); } |
|
danakj
2017/02/22 21:27:56
this does nothing (a |= 0) == a
The OFF flag does
aboxhall
2017/02/22 22:05:50
It's used in a bunch of places to avoid running co
danakj
2017/02/22 22:08:19
An empty() function here could do that for us.
dougt
2017/02/22 22:19:58
Removed.
|
| + |
| + void toggle(int flag) { flags_ ^= flag; } |
| + |
| + bool operator==(AccessibilityMode rhs) const { |
|
danakj
2017/02/22 21:27:56
== should come with a != too
dougt
2017/02/22 22:19:59
Done.
|
| + if (flags_ == rhs.flags_) |
| + return true; |
| + return false; |
| + } |
| + |
| + bool operator==(int rhs) const { |
| + if (flags_ == rhs) |
| + return true; |
| + return false; |
| + } |
| + |
| + bool operator!=(int rhs) const { |
| + if (flags_ == rhs) |
|
danakj
2017/02/22 21:27:56
define operator!= in terms of !operator==(). so re
|
| + return false; |
| + return true; |
| + } |
| + |
| + void operator=(int flags) { flags_ = flags; } |
|
danakj
2017/02/22 21:27:56
i think you'd do better to have operator=(Accessib
dougt
2017/02/22 22:19:58
What do you think if this also used:
dougt
2017/02/22 22:21:27
setMode(int mode, bool value)
|
| + |
| + private: |
| + int flags_; |
| +}; |
| + |
| +} // namespace content |
| + |
| +#endif // CONTENT_COMMON_ACCESSIBILITY_MODE_ENUMS_H_ |