Index: chrome/browser/automation/automation_tab_helper_browsertest.cc |
diff --git a/chrome/browser/automation/automation_tab_helper_browsertest.cc b/chrome/browser/automation/automation_tab_helper_browsertest.cc |
index 59ae8af41894097e940dd62a551594d22c8410f0..d51babc5f81698034f118d680309702a2cad6c28 100644 |
--- a/chrome/browser/automation/automation_tab_helper_browsertest.cc |
+++ b/chrome/browser/automation/automation_tab_helper_browsertest.cc |
@@ -13,6 +13,7 @@ |
#include "chrome/browser/automation/mock_tab_event_observer.h" |
#include "chrome/browser/ui/browser.h" |
#include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" |
+#include "chrome/common/automation_events.h" |
#include "chrome/common/chrome_notification_types.h" |
#include "chrome/common/chrome_paths.h" |
#include "chrome/common/url_constants.h" |
@@ -28,6 +29,7 @@ |
#include "net/base/net_util.h" |
#include "testing/gmock/include/gmock/gmock.h" |
#include "testing/gtest/include/gtest/gtest.h" |
+#include "ui/gfx/point.h" |
using testing::_; |
@@ -214,3 +216,44 @@ IN_PROC_BROWSER_TEST_F(AutomationTabHelperBrowserTest, |
ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUICrashURL)); |
} |
+ |
+IN_PROC_BROWSER_TEST_F(AutomationTabHelperBrowserTest, ProcessMouseEvent) { |
+ MockTabEventObserver mock_tab_observer(tab_helper()); |
+ |
+ EXPECT_CALL(mock_tab_observer, |
+ OnWillProcessMouseEventAt( |
+ testing::AllOf( |
+ testing::Property(&gfx::Point::x, testing::Eq(5)), |
+ testing::Property(&gfx::Point::y, testing::Eq(10))))) |
+ .Times(2); |
+ EXPECT_CALL(mock_tab_observer, OnProcessMouseEventACK(true, _)) |
+ .Times(2); |
+ |
+ ASSERT_TRUE(ui_test_utils::ExecuteJavaScript( |
+ browser()->GetSelectedWebContents()->GetRenderViewHost(), |
+ L"", |
+ L"window.didClick = false;" |
+ L"document.body.innerHTML =" |
+ L" '<a style=\\'position:absolute; left:0; top:0\\'>link</a>';" |
+ L"document.querySelector('a').addEventListener('click', function() {" |
+ L" window.didClick = true;" |
+ L"}, true);")); |
+ AutomationMouseEvent automation_event; |
+ automation_event.location_script_chain.push_back( |
+ ScriptEvaluationRequest("{'x': 5, 'y': 10}", "")); |
+ WebKit::WebMouseEvent& mouse_event = automation_event.mouse_event; |
+ mouse_event.type = WebKit::WebInputEvent::MouseDown; |
+ mouse_event.button = WebKit::WebMouseEvent::ButtonLeft; |
+ mouse_event.clickCount = 1; |
+ tab_helper()->ProcessMouseEvent(automation_event); |
+ mouse_event.type = WebKit::WebInputEvent::MouseUp; |
+ tab_helper()->ProcessMouseEvent(automation_event); |
+ |
+ bool did_click = false; |
+ ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( |
+ browser()->GetSelectedWebContents()->GetRenderViewHost(), |
+ L"", |
+ L"window.domAutomationController.send(window.didClick);", |
+ &did_click)); |
+ EXPECT_TRUE(did_click); |
+} |