Chromium Code Reviews| Index: content/browser/accessibility/hit_testing_browsertest.cc |
| diff --git a/content/browser/accessibility/hit_testing_browsertest.cc b/content/browser/accessibility/hit_testing_browsertest.cc |
| index afcb4f6eba18886556027c076c0b7402d2ac9693..2b1acd00da56363b58c1489bbe1da3cdfdde456f 100644 |
| --- a/content/browser/accessibility/hit_testing_browsertest.cc |
| +++ b/content/browser/accessibility/hit_testing_browsertest.cc |
| @@ -23,30 +23,39 @@ class AccessibilityHitTestingBrowserTest : public ContentBrowserTest { |
| ~AccessibilityHitTestingBrowserTest() override {} |
| protected: |
| - BrowserAccessibility* HitTestAndWaitForResult(const gfx::Point& point) { |
| + BrowserAccessibility* HitTestAndWaitForResultWithEvent( |
| + const gfx::Point& point, |
| + ui::AXEvent event_to_fire) { |
| WebContentsImpl* web_contents = |
| static_cast<WebContentsImpl*>(shell()->web_contents()); |
| FrameTree* frame_tree = web_contents->GetFrameTree(); |
| BrowserAccessibilityManager* manager = |
| web_contents->GetRootBrowserAccessibilityManager(); |
| - AccessibilityNotificationWaiter hover_waiter( |
| - shell()->web_contents(), ACCESSIBILITY_MODE_COMPLETE, |
| - ui::AX_EVENT_HOVER); |
| + AccessibilityNotificationWaiter event_waiter( |
| + shell()->web_contents(), ACCESSIBILITY_MODE_COMPLETE, event_to_fire); |
| for (FrameTreeNode* node : frame_tree->Nodes()) |
| - hover_waiter.ListenToAdditionalFrame(node->current_frame_host()); |
| - manager->HitTest(point); |
| - hover_waiter.WaitForNotification(); |
| - |
| - RenderFrameHostImpl* target_frame = hover_waiter.event_render_frame_host(); |
| + event_waiter.ListenToAdditionalFrame(node->current_frame_host()); |
| + ui::AXActionData action_data; |
| + action_data.action = ui::AX_ACTION_HIT_TEST; |
| + action_data.target_point = point; |
| + action_data.hit_test_event_to_fire = event_to_fire; |
| + manager->delegate()->AccessibilityPerformAction(action_data); |
| + event_waiter.WaitForNotification(); |
| + |
| + RenderFrameHostImpl* target_frame = event_waiter.event_render_frame_host(); |
| BrowserAccessibilityManager* target_manager = |
| target_frame->browser_accessibility_manager(); |
| - int hover_target_id = hover_waiter.event_target_id(); |
| + int event_target_id = event_waiter.event_target_id(); |
| BrowserAccessibility* hovered_node = |
|
David Tseng
2017/03/13 21:43:47
nit: hit_node
dmazzoni
2017/03/20 05:40:39
Done.
|
| - target_manager->GetFromID(hover_target_id); |
| + target_manager->GetFromID(event_target_id); |
| return hovered_node; |
| } |
| + BrowserAccessibility* HitTestAndWaitForResult(const gfx::Point& point) { |
| + return HitTestAndWaitForResultWithEvent(point, ui::AX_EVENT_HOVER); |
| + } |
| + |
| BrowserAccessibility* CallCachingAsyncHitTest(const gfx::Point& point) { |
| WebContentsImpl* web_contents = |
| static_cast<WebContentsImpl*>(shell()->web_contents()); |
| @@ -150,6 +159,13 @@ IN_PROC_BROWSER_TEST_F(AccessibilityHitTestingBrowserTest, |
| hovered_node = HitTestAndWaitForResult(gfx::Point(50, 505)); |
| ASSERT_TRUE(hovered_node != NULL); |
| ASSERT_EQ(ui::AX_ROLE_DIV, hovered_node->GetRole()); |
| + |
| + // (50, 505) -> div in second iframe |
| + // but with a different event |
| + hovered_node = |
| + HitTestAndWaitForResultWithEvent(gfx::Point(50, 505), ui::AX_EVENT_ALERT); |
| + ASSERT_TRUE(hovered_node != NULL); |
|
David Tseng
2017/03/13 21:43:47
nit: ASSERT_NE
dmazzoni
2017/03/20 05:40:39
Done.
|
| + ASSERT_EQ(ui::AX_ROLE_DIV, hovered_node->GetRole()); |
| } |
| IN_PROC_BROWSER_TEST_F(AccessibilityHitTestingBrowserTest, |