diff options
author | dmazzoni@chromium.org <dmazzoni@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-13 21:16:29 +0000 |
---|---|---|
committer | dmazzoni@chromium.org <dmazzoni@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-13 21:16:29 +0000 |
commit | 3e3c452f5119bc837ebc98af5de8d5d75cd04ce6 (patch) | |
tree | 8e06f820d5562a0e8f7be427bfff37bb9c92fb78 /content/browser/accessibility/renderer_accessibility_browsertest.cc | |
parent | 2436a6b19ebb77226b96b0e37623b9b0785e172c (diff) | |
download | chromium_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.cc | 52 |
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 |