| Index: chrome/browser/accessibility_win_browsertest.cc
 | 
| ===================================================================
 | 
| --- chrome/browser/accessibility_win_browsertest.cc	(revision 60480)
 | 
| +++ chrome/browser/accessibility_win_browsertest.cc	(working copy)
 | 
| @@ -266,17 +266,15 @@
 | 
|    VARIANT var_role = {0};
 | 
|    HRESULT hr =
 | 
|        accessible->get_accRole(CreateI4Variant(CHILDID_SELF), &var_role);
 | 
| -  EXPECT_EQ(hr, S_OK);
 | 
| -  ASSERT_TRUE(role_ == var_role);
 | 
| +  ASSERT_EQ(hr, S_OK);
 | 
| +  EXPECT_TRUE(role_ == var_role);
 | 
|  }
 | 
|  
 | 
|  void AccessibleChecker::CheckAccessibleValue(IAccessible* accessible) {
 | 
|    CComBSTR value;
 | 
|    HRESULT hr =
 | 
|        accessible->get_accValue(CreateI4Variant(CHILDID_SELF), &value);
 | 
| -  // TODO(ctguil): Use EXPECT_EQ when render widget isn't using prop service.
 | 
| -  // EXPECT_EQ(hr, S_OK);
 | 
| -  EXPECT_TRUE(SUCCEEDED(hr));
 | 
| +  EXPECT_EQ(S_OK, hr);
 | 
|  
 | 
|    // Test that the correct string was returned.
 | 
|    EXPECT_STREQ(value_.c_str(),
 | 
| @@ -291,8 +289,8 @@
 | 
|    HRESULT hr =
 | 
|        accessible->get_accState(CreateI4Variant(CHILDID_SELF), &var_state);
 | 
|    EXPECT_EQ(hr, S_OK);
 | 
| -  EXPECT_EQ(VT_I4, V_VT(&var_state));
 | 
| -  ASSERT_TRUE(state_ == V_I4(&var_state));
 | 
| +  ASSERT_EQ(VT_I4, V_VT(&var_state));
 | 
| +  EXPECT_EQ(state_, V_I4(&var_state));
 | 
|  }
 | 
|  
 | 
|  void AccessibleChecker::CheckAccessibleChildren(IAccessible* parent) {
 | 
| @@ -376,6 +374,55 @@
 | 
|  }
 | 
|  
 | 
|  IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest,
 | 
| +                       TestNotificationActiveDescendantChanged) {
 | 
| +  GURL tree_url("data:text/html,<ul tabindex='-1' role='radiogroup'><li id='li'"
 | 
| +      ">li</li></ul>");
 | 
| +  browser()->OpenURL(tree_url, GURL(), CURRENT_TAB, PageTransition::TYPED);
 | 
| +  GetRendererAccessible();
 | 
| +  ui_test_utils::WaitForNotification(
 | 
| +      NotificationType::RENDER_VIEW_HOST_ACCESSIBILITY_TREE_UPDATED);
 | 
| +
 | 
| +  // Check the browser's copy of the renderer accessibility tree.
 | 
| +  AccessibleChecker list_marker_checker(L"", ROLE_SYSTEM_LISTITEM, L"\x2022");
 | 
| +  AccessibleChecker static_text_checker(L"", ROLE_SYSTEM_TEXT, L"li");
 | 
| +  AccessibleChecker list_item_checker(L"", ROLE_SYSTEM_LISTITEM, L"");
 | 
| +  list_item_checker.SetExpectedState(
 | 
| +      STATE_SYSTEM_READONLY);
 | 
| +  AccessibleChecker radio_group_checker(L"", ROLE_SYSTEM_GROUPING, L"");
 | 
| +  radio_group_checker.SetExpectedState(
 | 
| +      STATE_SYSTEM_FOCUSABLE | STATE_SYSTEM_READONLY);
 | 
| +  AccessibleChecker document_checker(L"", ROLE_SYSTEM_DOCUMENT, L"");
 | 
| +  list_item_checker.AppendExpectedChild(&list_marker_checker);
 | 
| +  list_item_checker.AppendExpectedChild(&static_text_checker);
 | 
| +  radio_group_checker.AppendExpectedChild(&list_item_checker);
 | 
| +  document_checker.AppendExpectedChild(&radio_group_checker);
 | 
| +  document_checker.CheckAccessible(GetRendererAccessible());
 | 
| +
 | 
| +  // Set focus to the radio group.
 | 
| +  ExecuteScript(L"document.body.children[0].focus()");
 | 
| +  ui_test_utils::WaitForNotification(
 | 
| +      NotificationType::RENDER_VIEW_HOST_ACCESSIBILITY_TREE_UPDATED);
 | 
| +
 | 
| +  // Check that the accessibility tree of the browser has been updated.
 | 
| +  radio_group_checker.SetExpectedState(
 | 
| +      STATE_SYSTEM_FOCUSABLE | STATE_SYSTEM_READONLY | STATE_SYSTEM_FOCUSED);
 | 
| +  document_checker.CheckAccessible(GetRendererAccessible());
 | 
| +
 | 
| +  // Set the active descendant of the radio group
 | 
| +  ExecuteScript(
 | 
| +      L"document.body.children[0].setAttribute('aria-activedescendant', 'li')");
 | 
| +  ui_test_utils::WaitForNotification(
 | 
| +      NotificationType::RENDER_VIEW_HOST_ACCESSIBILITY_TREE_UPDATED);
 | 
| +
 | 
| +  // Check that the accessibility tree of the browser has been updated.
 | 
| +  list_item_checker.SetExpectedState(
 | 
| +      STATE_SYSTEM_READONLY | STATE_SYSTEM_FOCUSED);
 | 
| +  radio_group_checker.SetExpectedState(
 | 
| +      STATE_SYSTEM_FOCUSABLE | STATE_SYSTEM_READONLY);
 | 
| +  document_checker.CheckAccessible(GetRendererAccessible());
 | 
| +}
 | 
| +
 | 
| +IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest,
 | 
|                         TestNotificationCheckedStateChanged) {
 | 
|    GURL tree_url("data:text/html,<body><input type='checkbox' /></body>");
 | 
|    browser()->OpenURL(tree_url, GURL(), CURRENT_TAB, PageTransition::TYPED);
 | 
| @@ -406,9 +453,9 @@
 | 
|  
 | 
|  IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest,
 | 
|                         TestNotificationChildrenChanged) {
 | 
| -  // The aria-help attribute causes the node to be in the accessibility tree.
 | 
| +  // The role attribute causes the node to be in the accessibility tree.
 | 
|    GURL tree_url(
 | 
| -      "data:text/html,<body aria-help='body'></body>");
 | 
| +      "data:text/html,<body role=group></body>");
 | 
|    browser()->OpenURL(tree_url, GURL(), CURRENT_TAB, PageTransition::TYPED);
 | 
|    GetRendererAccessible();
 | 
|    ui_test_utils::WaitForNotification(
 | 
| @@ -432,15 +479,64 @@
 | 
|  }
 | 
|  
 | 
|  IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest,
 | 
| -                       SelectedChildrenChanged) {
 | 
| -  GURL tree_url("data:text/html,<body><input type='text' value='old value'/>"
 | 
| -      "</body>");
 | 
| +                       TestNotificationFocusChanged) {
 | 
| +  // The role attribute causes the node to be in the accessibility tree.
 | 
| +  GURL tree_url(
 | 
| +      "data:text/html,<div role=group tabindex='-1'></div>");
 | 
|    browser()->OpenURL(tree_url, GURL(), CURRENT_TAB, PageTransition::TYPED);
 | 
|    GetRendererAccessible();
 | 
|    ui_test_utils::WaitForNotification(
 | 
|        NotificationType::RENDER_VIEW_HOST_ACCESSIBILITY_TREE_UPDATED);
 | 
| +
 | 
| +  // Check the browser's copy of the renderer accessibility tree.
 | 
| +  AccessibleChecker div_checker(L"", L"div", L"");
 | 
| +  div_checker.SetExpectedState(
 | 
| +      STATE_SYSTEM_FOCUSABLE | STATE_SYSTEM_OFFSCREEN | STATE_SYSTEM_READONLY);
 | 
| +  AccessibleChecker document_checker(L"", ROLE_SYSTEM_DOCUMENT, L"");
 | 
| +  document_checker.AppendExpectedChild(&div_checker);
 | 
| +  document_checker.CheckAccessible(GetRendererAccessible());
 | 
| +
 | 
| +  // Focus the div in the document
 | 
| +  ExecuteScript(L"document.body.children[0].focus()");
 | 
| +  ui_test_utils::WaitForNotification(
 | 
| +      NotificationType::RENDER_VIEW_HOST_ACCESSIBILITY_TREE_UPDATED);
 | 
| +
 | 
| +  // Check that the accessibility tree of the browser has been updated.
 | 
| +  div_checker.SetExpectedState(
 | 
| +      STATE_SYSTEM_FOCUSABLE | STATE_SYSTEM_READONLY | STATE_SYSTEM_FOCUSED);
 | 
| +  document_checker.CheckAccessible(GetRendererAccessible());
 | 
|  }
 | 
| +
 | 
| +// http://crbug.com/46209
 | 
|  IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest,
 | 
| +                       DISABLED_TestNotificationChildrenChanged2) {
 | 
| +  // The role attribute causes the node to be in the accessibility tree.
 | 
| +  GURL tree_url(
 | 
| +      "data:text/html,<div role=group style='visibility: hidden'>text"
 | 
| +      "</div>");
 | 
| +  browser()->OpenURL(tree_url, GURL(), CURRENT_TAB, PageTransition::TYPED);
 | 
| +  GetRendererAccessible();
 | 
| +  ui_test_utils::WaitForNotification(
 | 
| +      NotificationType::RENDER_VIEW_HOST_ACCESSIBILITY_TREE_UPDATED);
 | 
| +
 | 
| +  // Check the accessible tree of the browser.
 | 
| +  AccessibleChecker document_checker(L"", ROLE_SYSTEM_DOCUMENT, L"");
 | 
| +  document_checker.CheckAccessible(GetRendererAccessible());
 | 
| +
 | 
| +  // Change the children of the document body.
 | 
| +  ExecuteScript(L"document.body.children[0].style.visibility='visible'");
 | 
| +  ui_test_utils::WaitForNotification(
 | 
| +      NotificationType::RENDER_VIEW_HOST_ACCESSIBILITY_TREE_UPDATED);
 | 
| +
 | 
| +  // Check that the accessibility tree of the browser has been updated.
 | 
| +  AccessibleChecker static_text_checker(L"", ROLE_SYSTEM_TEXT, L"text");
 | 
| +  AccessibleChecker div_checker(L"", L"DIV", L"");
 | 
| +  document_checker.AppendExpectedChild(&div_checker);
 | 
| +  div_checker.AppendExpectedChild(&static_text_checker);
 | 
| +  document_checker.CheckAccessible(GetRendererAccessible());
 | 
| +}
 | 
| +
 | 
| +IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest,
 | 
|                         TestNotificationValueChanged) {
 | 
|    GURL tree_url("data:text/html,<body><input type='text' value='old value'/>"
 | 
|        "</body>");
 | 
| 
 |