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

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

Issue 145283003: Switch AccessibilityMode to be a bitmap (Closed) Base URL: https://chromium.googlesource.com/chromium/src@enable
Patch Set: Address dtseng's comments Created 6 years, 11 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 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 "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/metrics/histogram.h" 8 #include "base/metrics/histogram.h"
9 #include "base/timer/timer.h" 9 #include "base/timer/timer.h"
10 #include "content/browser/renderer_host/render_widget_host_impl.h" 10 #include "content/browser/renderer_host/render_widget_host_impl.h"
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 } 73 }
74 74
75 BrowserAccessibilityStateImpl::~BrowserAccessibilityStateImpl() { 75 BrowserAccessibilityStateImpl::~BrowserAccessibilityStateImpl() {
76 } 76 }
77 77
78 void BrowserAccessibilityStateImpl::OnScreenReaderDetected() { 78 void BrowserAccessibilityStateImpl::OnScreenReaderDetected() {
79 if (CommandLine::ForCurrentProcess()->HasSwitch( 79 if (CommandLine::ForCurrentProcess()->HasSwitch(
80 switches::kDisableRendererAccessibility)) { 80 switches::kDisableRendererAccessibility)) {
81 return; 81 return;
82 } 82 }
83 SetAccessibilityMode(AccessibilityModeComplete); 83 SetAccessibilityMode(accessibility_mode_ | AccessibilityModeComplete);
84 } 84 }
85 85
86 void BrowserAccessibilityStateImpl::EnableAccessibility() { 86 void BrowserAccessibilityStateImpl::EnableAccessibility() {
87 // We may want to do something different with this later. 87 // We may want to do something different with this later.
88 SetAccessibilityMode(AccessibilityModeComplete); 88 SetAccessibilityMode(accessibility_mode_ | AccessibilityModeComplete);
89 } 89 }
90 90
91 void BrowserAccessibilityStateImpl::DisableAccessibility() { 91 void BrowserAccessibilityStateImpl::DisableAccessibility() {
92 SetAccessibilityMode(AccessibilityModeOff); 92 SetAccessibilityMode(AccessibilityModeOff);
93 } 93 }
94 94
95 bool BrowserAccessibilityStateImpl::IsAccessibleBrowser() { 95 bool BrowserAccessibilityStateImpl::IsAccessibleBrowser() {
96 return (accessibility_mode_ == AccessibilityModeComplete); 96 return ((accessibility_mode_ & AccessibilityModeComplete) ==
97 AccessibilityModeComplete);
97 } 98 }
98 99
99 void BrowserAccessibilityStateImpl::AddHistogramCallback( 100 void BrowserAccessibilityStateImpl::AddHistogramCallback(
100 base::Closure callback) { 101 base::Closure callback) {
101 histogram_callbacks_.push_back(callback); 102 histogram_callbacks_.push_back(callback);
102 } 103 }
103 104
104 void BrowserAccessibilityStateImpl::UpdateHistogramsForTesting() { 105 void BrowserAccessibilityStateImpl::UpdateHistogramsForTesting() {
105 UpdateHistograms(); 106 UpdateHistograms();
106 } 107 }
(...skipping 10 matching lines...) Expand all
117 UMA_HISTOGRAM_BOOLEAN("Accessibility.ManuallyEnabled", 118 UMA_HISTOGRAM_BOOLEAN("Accessibility.ManuallyEnabled",
118 CommandLine::ForCurrentProcess()->HasSwitch( 119 CommandLine::ForCurrentProcess()->HasSwitch(
119 switches::kForceRendererAccessibility)); 120 switches::kForceRendererAccessibility));
120 } 121 }
121 122
122 #if !defined(OS_WIN) 123 #if !defined(OS_WIN)
123 void BrowserAccessibilityStateImpl::UpdatePlatformSpecificHistograms() { 124 void BrowserAccessibilityStateImpl::UpdatePlatformSpecificHistograms() {
124 } 125 }
125 #endif 126 #endif
126 127
127 void BrowserAccessibilityStateImpl::SetAccessibilityMode( 128 void BrowserAccessibilityStateImpl::SetAccessibilityMode(unsigned int mode) {
128 AccessibilityMode mode) {
129 if (accessibility_mode_ == mode) 129 if (accessibility_mode_ == mode)
130 return; 130 return;
131 accessibility_mode_ = mode; 131 accessibility_mode_ = mode;
132 132
133 // Iterate over all RenderWidgetHosts, even swapped out ones in case 133 // Iterate over all RenderWidgetHosts, even swapped out ones in case
134 // they become active again. 134 // they become active again.
135 scoped_ptr<RenderWidgetHostIterator> widgets( 135 scoped_ptr<RenderWidgetHostIterator> widgets(
136 RenderWidgetHostImpl::GetAllRenderWidgetHosts()); 136 RenderWidgetHostImpl::GetAllRenderWidgetHosts());
137 while (RenderWidgetHost* widget = widgets->GetNextHost()) { 137 while (RenderWidgetHost* widget = widgets->GetNextHost()) {
138 // Ignore processes that don't have a connection, such as crashed tabs. 138 // Ignore processes that don't have a connection, such as crashed tabs.
139 if (!widget->GetProcess()->HasConnection()) 139 if (!widget->GetProcess()->HasConnection())
140 continue; 140 continue;
141 if (!widget->IsRenderView()) 141 if (!widget->IsRenderView())
142 continue; 142 continue;
143 143
144 RenderWidgetHostImpl::From(widget)->SetAccessibilityMode(mode); 144 RenderWidgetHostImpl::From(widget)->SetAccessibilityMode(mode);
145 } 145 }
146 } 146 }
147 147
148 void BrowserAccessibilityStateImpl::SetRendererAccessibilityMode(bool on) {
149 if (bool(accessibility_mode_ & AccessibilityModeFlagRenderer) == on)
David Tseng 2014/01/27 22:16:06 Got it; this still looks cryptic because of the ca
150 return;
151
152 if (on)
David Tseng 2014/01/27 22:16:06 Ditto; xor
aboxhall 2014/01/28 00:18:42 Done.
153 accessibility_mode_ |= AccessibilityModeFlagRenderer;
154 else
155 accessibility_mode_ &= (~AccessibilityModeFlagRenderer);
156 // Iterate over all RenderWidgetHosts, even swapped out ones in case
David Tseng 2014/01/27 22:16:06 Why not just call through to SetAccessibilityMode
aboxhall 2014/01/28 00:18:42 Done, that's much better.
157 // they become active again.
158 scoped_ptr<RenderWidgetHostIterator> widgets(
159 RenderWidgetHostImpl::GetAllRenderWidgetHosts());
160 while (RenderWidgetHost* widget = widgets->GetNextHost()) {
161 // Ignore processes that don't have a connection, such as crashed tabs.
162 if (!widget->GetProcess()->HasConnection())
163 continue;
164 if (!widget->IsRenderView())
165 continue;
166
167 RenderWidgetHostImpl::From(widget)
168 ->SetAccessibilityMode(accessibility_mode_);
169 }
170 }
171
148 } // namespace content 172 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698