Chromium Code Reviews| 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 |