summaryrefslogtreecommitdiffstats
path: root/content/browser/accessibility/renderer_accessibility_browsertest.cc
diff options
context:
space:
mode:
authordmazzoni@chromium.org <dmazzoni@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-13 21:16:29 +0000
committerdmazzoni@chromium.org <dmazzoni@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-13 21:16:29 +0000
commit3e3c452f5119bc837ebc98af5de8d5d75cd04ce6 (patch)
tree8e06f820d5562a0e8f7be427bfff37bb9c92fb78 /content/browser/accessibility/renderer_accessibility_browsertest.cc
parent2436a6b19ebb77226b96b0e37623b9b0785e172c (diff)
downloadchromium_src-3e3c452f5119bc837ebc98af5de8d5d75cd04ce6.zip
chromium_src-3e3c452f5119bc837ebc98af5de8d5d75cd04ce6.tar.gz
chromium_src-3e3c452f5119bc837ebc98af5de8d5d75cd04ce6.tar.bz2
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
Diffstat (limited to 'content/browser/accessibility/renderer_accessibility_browsertest.cc')
-rw-r--r--content/browser/accessibility/renderer_accessibility_browsertest.cc52
1 files changed, 50 insertions, 2 deletions
diff --git a/content/browser/accessibility/renderer_accessibility_browsertest.cc b/content/browser/accessibility/renderer_accessibility_browsertest.cc
index 76d77fd..e8c5acc 100644
--- a/content/browser/accessibility/renderer_accessibility_browsertest.cc
+++ b/content/browser/accessibility/renderer_accessibility_browsertest.cc
@@ -35,7 +35,8 @@ class RendererAccessibilityBrowserTest : public InProcessBrowserTest {
// Tell the renderer to send an accessibility tree, then wait for the
// notification that it's been received.
- const WebAccessibility& GetWebAccessibilityTree() {
+ const WebAccessibility& GetWebAccessibilityTree(
+ AccessibilityMode accessibility_mode = AccessibilityModeComplete) {
ui_test_utils::WindowedNotificationObserver tree_updated_observer(
content::NOTIFICATION_RENDER_VIEW_HOST_ACCESSIBILITY_TREE_UPDATED,
content::NotificationService::AllSources());
@@ -45,7 +46,7 @@ class RendererAccessibilityBrowserTest : public InProcessBrowserTest {
RenderWidgetHostImpl::From(host_view->GetRenderWidgetHost());
RenderViewHostImpl* view_host = static_cast<RenderViewHostImpl*>(host);
view_host->set_save_accessibility_tree_for_testing(true);
- view_host->EnableRendererAccessibility();
+ view_host->SetAccessibilityMode(accessibility_mode);
tree_updated_observer.Wait();
return view_host->accessibility_tree_for_testing();
}
@@ -463,4 +464,51 @@ IN_PROC_BROWSER_TEST_F(RendererAccessibilityBrowserTest,
true, GetBoolAttr(textbox, WebAccessibility::ATTR_CAN_SET_VALUE));
}
+IN_PROC_BROWSER_TEST_F(RendererAccessibilityBrowserTest,
+ CrossPlatformEditableTextOnlyMode) {
+ const char url_str[] =
+ "data:text/html,"
+ "<!doctype html>"
+ "<h1>Heading</h1>"
+ "<input type=text value=text0>"
+ "<textarea>text1</textarea>"
+ "<div role=textbox>text2</div>"
+ "<ul>"
+ " <li><input type=text value=text3>"
+ " <li><textarea>text4</textarea>"
+ " <li><div role=textbox>text5</div>"
+ " <li><button>button</button>"
+ "</ul>";
+
+ GURL url(url_str);
+ browser()->OpenURL(OpenURLParams(
+ url, Referrer(), CURRENT_TAB, content::PAGE_TRANSITION_TYPED, false));
+ const WebAccessibility& tree = GetWebAccessibilityTree(
+ AccessibilityModeEditableTextOnly);
+
+ const WebAccessibility& text0 = tree.children[0];
+ EXPECT_EQ(WebAccessibility::ROLE_TEXT_FIELD, text0.role);
+ EXPECT_STREQ("text0", UTF16ToUTF8(text0.value).c_str());
+
+ const WebAccessibility& text1 = tree.children[1];
+ EXPECT_EQ(WebAccessibility::ROLE_TEXTAREA, text1.role);
+ EXPECT_STREQ("text1", UTF16ToUTF8(text1.value).c_str());
+
+ const WebAccessibility& text2 = tree.children[2];
+ EXPECT_EQ(WebAccessibility::ROLE_TEXT_FIELD, text2.role);
+ EXPECT_STREQ("text2", UTF16ToUTF8(text2.value).c_str());
+
+ const WebAccessibility& text3 = tree.children[3];
+ EXPECT_EQ(WebAccessibility::ROLE_TEXT_FIELD, text3.role);
+ EXPECT_STREQ("text3", UTF16ToUTF8(text3.value).c_str());
+
+ const WebAccessibility& text4 = tree.children[4];
+ EXPECT_EQ(WebAccessibility::ROLE_TEXTAREA, text4.role);
+ EXPECT_STREQ("text4", UTF16ToUTF8(text4.value).c_str());
+
+ const WebAccessibility& text5 = tree.children[5];
+ EXPECT_EQ(WebAccessibility::ROLE_TEXT_FIELD, text5.role);
+ EXPECT_STREQ("text5", UTF16ToUTF8(text5.value).c_str());
+}
+
} // namespace