Add an accessibility mode for editable text fields only.

This refactors the triggering of accessibility mode from a boolean state and
command-line flag to an AccessibilityMode enum that's passed directly
when a new RenderView is created, which is also more readable and avoids the
extra command-line flag.

Adds a new mode that only syncs editable text nodes, and enables this on
Windows 8 so that we can support showing the virtual keyboard when an
editable text field gets focus.

BUG=122061,118641
TEST=Adds new test


Review URL: http://codereview.chromium.org/9939011

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@132267 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/content/browser/accessibility/browser_accessibility_state_impl.cc b/content/browser/accessibility/browser_accessibility_state_impl.cc
index f3b8aaf7..b878cdb 100644
--- a/content/browser/accessibility/browser_accessibility_state_impl.cc
+++ b/content/browser/accessibility/browser_accessibility_state_impl.cc
@@ -4,9 +4,11 @@
 
 #include "content/browser/accessibility/browser_accessibility_state_impl.h"
 
+#include "base/command_line.h"
 #include "base/memory/singleton.h"
 #include "base/metrics/histogram.h"
 #include "base/timer.h"
+#include "content/public/common/content_switches.h"
 #include "ui/gfx/sys_color_change_listener.h"
 
 // Update the accessibility histogram 45 seconds after initialization.
@@ -26,6 +28,10 @@
 BrowserAccessibilityStateImpl::BrowserAccessibilityStateImpl()
     : BrowserAccessibilityState(),
       accessibility_enabled_(false) {
+  if (CommandLine::ForCurrentProcess()->HasSwitch(
+          switches::kForceRendererAccessibility)) {
+    OnAccessibilityEnabledManually();
+  }
   update_histogram_timer_.Start(
       FROM_HERE,
       base::TimeDelta::FromSeconds(kAccessibilityHistogramDelaySecs),
@@ -37,6 +43,10 @@
 }
 
 void BrowserAccessibilityStateImpl::OnScreenReaderDetected() {
+  if (CommandLine::ForCurrentProcess()->HasSwitch(
+          switches::kDisableRendererAccessibility)) {
+    return;
+  }
   accessibility_enabled_ = true;
 }