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

Side by Side Diff: content/browser/accessibility/browser_accessibility_state_impl.cc

Issue 2558933002: Add more fine-grained accessibility modes. (Closed)
Patch Set: Rename constants 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/accessibility/browser_accessibility_state_impl.h" 5 #include "content/browser/accessibility/browser_accessibility_state_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/metrics/histogram_macros.h" 10 #include "base/metrics/histogram_macros.h"
11 #include "build/build_config.h" 11 #include "build/build_config.h"
12 #include "content/browser/accessibility/accessibility_mode_helper.h"
13 #include "content/browser/renderer_host/render_widget_host_impl.h" 12 #include "content/browser/renderer_host/render_widget_host_impl.h"
14 #include "content/browser/web_contents/web_contents_impl.h" 13 #include "content/browser/web_contents/web_contents_impl.h"
15 #include "content/public/browser/browser_thread.h" 14 #include "content/public/browser/browser_thread.h"
16 #include "content/public/common/content_switches.h" 15 #include "content/public/common/content_switches.h"
17 #include "ui/gfx/color_utils.h" 16 #include "ui/gfx/color_utils.h"
18 17
19 namespace content { 18 namespace content {
20 19
21 // Update the accessibility histogram 45 seconds after initialization. 20 // Update the accessibility histogram 45 seconds after initialization.
22 static const int kAccessibilityHistogramDelaySecs = 45; 21 static const int kAccessibilityHistogramDelaySecs = 45;
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 62
64 void BrowserAccessibilityStateImpl::OnScreenReaderDetected() { 63 void BrowserAccessibilityStateImpl::OnScreenReaderDetected() {
65 if (base::CommandLine::ForCurrentProcess()->HasSwitch( 64 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
66 switches::kDisableRendererAccessibility)) { 65 switches::kDisableRendererAccessibility)) {
67 return; 66 return;
68 } 67 }
69 EnableAccessibility(); 68 EnableAccessibility();
70 } 69 }
71 70
72 void BrowserAccessibilityStateImpl::EnableAccessibility() { 71 void BrowserAccessibilityStateImpl::EnableAccessibility() {
73 AddAccessibilityMode(AccessibilityModeComplete); 72 AddAccessibilityModeFlags(kAccessibilityModeComplete);
74 } 73 }
75 74
76 void BrowserAccessibilityStateImpl::DisableAccessibility() { 75 void BrowserAccessibilityStateImpl::DisableAccessibility() {
77 ResetAccessibilityMode(); 76 ResetAccessibilityMode();
78 } 77 }
79 78
80 void BrowserAccessibilityStateImpl::ResetAccessibilityModeValue() { 79 void BrowserAccessibilityStateImpl::ResetAccessibilityModeValue() {
81 accessibility_mode_ = AccessibilityModeOff; 80 accessibility_mode_ = AccessibilityModeOff;
82 if (base::CommandLine::ForCurrentProcess()->HasSwitch( 81 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
83 switches::kForceRendererAccessibility)) { 82 switches::kForceRendererAccessibility)) {
84 accessibility_mode_ = AccessibilityModeComplete; 83 accessibility_mode_ = kAccessibilityModeComplete;
85 } 84 }
86 } 85 }
87 86
88 void BrowserAccessibilityStateImpl::ResetAccessibilityMode() { 87 void BrowserAccessibilityStateImpl::ResetAccessibilityMode() {
89 ResetAccessibilityModeValue(); 88 ResetAccessibilityModeValue();
90 89
91 std::vector<WebContentsImpl*> web_contents_vector = 90 std::vector<WebContentsImpl*> web_contents_vector =
92 WebContentsImpl::GetAllWebContents(); 91 WebContentsImpl::GetAllWebContents();
93 for (size_t i = 0; i < web_contents_vector.size(); ++i) 92 for (size_t i = 0; i < web_contents_vector.size(); ++i)
94 web_contents_vector[i]->SetAccessibilityMode(accessibility_mode()); 93 web_contents_vector[i]->SetAccessibilityMode(accessibility_mode());
95 } 94 }
96 95
97 bool BrowserAccessibilityStateImpl::IsAccessibleBrowser() { 96 bool BrowserAccessibilityStateImpl::IsAccessibleBrowser() {
98 return ((accessibility_mode_ & AccessibilityModeComplete) == 97 return ((accessibility_mode_ & kAccessibilityModeComplete) ==
99 AccessibilityModeComplete); 98 kAccessibilityModeComplete);
100 } 99 }
101 100
102 void BrowserAccessibilityStateImpl::AddHistogramCallback( 101 void BrowserAccessibilityStateImpl::AddHistogramCallback(
103 base::Closure callback) { 102 base::Closure callback) {
104 histogram_callbacks_.push_back(callback); 103 histogram_callbacks_.push_back(callback);
105 } 104 }
106 105
107 void BrowserAccessibilityStateImpl::UpdateHistogramsForTesting() { 106 void BrowserAccessibilityStateImpl::UpdateHistogramsForTesting() {
108 UpdateHistograms(); 107 UpdateHistograms();
109 } 108 }
(...skipping 10 matching lines...) Expand all
120 UMA_HISTOGRAM_BOOLEAN("Accessibility.ManuallyEnabled", 119 UMA_HISTOGRAM_BOOLEAN("Accessibility.ManuallyEnabled",
121 base::CommandLine::ForCurrentProcess()->HasSwitch( 120 base::CommandLine::ForCurrentProcess()->HasSwitch(
122 switches::kForceRendererAccessibility)); 121 switches::kForceRendererAccessibility));
123 } 122 }
124 123
125 #if !defined(OS_WIN) && !defined(OS_MACOSX) 124 #if !defined(OS_WIN) && !defined(OS_MACOSX)
126 void BrowserAccessibilityStateImpl::UpdatePlatformSpecificHistograms() { 125 void BrowserAccessibilityStateImpl::UpdatePlatformSpecificHistograms() {
127 } 126 }
128 #endif 127 #endif
129 128
130 void BrowserAccessibilityStateImpl::AddAccessibilityMode( 129 void BrowserAccessibilityStateImpl::AddAccessibilityModeFlags(
131 AccessibilityMode mode) { 130 AccessibilityMode mode) {
132 if (base::CommandLine::ForCurrentProcess()->HasSwitch( 131 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
133 switches::kDisableRendererAccessibility)) { 132 switches::kDisableRendererAccessibility)) {
133 mode &= (AccessibilityModeFlagNativeAPIs |
aboxhall 2016/12/12 20:18:29 Can you explain the change here?
dmazzoni 2016/12/12 22:15:36 Hmmm, I think what I was trying to do was make the
134 AccessibilityModeFlagWebContents);
135 }
136
137 accessibility_mode_ |= mode;
138 std::vector<WebContentsImpl*> web_contents_vector =
139 WebContentsImpl::GetAllWebContents();
140 for (size_t i = 0; i < web_contents_vector.size(); ++i)
141 web_contents_vector[i]->AddAccessibilityMode(accessibility_mode_);
142 }
143
144 void BrowserAccessibilityStateImpl::RemoveAccessibilityModeFlags(
145 AccessibilityMode mode) {
146 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
147 switches::kForceRendererAccessibility) &&
148 mode == kAccessibilityModeComplete) {
134 return; 149 return;
135 } 150 }
136 151
137 accessibility_mode_ = 152 accessibility_mode_ = accessibility_mode_ ^ (mode & accessibility_mode_);
138 content::AddAccessibilityModeTo(accessibility_mode_, mode);
139
140 AddOrRemoveFromAllWebContents(mode, true);
141 }
142
143 void BrowserAccessibilityStateImpl::RemoveAccessibilityMode(
144 AccessibilityMode mode) {
145 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
146 switches::kForceRendererAccessibility) &&
147 mode == AccessibilityModeComplete) {
148 return;
149 }
150
151 accessibility_mode_ =
152 content::RemoveAccessibilityModeFrom(accessibility_mode_, mode);
153
154 AddOrRemoveFromAllWebContents(mode, false);
155 }
156
157 void BrowserAccessibilityStateImpl::AddOrRemoveFromAllWebContents(
158 AccessibilityMode mode,
159 bool add) {
160 std::vector<WebContentsImpl*> web_contents_vector = 153 std::vector<WebContentsImpl*> web_contents_vector =
161 WebContentsImpl::GetAllWebContents(); 154 WebContentsImpl::GetAllWebContents();
162 for (size_t i = 0; i < web_contents_vector.size(); ++i) { 155 for (size_t i = 0; i < web_contents_vector.size(); ++i)
163 if (add) 156 web_contents_vector[i]->SetAccessibilityMode(accessibility_mode());
164 web_contents_vector[i]->AddAccessibilityMode(mode);
165 else
166 web_contents_vector[i]->RemoveAccessibilityMode(mode);
167 }
168 } 157 }
169 158
170 } // namespace content 159 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698