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

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

Issue 2552203005: Enable toggling of new accessibility modes in chrome://accessibility (Closed)
Patch Set: Created 4 years 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 8e9fe1a64229beef0dcf1984a2e58a0972faf2fd..e4f20484a583d5269b493ced6e198a32f381c3de 100644
--- a/content/browser/accessibility/accessibility_ui.cc
+++ b/content/browser/accessibility/accessibility_ui.cc
@@ -65,8 +65,9 @@ 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->SetBoolean(
+ kAccessibilityModeField,
+ 0 != (accessibility_mode & AccessibilityModeFlagWebContents));
return target_data;
}
@@ -125,12 +126,19 @@ bool HandleRequestCallback(BrowserContext* current_context,
base::DictionaryValue data;
data.Set("list", rvh_list.release());
- data.SetInteger(
- "global_a11y_mode",
- BrowserAccessibilityStateImpl::GetInstance()->accessibility_mode());
- data.SetBoolean(
- "global_internal_tree_mode",
- g_show_internal_accessibility_tree);
+ AccessibilityMode mode =
+ BrowserAccessibilityStateImpl::GetInstance()->accessibility_mode();
+ data.SetInteger("native",
+ 0 != (mode & AccessibilityModeFlagNativeAPIs));
+ data.SetInteger("web",
+ 0 != (mode & AccessibilityModeFlagWebContents));
+ data.SetInteger("text",
+ 0 != (mode & AccessibilityModeFlagInlineTextBoxes));
+ data.SetInteger("screenreader",
+ 0 != (mode & AccessibilityModeFlagScreenReader));
+ data.SetInteger("html",
+ 0 != (mode & AccessibilityModeFlagHTML));
+ data.SetBoolean("internal", g_show_internal_accessibility_tree);
std::string json_string;
base::JSONWriter::Write(data, &json_string);
@@ -151,12 +159,8 @@ AccessibilityUI::AccessibilityUI(WebUI* web_ui) : WebUIController(web_ui) {
base::Bind(&AccessibilityUI::ToggleAccessibility,
base::Unretained(this)));
web_ui->RegisterMessageCallback(
- "toggleGlobalAccessibility",
- base::Bind(&AccessibilityUI::ToggleGlobalAccessibility,
- base::Unretained(this)));
- web_ui->RegisterMessageCallback(
- "toggleInternalTree",
- base::Bind(&AccessibilityUI::ToggleInternalTree,
+ "setGlobalFlag",
+ base::Bind(&AccessibilityUI::SetGlobalFlag,
base::Unretained(this)));
web_ui->RegisterMessageCallback(
"requestAccessibilityTree",
@@ -206,18 +210,57 @@ void AccessibilityUI::ToggleAccessibility(const base::ListValue* args) {
}
}
-void AccessibilityUI::ToggleGlobalAccessibility(const base::ListValue* args) {
+void AccessibilityUI::SetGlobalFlag(const base::ListValue* args) {
+ std::string flag_name_str;
+ bool value;
aboxhall 2016/12/12 20:34:45 how about s/value/enabled/ ?
dmazzoni 2016/12/13 00:30:49 Done.
+ CHECK_EQ(2U, args->GetSize());
+ CHECK(args->GetString(0, &flag_name_str));
+ CHECK(args->GetBoolean(1, &value));
+
+ if (flag_name_str == "internal") {
+ g_show_internal_accessibility_tree = value;
+ return;
+ }
+
+ AccessibilityMode new_mode;
+ if (flag_name_str == "native") {
+ new_mode = AccessibilityModeFlagNativeAPIs;
+ } else if (flag_name_str == "web") {
+ new_mode = AccessibilityModeFlagWebContents;
+ } else if (flag_name_str == "text") {
+ new_mode = AccessibilityModeFlagInlineTextBoxes;
+ } else if (flag_name_str == "screenreader") {
+ new_mode = AccessibilityModeFlagScreenReader;
+ } else if (flag_name_str == "html") {
+ new_mode = AccessibilityModeFlagHTML;
+ } else {
+ NOTREACHED();
+ return;
+ }
+
+ // It doesn't make sense to enable one of the flags that depends on
+ // web contents without enabling web contents accessibility too.
+ if (value == true &&
aboxhall 2016/12/12 20:34:45 then you can s/== true// here and s/value == false
dmazzoni 2016/12/13 00:30:50 Done.
+ (new_mode == AccessibilityModeFlagInlineTextBoxes ||
+ new_mode == AccessibilityModeFlagScreenReader ||
+ new_mode == AccessibilityModeFlagHTML)) {
+ new_mode |= AccessibilityModeFlagWebContents;
+ }
+
+ // Similarly if you disable web accessibility we should remove all
aboxhall 2016/12/12 20:34:45 Is that true? Could they not stick around to be "r
dmazzoni 2016/12/13 00:30:50 OK, how about this: I modified the code to show th
+ // flags that depend on it.
+ if (value == false && new_mode == AccessibilityModeFlagWebContents) {
+ new_mode |= AccessibilityModeFlagInlineTextBoxes;
+ new_mode |= AccessibilityModeFlagScreenReader;
+ new_mode |= AccessibilityModeFlagHTML;
+ }
+
BrowserAccessibilityStateImpl* state =
BrowserAccessibilityStateImpl::GetInstance();
- AccessibilityMode mode = state->accessibility_mode();
- if ((mode & kAccessibilityModeComplete) != kAccessibilityModeComplete)
- state->EnableAccessibility();
+ if (value)
+ state->AddAccessibilityModeFlags(new_mode);
else
- state->DisableAccessibility();
-}
-
-void AccessibilityUI::ToggleInternalTree(const base::ListValue* args) {
- g_show_internal_accessibility_tree = !g_show_internal_accessibility_tree;
+ state->RemoveAccessibilityModeFlags(new_mode);
}
void AccessibilityUI::RequestAccessibilityTree(const base::ListValue* args) {

Powered by Google App Engine
This is Rietveld 408576698