Index: chrome/browser/renderer_host/test/renderer_accessibility_browsertest.cc |
=================================================================== |
--- chrome/browser/renderer_host/test/renderer_accessibility_browsertest.cc (revision 61074) |
+++ chrome/browser/renderer_host/test/renderer_accessibility_browsertest.cc (working copy) |
@@ -30,6 +30,20 @@ |
public: |
RendererAccessibilityBrowserTest() {} |
+ // Tell the renderer to send an accessibility tree, then wait for the |
+ // notification that it's been received. |
+ const WebAccessibility& GetWebAccessibilityTree() { |
+ RenderWidgetHostView* host_view = |
+ browser()->GetSelectedTabContents()->GetRenderWidgetHostView(); |
+ RenderWidgetHost* host = host_view->GetRenderWidgetHost(); |
+ RenderViewHost* view_host = static_cast<RenderViewHost*>(host); |
+ view_host->set_save_accessibility_tree_for_testing(true); |
+ view_host->EnableRendererAccessibility(); |
+ ui_test_utils::WaitForNotification( |
+ NotificationType::RENDER_VIEW_HOST_ACCESSIBILITY_TREE_UPDATED); |
+ return view_host->accessibility_tree(); |
+ } |
+ |
// InProcessBrowserTest |
void SetUpInProcessBrowserTestFixture(); |
void TearDownInProcessBrowserTestFixture(); |
@@ -55,6 +69,7 @@ |
::CoUninitialize(); |
#endif |
} |
+ |
// Convenience method to get the value of a particular WebAccessibility |
// node attribute as a UTF-8 const char*. |
std::string RendererAccessibilityBrowserTest::GetAttr( |
@@ -67,7 +82,7 @@ |
} |
IN_PROC_BROWSER_TEST_F(RendererAccessibilityBrowserTest, |
- TestCrossPlatformAccessibilityTree) { |
+ CrossPlatformWebpageAccessibility) { |
// Create a data url and load it. |
const char url_str[] = |
"data:text/html," |
@@ -77,20 +92,9 @@ |
"</body></html>"; |
GURL url(url_str); |
browser()->OpenURL(url, GURL(), CURRENT_TAB, PageTransition::TYPED); |
+ const WebAccessibility& tree = GetWebAccessibilityTree(); |
- // Tell the renderer to send an accessibility tree, then wait for the |
- // notification that it's been received. |
- RenderWidgetHostView* host_view = |
- browser()->GetSelectedTabContents()->GetRenderWidgetHostView(); |
- RenderWidgetHost* host = host_view->GetRenderWidgetHost(); |
- RenderViewHost* view_host = static_cast<RenderViewHost*>(host); |
- view_host->set_save_accessibility_tree_for_testing(true); |
- view_host->EnableRendererAccessibility(); |
- ui_test_utils::WaitForNotification( |
- NotificationType::RENDER_VIEW_HOST_ACCESSIBILITY_TREE_UPDATED); |
- |
// Check properties of the root element of the tree. |
- const WebAccessibility& tree = view_host->accessibility_tree(); |
EXPECT_STREQ(url_str, GetAttr(tree, WebAccessibility::ATTR_DOC_URL).c_str()); |
EXPECT_STREQ( |
"Accessibility Test", |
@@ -139,4 +143,62 @@ |
"checkbox", UTF16ToUTF8(checkbox.html_attributes[0].second).c_str()); |
} |
+IN_PROC_BROWSER_TEST_F(RendererAccessibilityBrowserTest, |
+ CrossPlatformUnselectedEditableTextAccessibility) { |
+ // Create a data url and load it. |
+ const char url_str[] = |
+ "data:text/html," |
+ "<!doctype html>" |
+ "<body>" |
+ "<input value=\"Hello, world.\"/>" |
+ "</body></html>"; |
+ GURL url(url_str); |
+ browser()->OpenURL(url, GURL(), CURRENT_TAB, PageTransition::TYPED); |
+ |
+ const WebAccessibility& tree = GetWebAccessibilityTree(); |
+ ASSERT_EQ(1U, tree.children.size()); |
+ const WebAccessibility& body = tree.children[0]; |
+ ASSERT_EQ(1U, body.children.size()); |
+ const WebAccessibility& text = body.children[0]; |
+ EXPECT_EQ(WebAccessibility::ROLE_TEXT_FIELD, text.role); |
+ EXPECT_STREQ( |
+ "input", GetAttr(text, WebAccessibility::ATTR_HTML_TAG).c_str()); |
+ EXPECT_STREQ( |
+ "0", GetAttr(text, WebAccessibility::ATTR_TEXT_SEL_START).c_str()); |
+ EXPECT_STREQ( |
+ "0", GetAttr(text, WebAccessibility::ATTR_TEXT_SEL_END).c_str()); |
+ EXPECT_STREQ("Hello, world.", UTF16ToUTF8(text.value).c_str()); |
+ |
+ // TODO(dmazzoni): as soon as more accessibility code is cross-platform, |
+ // this code should test that the accessible info is dynamically updated |
+ // if the selection or value changes. |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(RendererAccessibilityBrowserTest, |
+ CrossPlatformSelectedEditableTextAccessibility) { |
+ // Create a data url and load it. |
+ const char url_str[] = |
+ "data:text/html," |
+ "<!doctype html>" |
+ "<body onload=\"document.body.children[0].select();\">" |
+ "<input value=\"Hello, world.\"/>" |
+ "</body></html>"; |
+ GURL url(url_str); |
+ browser()->OpenURL(url, GURL(), CURRENT_TAB, PageTransition::TYPED); |
+ |
+ const WebAccessibility& tree = GetWebAccessibilityTree(); |
+ ASSERT_EQ(1U, tree.children.size()); |
+ const WebAccessibility& body = tree.children[0]; |
+ ASSERT_EQ(1U, body.children.size()); |
+ const WebAccessibility& text = body.children[0]; |
+ EXPECT_EQ(WebAccessibility::ROLE_TEXT_FIELD, text.role); |
+ EXPECT_STREQ( |
+ "input", GetAttr(text, WebAccessibility::ATTR_HTML_TAG).c_str()); |
+ EXPECT_STREQ( |
+ "0", GetAttr(text, WebAccessibility::ATTR_TEXT_SEL_START).c_str()); |
+ EXPECT_STREQ( |
+ "13", GetAttr(text, WebAccessibility::ATTR_TEXT_SEL_END).c_str()); |
+ EXPECT_STREQ("Hello, world.", UTF16ToUTF8(text.value).c_str()); |
+} |
+ |
} // namespace |