Index: content/browser/accessibility/accessibility_win_browsertest.cc |
diff --git a/content/browser/accessibility/accessibility_win_browsertest.cc b/content/browser/accessibility/accessibility_win_browsertest.cc |
index 695c96b047bb30825a1a54243ee49ef1dc96adcd..a11c026f8ad3f575722796375e22a09d649f9609 100644 |
--- a/content/browser/accessibility/accessibility_win_browsertest.cc |
+++ b/content/browser/accessibility/accessibility_win_browsertest.cc |
@@ -23,19 +23,13 @@ |
#include "content/test/accessibility_browser_test_utils.h" |
#include "third_party/iaccessible2/ia2_api_all.h" |
#include "third_party/isimpledom/ISimpleDOMNode.h" |
- |
-// TODO(dmazzoni): Disabled accessibility tests on Win64. crbug.com/179717 |
-#if defined(ARCH_CPU_X86_64) |
-#define MAYBE(x) DISABLED_##x |
-#else |
-#define MAYBE(x) x |
-#endif |
+#include "ui/aura/window.h" |
+#include "ui/aura/window_tree_host.h" |
namespace content { |
namespace { |
- |
// Helpers -------------------------------------------------------------------- |
base::win::ScopedComPtr<IAccessible> GetAccessibleFromResultVariant( |
@@ -91,7 +85,9 @@ void RecursiveFindNodeInAccessibilityTree(IAccessible* node, |
// on the bots, this is really helpful in figuring out why. |
for (int i = 0; i < depth; i++) |
printf(" "); |
- printf("role=%d name=%s\n", V_I4(&role), base::WideToUTF8(name).c_str()); |
+ printf("role=%s name=%s\n", |
+ base::WideToUTF8(IAccessibleRoleToString(V_I4(&role))).c_str(), |
+ base::WideToUTF8(name).c_str()); |
if (expected_role == V_I4(&role) && expected_name == name) { |
*found = true; |
@@ -158,24 +154,8 @@ void AccessibilityWinBrowserTest::LoadInitialAccessibilityTreeFromHtml( |
// Retrieve the MSAA client accessibility object for the Render Widget Host View |
// of the selected tab. |
IAccessible* AccessibilityWinBrowserTest::GetRendererAccessible() { |
- HWND hwnd_render_widget_host_view = |
- shell()->web_contents()->GetRenderWidgetHostView()->GetNativeView(); |
- |
- // Invoke windows screen reader detection by sending the WM_GETOBJECT message |
- // with kIdCustom as the LPARAM. |
- const int32 kIdCustom = 1; |
- SendMessage( |
- hwnd_render_widget_host_view, WM_GETOBJECT, OBJID_CLIENT, kIdCustom); |
- |
- IAccessible* accessible; |
- HRESULT hr = AccessibleObjectFromWindow( |
- hwnd_render_widget_host_view, OBJID_CLIENT, |
- IID_IAccessible, reinterpret_cast<void**>(&accessible)); |
- |
- EXPECT_EQ(S_OK, hr); |
- EXPECT_NE(accessible, reinterpret_cast<IAccessible*>(NULL)); |
- |
- return accessible; |
+ content::WebContents* web_contents = shell()->web_contents(); |
+ return web_contents->GetRenderWidgetHostView()->GetNativeViewAccessible(); |
} |
void AccessibilityWinBrowserTest::ExecuteScript(const std::wstring& script) { |
@@ -418,7 +398,7 @@ base::string16 AccessibleChecker::RoleVariantToString( |
// Tests ---------------------------------------------------------------------- |
IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest, |
- MAYBE(TestBusyAccessibilityTree)) { |
+ TestBusyAccessibilityTree) { |
NavigateToURL(shell(), GURL(url::kAboutBlankURL)); |
// The initial accessible returned should have state STATE_SYSTEM_BUSY while |
@@ -431,49 +411,6 @@ IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest, |
document1_checker.CheckAccessible(GetRendererAccessible()); |
} |
-// Flaky, http://crbug.com/167320 . |
-IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest, |
- DISABLED_TestRendererAccessibilityTree) { |
- LoadInitialAccessibilityTreeFromHtml( |
- "<html><head><title>Accessibility Win Test</title></head>" |
- "<body><input type='button' value='push' /><input type='checkbox' />" |
- "</body></html>"); |
- |
- // Check the browser's copy of the renderer accessibility tree. |
- AccessibleChecker button_checker(L"push", ROLE_SYSTEM_PUSHBUTTON, |
- std::wstring()); |
- AccessibleChecker checkbox_checker(std::wstring(), ROLE_SYSTEM_CHECKBUTTON, |
- std::wstring()); |
- AccessibleChecker body_checker(std::wstring(), L"body", IA2_ROLE_SECTION, |
- std::wstring()); |
- AccessibleChecker document2_checker(L"Accessibility Win Test", |
- ROLE_SYSTEM_DOCUMENT, std::wstring()); |
- body_checker.AppendExpectedChild(&button_checker); |
- body_checker.AppendExpectedChild(&checkbox_checker); |
- document2_checker.AppendExpectedChild(&body_checker); |
- document2_checker.CheckAccessible(GetRendererAccessible()); |
- |
- // Check that document accessible has a parent accessible. |
- base::win::ScopedComPtr<IAccessible> document_accessible( |
- GetRendererAccessible()); |
- ASSERT_NE(document_accessible.get(), reinterpret_cast<IAccessible*>(NULL)); |
- base::win::ScopedComPtr<IDispatch> parent_dispatch; |
- HRESULT hr = document_accessible->get_accParent(parent_dispatch.Receive()); |
- EXPECT_EQ(S_OK, hr); |
- EXPECT_NE(parent_dispatch, reinterpret_cast<IDispatch*>(NULL)); |
- |
- // Navigate to another page. |
- NavigateToURL(shell(), GURL(url::kAboutBlankURL)); |
- |
- // Verify that the IAccessible reference still points to a valid object and |
- // that calls to its methods fail since the tree is no longer valid after |
- // the page navagation. |
- base::win::ScopedBstr name; |
- base::win::ScopedVariant childid_self(CHILDID_SELF); |
- hr = document_accessible->get_accName(childid_self, name.Receive()); |
- ASSERT_EQ(E_FAIL, hr); |
-} |
- |
// Periodically failing. See crbug.com/145537 |
IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest, |
DISABLED_TestNotificationActiveDescendantChanged) { |
@@ -529,7 +466,7 @@ IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest, |
} |
IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest, |
- MAYBE(TestNotificationCheckedStateChanged)) { |
+ TestNotificationCheckedStateChanged) { |
LoadInitialAccessibilityTreeFromHtml( |
"<body><input type='checkbox' /></body>"); |
@@ -560,7 +497,7 @@ IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest, |
} |
IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest, |
- MAYBE(TestNotificationChildrenChanged)) { |
+ TestNotificationChildrenChanged) { |
// The role attribute causes the node to be in the accessibility tree. |
LoadInitialAccessibilityTreeFromHtml("<body role=group></body>"); |
@@ -582,13 +519,14 @@ IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest, |
waiter->WaitForNotification(); |
// Check that the accessibility tree of the browser has been updated. |
- AccessibleChecker text_checker(L"new text", ROLE_SYSTEM_TEXT, std::wstring()); |
+ AccessibleChecker text_checker( |
+ L"new text", ROLE_SYSTEM_STATICTEXT, std::wstring()); |
group_checker.AppendExpectedChild(&text_checker); |
document_checker.CheckAccessible(GetRendererAccessible()); |
} |
IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest, |
- MAYBE(TestNotificationChildrenChanged2)) { |
+ TestNotificationChildrenChanged2) { |
// The role attribute causes the node to be in the accessibility tree. |
LoadInitialAccessibilityTreeFromHtml( |
"<div role=group style='visibility: hidden'>text</div>"); |
@@ -607,7 +545,7 @@ IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest, |
waiter->WaitForNotification(); |
// Check that the accessibility tree of the browser has been updated. |
- AccessibleChecker static_text_checker(L"text", ROLE_SYSTEM_TEXT, |
+ AccessibleChecker static_text_checker(L"text", ROLE_SYSTEM_STATICTEXT, |
std::wstring()); |
AccessibleChecker group_checker(std::wstring(), ROLE_SYSTEM_GROUPING, |
std::wstring()); |
@@ -617,7 +555,7 @@ IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest, |
} |
IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest, |
- MAYBE(TestNotificationFocusChanged)) { |
+ TestNotificationFocusChanged) { |
// The role attribute causes the node to be in the accessibility tree. |
LoadInitialAccessibilityTreeFromHtml("<div role=group tabindex='-1'></div>"); |
@@ -665,7 +603,7 @@ IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest, |
} |
IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest, |
- MAYBE(TestNotificationValueChanged)) { |
+ TestNotificationValueChanged) { |
LoadInitialAccessibilityTreeFromHtml( |
"<body><input type='text' value='old value'/></body>"); |
@@ -685,7 +623,7 @@ IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest, |
scoped_ptr<AccessibilityNotificationWaiter> waiter( |
new AccessibilityNotificationWaiter( |
shell(), AccessibilityModeComplete, |
- ui::AX_EVENT_VALUE_CHANGE)); |
+ ui::AX_EVENT_VALUE_CHANGED)); |
ExecuteScript(L"document.body.children[0].value='new value'"); |
waiter->WaitForNotification(); |
@@ -703,16 +641,21 @@ IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest, |
// that wraps the tab contents returns the IAccessible implementation |
// provided by RenderWidgetHostViewWin in GetNativeViewAccessible(). |
IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest, |
- MAYBE(ContainsRendererAccessibilityTree)) { |
+ ContainsRendererAccessibilityTree) { |
LoadInitialAccessibilityTreeFromHtml( |
"<html><head><title>MyDocument</title></head>" |
"<body>Content</body></html>"); |
- // Get the accessibility object for the browser window. |
- HWND browser_hwnd = shell()->window(); |
+ // Get the accessibility object for the window tree host. |
+ aura::Window* window = shell()->window(); |
+ CHECK(window); |
+ aura::WindowTreeHost* window_tree_host = window->GetHost(); |
+ CHECK(window_tree_host); |
+ HWND hwnd = window_tree_host->GetAcceleratedWidget(); |
+ CHECK(hwnd); |
base::win::ScopedComPtr<IAccessible> browser_accessible; |
HRESULT hr = AccessibleObjectFromWindow( |
- browser_hwnd, |
+ hwnd, |
OBJID_WINDOW, |
IID_IAccessible, |
reinterpret_cast<void**>(browser_accessible.Receive())); |
@@ -724,83 +667,8 @@ IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest, |
ASSERT_EQ(found, true); |
} |
-// Disabled because of http://crbug.com/144390. |
-IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest, |
- DISABLED_TestToggleButtonRoleAndStates) { |
- AccessibleChecker* button_checker; |
- std::string button_html("data:text/html,"); |
- AccessibleChecker document_checker(std::wstring(), ROLE_SYSTEM_DOCUMENT, |
- std::wstring()); |
- AccessibleChecker body_checker(std::wstring(), L"body", IA2_ROLE_SECTION, |
- std::wstring()); |
- document_checker.AppendExpectedChild(&body_checker); |
- |
-// Temporary macro |
-#define ADD_BUTTON(html, ia2_role, state) \ |
- button_html += html; \ |
- button_checker = new AccessibleChecker(L"x", ROLE_SYSTEM_PUSHBUTTON, \ |
- ia2_role, std::wstring()); \ |
- button_checker->SetExpectedState(state); \ |
- body_checker.AppendExpectedChild(button_checker) |
- |
- // If aria-pressed is 'undefined', empty or not present, use PUSHBUTTON |
- // Otherwise use TOGGLE_BUTTON, even if the value is invalid. |
- // The spec does this in an attempt future-proof in case new values are added. |
- ADD_BUTTON("<span role='button' aria-pressed='false'>x</span>", |
- IA2_ROLE_TOGGLE_BUTTON, 0); |
- ADD_BUTTON("<span role='button' aria-pressed='true'>x</span>", |
- IA2_ROLE_TOGGLE_BUTTON, STATE_SYSTEM_PRESSED); |
- ADD_BUTTON("<span role='button' aria-pressed='mixed'>x</span>", |
- IA2_ROLE_TOGGLE_BUTTON, STATE_SYSTEM_MIXED); |
- ADD_BUTTON("<span role='button' aria-pressed='xyz'>x</span>", |
- IA2_ROLE_TOGGLE_BUTTON, 0); |
- ADD_BUTTON("<span role='button' aria-pressed=''>x</span>", |
- ROLE_SYSTEM_PUSHBUTTON, 0); |
- ADD_BUTTON("<span role='button' aria-pressed>x</span>", |
- ROLE_SYSTEM_PUSHBUTTON, 0); |
- ADD_BUTTON("<span role='button' aria-pressed='undefined'>x</span>", |
- ROLE_SYSTEM_PUSHBUTTON, 0); |
- ADD_BUTTON("<span role='button'>x</span>", ROLE_SYSTEM_PUSHBUTTON, 0); |
- ADD_BUTTON("<input type='button' aria-pressed='true' value='x'/>", |
- IA2_ROLE_TOGGLE_BUTTON, STATE_SYSTEM_FOCUSABLE | STATE_SYSTEM_PRESSED); |
- ADD_BUTTON("<input type='button' aria-pressed='false' value='x'/>", |
- IA2_ROLE_TOGGLE_BUTTON, STATE_SYSTEM_FOCUSABLE); |
- ADD_BUTTON("<input type='button' aria-pressed='mixed' value='x'>", |
- IA2_ROLE_TOGGLE_BUTTON, STATE_SYSTEM_FOCUSABLE | STATE_SYSTEM_MIXED); |
- ADD_BUTTON("<input type='button' aria-pressed='xyz' value='x'/>", |
- IA2_ROLE_TOGGLE_BUTTON, STATE_SYSTEM_FOCUSABLE); |
- ADD_BUTTON("<input type='button' aria-pressed='' value='x'/>", |
- ROLE_SYSTEM_PUSHBUTTON, STATE_SYSTEM_FOCUSABLE); |
- ADD_BUTTON("<input type='button' aria-pressed value='x'>", |
- ROLE_SYSTEM_PUSHBUTTON, STATE_SYSTEM_FOCUSABLE); |
- ADD_BUTTON("<input type='button' aria-pressed='undefined' value='x'>", |
- ROLE_SYSTEM_PUSHBUTTON, STATE_SYSTEM_FOCUSABLE); |
- ADD_BUTTON("<input type='button' value='x'>", |
- ROLE_SYSTEM_PUSHBUTTON, STATE_SYSTEM_FOCUSABLE); |
- ADD_BUTTON("<button aria-pressed='true'>x</button>", |
- IA2_ROLE_TOGGLE_BUTTON, STATE_SYSTEM_FOCUSABLE | STATE_SYSTEM_PRESSED); |
- ADD_BUTTON("<button aria-pressed='false'>x</button>", |
- IA2_ROLE_TOGGLE_BUTTON, STATE_SYSTEM_FOCUSABLE); |
- ADD_BUTTON("<button aria-pressed='mixed'>x</button>", IA2_ROLE_TOGGLE_BUTTON, |
- STATE_SYSTEM_FOCUSABLE | STATE_SYSTEM_MIXED); |
- ADD_BUTTON("<button aria-pressed='xyz'>x</button>", IA2_ROLE_TOGGLE_BUTTON, |
- STATE_SYSTEM_FOCUSABLE); |
- ADD_BUTTON("<button aria-pressed=''>x</button>", |
- ROLE_SYSTEM_PUSHBUTTON, STATE_SYSTEM_FOCUSABLE); |
- ADD_BUTTON("<button aria-pressed>x</button>", |
- ROLE_SYSTEM_PUSHBUTTON, STATE_SYSTEM_FOCUSABLE); |
- ADD_BUTTON("<button aria-pressed='undefined'>x</button>", |
- ROLE_SYSTEM_PUSHBUTTON, STATE_SYSTEM_FOCUSABLE); |
- ADD_BUTTON("<button>x</button>", ROLE_SYSTEM_PUSHBUTTON, |
- STATE_SYSTEM_FOCUSABLE); |
-#undef ADD_BUTTON // Temporary macro |
- |
- LoadInitialAccessibilityTreeFromHtml(button_html); |
- document_checker.CheckAccessible(GetRendererAccessible()); |
-} |
- |
IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest, |
- MAYBE(SupportsISimpleDOM)) { |
+ SupportsISimpleDOM) { |
LoadInitialAccessibilityTreeFromHtml( |
"<body><input type='checkbox' /></body>"); |
@@ -864,7 +732,7 @@ IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest, |
EXPECT_EQ(0, num_children); |
} |
-IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest, MAYBE(TestRoleGroup)) { |
+IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest, TestRoleGroup) { |
LoadInitialAccessibilityTreeFromHtml( |
"<fieldset></fieldset><div role=group></div>"); |