android_hit_testing_browsertest.cc revision 116680a4aac90f2aa7413d9095a592090648e557
1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include <set> 6#include <string> 7#include <vector> 8 9#include "base/command_line.h" 10#include "base/file_util.h" 11#include "base/logging.h" 12#include "base/path_service.h" 13#include "base/strings/string16.h" 14#include "base/strings/string_split.h" 15#include "base/strings/string_util.h" 16#include "base/strings/utf_string_conversions.h" 17#include "content/browser/accessibility/accessibility_tree_formatter.h" 18#include "content/browser/accessibility/browser_accessibility.h" 19#include "content/browser/accessibility/browser_accessibility_manager.h" 20#include "content/browser/web_contents/web_contents_impl.h" 21#include "content/public/browser/web_contents.h" 22#include "content/public/common/content_paths.h" 23#include "content/public/common/content_switches.h" 24#include "content/public/common/url_constants.h" 25#include "content/public/test/content_browser_test.h" 26#include "content/public/test/content_browser_test_utils.h" 27#include "content/shell/browser/shell.h" 28#include "content/test/accessibility_browser_test_utils.h" 29#include "testing/gtest/include/gtest/gtest.h" 30 31namespace content { 32 33class AndroidHitTestingBrowserTest : public ContentBrowserTest { 34 public: 35 AndroidHitTestingBrowserTest() {} 36 virtual ~AndroidHitTestingBrowserTest() {} 37}; 38 39IN_PROC_BROWSER_TEST_F(AndroidHitTestingBrowserTest, 40 HitTestOutsideDocumentBoundsReturnsRoot) { 41 NavigateToURL(shell(), GURL(url::kAboutBlankURL)); 42 43 // Load the page. 44 AccessibilityNotificationWaiter waiter( 45 shell(), AccessibilityModeComplete, 46 ui::AX_EVENT_LOAD_COMPLETE); 47 const char url_str[] = 48 "data:text/html," 49 "<!doctype html>" 50 "<html><head><title>Accessibility Test</title></head>" 51 "<body>" 52 "<a href='#'>" 53 "This is some text in a link" 54 "</a>" 55 "</body></html>"; 56 GURL url(url_str); 57 NavigateToURL(shell(), url); 58 waiter.WaitForNotification(); 59 60 // Get the BrowserAccessibilityManager. 61 WebContentsImpl* web_contents = 62 static_cast<WebContentsImpl*>(shell()->web_contents()); 63 BrowserAccessibilityManager* manager = 64 web_contents->GetRootBrowserAccessibilityManager(); 65 66 // Send a hit test request, and wait for the hover event in response. 67 AccessibilityNotificationWaiter hover_waiter( 68 shell(), AccessibilityModeComplete, 69 ui::AX_EVENT_HOVER); 70 manager->delegate()->AccessibilityHitTest(gfx::Point(-1, -1)); 71 hover_waiter.WaitForNotification(); 72 73 // Assert that the hover event was fired on the root of the tree. 74 int hover_target_id = hover_waiter.event_target_id(); 75 BrowserAccessibility* hovered_node = manager->GetFromID(hover_target_id); 76 ASSERT_TRUE(hovered_node != NULL); 77 ASSERT_EQ(ui::AX_ROLE_ROOT_WEB_AREA, hovered_node->GetRole()); 78} 79 80} // namespace content 81