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

Unified 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: 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/accessibility/browser_accessibility_state_impl.cc
diff --git a/content/browser/accessibility/browser_accessibility_state_impl.cc b/content/browser/accessibility/browser_accessibility_state_impl.cc
index 3dee7d62b33d46a055500af0e3ee6dd9d87508b0..cf8708ef7eb82b0174e51e7a3fa20f1b3c6bc961 100644
--- a/content/browser/accessibility/browser_accessibility_state_impl.cc
+++ b/content/browser/accessibility/browser_accessibility_state_impl.cc
@@ -36,20 +36,22 @@ BrowserAccessibilityStateImpl* BrowserAccessibilityStateImpl::GetInstance() {
BrowserAccessibilityStateImpl::BrowserAccessibilityStateImpl()
: BrowserAccessibilityState(),
- accessibility_mode_(AccessibilityModeOff) {
+ accessibility_mode_(0) {
#if defined(OS_WIN)
// On Windows 8, always enable accessibility for editable text controls
// so we can show the virtual keyboard when one is enabled.
if (base::win::GetVersion() >= base::win::VERSION_WIN8 &&
!CommandLine::ForCurrentProcess()->HasSwitch(
switches::kDisableRendererAccessibility)) {
- accessibility_mode_ = AccessibilityModeEditableTextOnly;
+ accessibility_mode_ =
+ AccessibilityModeFlagRenderer & AccessibilityModeFlagEditableTextOnly;
}
#endif // defined(OS_WIN)
if (CommandLine::ForCurrentProcess()->HasSwitch(
switches::kForceRendererAccessibility)) {
- accessibility_mode_ = AccessibilityModeComplete;
+ accessibility_mode_ =
+ AccessibilityModeFlagRenderer & AccessibilityModeFlagPlatform;
}
#if defined(OS_WIN)
@@ -80,20 +82,23 @@ void BrowserAccessibilityStateImpl::OnScreenReaderDetected() {
switches::kDisableRendererAccessibility)) {
return;
}
- SetAccessibilityMode(AccessibilityModeComplete);
+ SetAccessibilityMode(AccessibilityModeFlagRenderer |
+ AccessibilityModeFlagPlatform);
}
void BrowserAccessibilityStateImpl::EnableAccessibility() {
// We may want to do something different with this later.
- SetAccessibilityMode(AccessibilityModeComplete);
+ SetAccessibilityMode(AccessibilityModeFlagRenderer |
+ AccessibilityModeFlagPlatform);
}
void BrowserAccessibilityStateImpl::DisableAccessibility() {
- SetAccessibilityMode(AccessibilityModeOff);
+ SetAccessibilityMode(0);
David Tseng 2014/01/23 18:44:19 Add a name for 0 as well.
aboxhall 2014/01/27 18:03:15 Done.
}
bool BrowserAccessibilityStateImpl::IsAccessibleBrowser() {
- return (accessibility_mode_ == AccessibilityModeComplete);
+ return ((accessibility_mode_ & AccessibilityModeFlagRenderer) &&
+ (accessibility_mode_ & AccessibilityModeFlagPlatform));
}
void BrowserAccessibilityStateImpl::AddHistogramCallback(
@@ -124,8 +129,7 @@ void BrowserAccessibilityStateImpl::UpdatePlatformSpecificHistograms() {
}
#endif
-void BrowserAccessibilityStateImpl::SetAccessibilityMode(
- AccessibilityMode mode) {
+void BrowserAccessibilityStateImpl::SetAccessibilityMode(unsigned int mode) {
if (accessibility_mode_ == mode)
return;
accessibility_mode_ = mode;
@@ -145,4 +149,28 @@ void BrowserAccessibilityStateImpl::SetAccessibilityMode(
}
}
+void BrowserAccessibilityStateImpl::SetRendererAccessibilityMode(bool on) {
+ if ((accessibility_mode_ & AccessibilityModeFlagRenderer) == on)
David Tseng 2014/01/23 18:44:19 This looks wrong; don't you want: ((accessibility_
aboxhall 2014/01/27 18:03:15 I don't think so. I want to check not whether it's
+ return;
+
+ if (on)
+ accessibility_mode_ |= AccessibilityModeFlagRenderer;
+ else
+ accessibility_mode_ &= (~AccessibilityModeFlagRenderer);
+ // Iterate over all RenderWidgetHosts, even swapped out ones in case
+ // they become active again.
+ scoped_ptr<RenderWidgetHostIterator> widgets(
+ RenderWidgetHostImpl::GetAllRenderWidgetHosts());
+ while (RenderWidgetHost* widget = widgets->GetNextHost()) {
+ // Ignore processes that don't have a connection, such as crashed tabs.
+ if (!widget->GetProcess()->HasConnection())
+ continue;
+ if (!widget->IsRenderView())
+ continue;
+
+ RenderWidgetHostImpl::From(widget)
+ ->SetAccessibilityMode(accessibility_mode_);
+ }
+}
+
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698