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..1b3b9198ee47ab79c8435fd2f7bc79c8984917ec 100644 |
--- a/content/browser/accessibility/browser_accessibility_state_impl.cc |
+++ b/content/browser/accessibility/browser_accessibility_state_impl.cc |
@@ -80,12 +80,12 @@ void BrowserAccessibilityStateImpl::OnScreenReaderDetected() { |
switches::kDisableRendererAccessibility)) { |
return; |
} |
- SetAccessibilityMode(AccessibilityModeComplete); |
+ SetAccessibilityMode(accessibility_mode_ | AccessibilityModeComplete); |
} |
void BrowserAccessibilityStateImpl::EnableAccessibility() { |
// We may want to do something different with this later. |
- SetAccessibilityMode(AccessibilityModeComplete); |
+ SetAccessibilityMode(accessibility_mode_ | AccessibilityModeComplete); |
} |
void BrowserAccessibilityStateImpl::DisableAccessibility() { |
@@ -93,7 +93,8 @@ void BrowserAccessibilityStateImpl::DisableAccessibility() { |
} |
bool BrowserAccessibilityStateImpl::IsAccessibleBrowser() { |
- return (accessibility_mode_ == AccessibilityModeComplete); |
+ return ((accessibility_mode_ & AccessibilityModeComplete) == |
+ AccessibilityModeComplete); |
} |
void BrowserAccessibilityStateImpl::AddHistogramCallback( |
@@ -124,8 +125,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 +145,28 @@ void BrowserAccessibilityStateImpl::SetAccessibilityMode( |
} |
} |
+void BrowserAccessibilityStateImpl::SetRendererAccessibilityMode(bool on) { |
+ if (bool(accessibility_mode_ & AccessibilityModeFlagRenderer) == on) |
David Tseng
2014/01/27 22:16:06
Got it; this still looks cryptic because of the ca
|
+ return; |
+ |
+ if (on) |
David Tseng
2014/01/27 22:16:06
Ditto; xor
aboxhall
2014/01/28 00:18:42
Done.
|
+ accessibility_mode_ |= AccessibilityModeFlagRenderer; |
+ else |
+ accessibility_mode_ &= (~AccessibilityModeFlagRenderer); |
+ // 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.
|
+ // 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 |