Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(911)

Unified Diff: chrome/browser/automation/automation_tab_helper_browsertest.cc

Issue 10384023: Determine the element location and click synchronously on the renderer. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
+}

Powered by Google App Engine
This is Rietveld 408576698