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

Unified Diff: content/browser/accessibility/browser_accessibility_state_impl.cc

Issue 14473011: Adds new experimental accessibility extension api to enable or disable native accessibility. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Rename BrowserAccessibilityState functions to OnAccessibilityEnabled/DisabledByExtensionAPI Created 7 years, 8 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 3cb73fe8a8e1656c440ca4537933d387e658a8e2..a7af6790938dd049ddc9964290c8f61708429992 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,32 @@ 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;
+
+ RenderProcessHost::RenderWidgetHostsIterator rwit(
sky 2013/05/01 00:51:22 nit: move into for loop (like you did on 131).
+ render_process_host->GetRenderWidgetHostsIterator());
+ for (; !rwit.IsAtEnd(); rwit.Advance()) {
+ RenderWidgetHost* rwh = const_cast<RenderWidgetHost*>(
sky 2013/05/01 00:51:22 I'm not sure about the const_cast here.
jam 2013/05/01 05:19:17 seems fine to me. i think it's a mistake that the
+ rwit.GetCurrentValue());
+ DCHECK(rwh);
+ if (!rwh || !rwh->IsRenderView())
+ continue;
+ RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(rwh);
+ rwhi->SetAccessibilityMode(mode);
+ }
+ }
}
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698