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

Unified Diff: content/browser/accessibility/accessibility_ui.cc

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
Index: content/browser/accessibility/accessibility_ui.cc
diff --git a/content/browser/accessibility/accessibility_ui.cc b/content/browser/accessibility/accessibility_ui.cc
index 1f377921a08d808e05abeff6075badf73632a472..266d5e29cb5585837ac2c7b87a383cf90acbc50e 100644
--- a/content/browser/accessibility/accessibility_ui.cc
+++ b/content/browser/accessibility/accessibility_ui.cc
@@ -81,7 +81,7 @@ std::unique_ptr<base::DictionaryValue> BuildTargetDescriptor(
target_data->SetString(kNameField, net::EscapeForHTML(name));
target_data->SetInteger(kPidField, base::GetProcId(handle));
target_data->SetString(kFaviconUrlField, favicon_url.spec());
- target_data->SetInteger(kAccessibilityModeField, accessibility_mode);
+ target_data->SetInteger(kAccessibilityModeField, accessibility_mode.mode());
return target_data;
}
@@ -89,7 +89,7 @@ std::unique_ptr<base::DictionaryValue> BuildTargetDescriptor(
RenderViewHost* rvh) {
WebContentsImpl* web_contents = static_cast<WebContentsImpl*>(
WebContents::FromRenderViewHost(rvh));
- AccessibilityMode accessibility_mode = AccessibilityModeOff;
+ AccessibilityMode accessibility_mode;
std::string title;
GURL url;
@@ -147,11 +147,11 @@ bool HandleRequestCallback(BrowserContext* current_context,
BrowserAccessibilityStateImpl::GetInstance()->accessibility_mode();
bool disabled = base::CommandLine::ForCurrentProcess()->HasSwitch(
switches::kDisableRendererAccessibility);
- bool native = 0 != (mode & ACCESSIBILITY_MODE_FLAG_NATIVE_APIS);
- bool web = 0 != (mode & ACCESSIBILITY_MODE_FLAG_WEB_CONTENTS);
- bool text = 0 != (mode & ACCESSIBILITY_MODE_FLAG_INLINE_TEXT_BOXES);
- bool screenreader = 0 != (mode & ACCESSIBILITY_MODE_FLAG_SCREEN_READER);
- bool html = 0 != (mode & ACCESSIBILITY_MODE_FLAG_HTML);
+ bool native = mode.has_mode(AccessibilityMode::kNativeAPIs);
+ bool web = mode.has_mode(AccessibilityMode::kWebContents);
+ bool text = mode.has_mode(AccessibilityMode::kInlineTextBoxes);
+ bool screenreader = mode.has_mode(AccessibilityMode::kScreenReader);
+ bool html = mode.has_mode(AccessibilityMode::kHTML);
// The "native" and "web" flags are disabled if
// --disable-renderer-accessibility is set.
@@ -223,6 +223,7 @@ void AccessibilityUI::ToggleAccessibility(const base::ListValue* args) {
CHECK_EQ(3U, args->GetSize());
CHECK(args->GetString(0, &process_id_str));
CHECK(args->GetString(1, &route_id_str));
+ // TODO(695247): We should pass each ax flag seperately
CHECK(args->GetInteger(2, &mode));
CHECK(base::StringToInt(process_id_str, &process_id));
CHECK(base::StringToInt(route_id_str, &route_id));
@@ -233,9 +234,22 @@ void AccessibilityUI::ToggleAccessibility(const base::ListValue* args) {
auto* web_contents =
static_cast<WebContentsImpl*>(WebContents::FromRenderViewHost(rvh));
AccessibilityMode current_mode = web_contents->GetAccessibilityMode();
- // Flip the bits represented by |mode|. See accessibility_mode_enums.h for
- // values.
- current_mode ^= mode;
+
+ if (mode & AccessibilityMode::kNativeAPIs)
+ current_mode.set_mode(AccessibilityMode::kNativeAPIs, true);
+
+ if (mode & AccessibilityMode::kWebContents)
+ current_mode.set_mode(AccessibilityMode::kWebContents, true);
+
+ if (mode & AccessibilityMode::kInlineTextBoxes)
+ current_mode.set_mode(AccessibilityMode::kInlineTextBoxes, true);
+
+ if (mode & AccessibilityMode::kScreenReader)
+ current_mode.set_mode(AccessibilityMode::kScreenReader, true);
+
+ if (mode & AccessibilityMode::kHTML)
+ current_mode.set_mode(AccessibilityMode::kHTML, true);
+
web_contents->SetAccessibilityMode(current_mode);
}
@@ -254,15 +268,15 @@ void AccessibilityUI::SetGlobalFlag(const base::ListValue* args) {
AccessibilityMode new_mode;
if (flag_name_str == kNative) {
- new_mode = ACCESSIBILITY_MODE_FLAG_NATIVE_APIS;
+ new_mode = AccessibilityMode::kNativeAPIs;
} else if (flag_name_str == kWeb) {
- new_mode = ACCESSIBILITY_MODE_FLAG_WEB_CONTENTS;
+ new_mode = AccessibilityMode::kWebContents;
} else if (flag_name_str == kText) {
- new_mode = ACCESSIBILITY_MODE_FLAG_INLINE_TEXT_BOXES;
+ new_mode = AccessibilityMode::kInlineTextBoxes;
} else if (flag_name_str == kScreenReader) {
- new_mode = ACCESSIBILITY_MODE_FLAG_SCREEN_READER;
+ new_mode = AccessibilityMode::kScreenReader;
} else if (flag_name_str == kHTML) {
- new_mode = ACCESSIBILITY_MODE_FLAG_HTML;
+ new_mode = AccessibilityMode::kHTML;
} else {
NOTREACHED();
return;
@@ -270,19 +284,18 @@ void AccessibilityUI::SetGlobalFlag(const base::ListValue* args) {
// It doesn't make sense to enable one of the flags that depends on
// web contents without enabling web contents accessibility too.
- if (enabled &&
- (new_mode == ACCESSIBILITY_MODE_FLAG_INLINE_TEXT_BOXES ||
- new_mode == ACCESSIBILITY_MODE_FLAG_SCREEN_READER ||
- new_mode == ACCESSIBILITY_MODE_FLAG_HTML)) {
- new_mode |= ACCESSIBILITY_MODE_FLAG_WEB_CONTENTS;
+ if (enabled && (new_mode.has_mode(AccessibilityMode::kInlineTextBoxes) ||
+ new_mode.has_mode(AccessibilityMode::kScreenReader) ||
+ new_mode.has_mode(AccessibilityMode::kHTML))) {
+ new_mode.set_mode(AccessibilityMode::kWebContents, true);
}
// Similarly if you disable web accessibility we should remove all
// flags that depend on it.
- if (!enabled && new_mode == ACCESSIBILITY_MODE_FLAG_WEB_CONTENTS) {
- new_mode |= ACCESSIBILITY_MODE_FLAG_INLINE_TEXT_BOXES;
- new_mode |= ACCESSIBILITY_MODE_FLAG_SCREEN_READER;
- new_mode |= ACCESSIBILITY_MODE_FLAG_HTML;
+ if (!enabled && new_mode.has_mode(AccessibilityMode::kWebContents)) {
+ new_mode.set_mode(AccessibilityMode::kInlineTextBoxes, true);
+ new_mode.set_mode(AccessibilityMode::kScreenReader, true);
+ new_mode.set_mode(AccessibilityMode::kHTML, true);
}
BrowserAccessibilityStateImpl* state =
@@ -320,8 +333,9 @@ void AccessibilityUI::RequestAccessibilityTree(const base::ListValue* args) {
static_cast<WebContentsImpl*>(WebContents::FromRenderViewHost(rvh));
// No matter the state of the current web_contents, we want to force the mode
// because we are about to show the accessibility tree
- web_contents->SetAccessibilityMode(ACCESSIBILITY_MODE_FLAG_NATIVE_APIS |
- ACCESSIBILITY_MODE_FLAG_WEB_CONTENTS);
+ web_contents->SetAccessibilityMode(AccessibilityMode(
+ AccessibilityMode::kNativeAPIs | AccessibilityMode::kWebContents));
+
std::unique_ptr<AccessibilityTreeFormatter> formatter;
if (g_show_internal_accessibility_tree)
formatter.reset(new AccessibilityTreeFormatterBlink());

Powered by Google App Engine
This is Rietveld 408576698