| 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 3cb73fe8a8e1656c440ca4537933d387e658a8e2..e8c7923f196217b7c02582ff379461163e575417 100644
|
| --- a/content/browser/accessibility/browser_accessibility_state_impl.cc
|
| +++ b/content/browser/accessibility/browser_accessibility_state_impl.cc
|
| @@ -7,7 +7,9 @@
|
| #include "base/command_line.h"
|
| #include "base/metrics/histogram.h"
|
| #include "base/timer.h"
|
| +#include "content/browser/renderer_host/render_widget_host_impl.h"
|
| #include "content/public/browser/browser_thread.h"
|
| +#include "content/public/browser/render_process_host.h"
|
| #include "content/public/common/content_switches.h"
|
| #include "ui/gfx/sys_color_change_listener.h"
|
|
|
| @@ -80,11 +82,15 @@ void BrowserAccessibilityStateImpl::OnScreenReaderDetected() {
|
| SetAccessibilityMode(AccessibilityModeComplete);
|
| }
|
|
|
| -void BrowserAccessibilityStateImpl::OnAccessibilityEnabledManually() {
|
| +void BrowserAccessibilityStateImpl::OnAccessibilityEnabledByExtensionAPI() {
|
| // We may want to do something different with this later.
|
| SetAccessibilityMode(AccessibilityModeComplete);
|
| }
|
|
|
| +void BrowserAccessibilityStateImpl::OnAccessibilityDisabledByExtensionAPI() {
|
| + SetAccessibilityMode(AccessibilityModeOff);
|
| +}
|
| +
|
| bool BrowserAccessibilityStateImpl::IsAccessibleBrowser() {
|
| return (accessibility_mode_ == AccessibilityModeComplete);
|
| }
|
| @@ -117,13 +123,33 @@ void BrowserAccessibilityStateImpl::UpdatePlatformSpecificHistograms() {
|
| }
|
| #endif
|
|
|
| -AccessibilityMode BrowserAccessibilityStateImpl::GetAccessibilityMode() {
|
| - return accessibility_mode_;
|
| -}
|
| -
|
| void BrowserAccessibilityStateImpl::SetAccessibilityMode(
|
| AccessibilityMode mode) {
|
| + if (accessibility_mode_ == mode)
|
| + return;
|
| accessibility_mode_ = mode;
|
| + for (RenderProcessHost::iterator it(RenderProcessHost::AllHostsIterator());
|
| + !it.IsAtEnd(); it.Advance()) {
|
| + RenderProcessHost* render_process_host = it.GetCurrentValue();
|
| + DCHECK(render_process_host);
|
| +
|
| + // Ignore processes that don't have a connection, such as crashed tabs.
|
| + if (!render_process_host->HasConnection())
|
| + continue;
|
| +
|
| + for (RenderProcessHost::RenderWidgetHostsIterator rwit(
|
| + render_process_host->GetRenderWidgetHostsIterator());
|
| + !rwit.IsAtEnd();
|
| + rwit.Advance()) {
|
| + RenderWidgetHost* rwh = const_cast<RenderWidgetHost*>(
|
| + rwit.GetCurrentValue());
|
| + DCHECK(rwh);
|
| + if (!rwh || !rwh->IsRenderView())
|
| + continue;
|
| + RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(rwh);
|
| + rwhi->SetAccessibilityMode(mode);
|
| + }
|
| + }
|
| }
|
|
|
| } // namespace content
|
|
|