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

Unified Diff: third_party/WebKit/Source/web/tests/WebFrameTest.cpp

Issue 2931433002: Disable hover state change for touch event on page with viewport meta and mobile. (Closed)
Patch Set: merge crrev.com/2934853002 Created 3 years, 6 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: third_party/WebKit/Source/web/tests/WebFrameTest.cpp
diff --git a/third_party/WebKit/Source/web/tests/WebFrameTest.cpp b/third_party/WebKit/Source/web/tests/WebFrameTest.cpp
index 52919cde63df29b9511eaaace6438c70b60dfb31..a702e1b2e3415d8976a7160130e4c0f8b48ec19b 100644
--- a/third_party/WebKit/Source/web/tests/WebFrameTest.cpp
+++ b/third_party/WebKit/Source/web/tests/WebFrameTest.cpp
@@ -11649,8 +11649,6 @@ TEST_F(WebFrameTest, MouseReleaseUpdatesScrollbarHoveredPart) {
mouse_move_over_scrollbar.SetFrameScale(1);
document->GetFrame()->GetEventHandler().HandleMouseMoveEvent(
mouse_move_over_scrollbar, Vector<WebMouseEvent>());
- HitTestResult hit_test_result =
- web_view->CoreHitTestResultAt(WebPoint(175, 1));
EXPECT_EQ(scrollbar->PressedPart(), ScrollbarPart::kNoPart);
EXPECT_EQ(scrollbar->HoveredPart(), ScrollbarPart::kThumbPart);
@@ -11688,6 +11686,75 @@ TEST_F(WebFrameTest, MouseReleaseUpdatesScrollbarHoveredPart) {
EXPECT_EQ(scrollbar->HoveredPart(), ScrollbarPart::kNoPart);
}
+class TapChangeHoverStateTest : public WebFrameTest {
+ public:
+ void RunTest(bool viewport_enabled,
+ bool viewport_meta,
+ bool should_change_hover_state) {
+ std::string test_page =
+ viewport_meta ? "viewport-2-div.html" : "noviewport-2-div.html";
+
+ FakeCompositingWebViewClient client;
+ RegisterMockedHttpURLLoad(test_page);
+ FrameTestHelpers::WebViewHelper web_view_helper;
+ WebViewBase* web_view;
+ if (viewport_enabled) {
+ web_view = web_view_helper.InitializeAndLoad(base_url_ + test_page, false,
+ nullptr, &client, nullptr,
+ ConfigureAndroid);
+ } else {
+ web_view = web_view_helper.InitializeAndLoad(base_url_ + test_page);
+ }
+ web_view_helper.Resize(WebSize(250, 250));
+
+ Document* document =
+ ToLocalFrame(web_view->GetPage()->MainFrame())->GetDocument();
+
+ Element* div1 = document->getElementById("div1");
+ Element* div2 = document->getElementById("div2");
+
+ // Move mouse over div1 should hover div1.
+ WebMouseEvent mouse_move_over_div1(
+ WebInputEvent::kMouseMove, WebFloatPoint(10, 10), WebFloatPoint(10, 10),
+ WebPointerProperties::Button::kNoButton, 0, WebInputEvent::kNoModifiers,
+ TimeTicks::Now().InSeconds());
+ mouse_move_over_div1.SetFrameScale(1);
+ document->GetFrame()->GetEventHandler().HandleMouseMoveEvent(
+ mouse_move_over_div1, Vector<WebMouseEvent>());
+
+ DCHECK(document->HoverElement() == div1);
+
+ // Tap on div2.
+ WebGestureEvent tap_on_div2(WebInputEvent::kGestureTap,
+ WebInputEvent::kNoModifiers,
+ WebInputEvent::kTimeStampForTesting);
+ tap_on_div2.SetFrameScale(1);
+ tap_on_div2.x = tap_on_div2.global_x = 10;
+ tap_on_div2.y = tap_on_div2.global_y = 110;
+ tap_on_div2.source_device = kWebGestureDeviceTouchscreen;
+ web_view_helper.WebView()
+ ->MainFrameImpl()
+ ->GetFrame()
+ ->GetEventHandler()
+ .HandleGestureEvent(tap_on_div2);
+
+ Element* expected_hover_element = should_change_hover_state ? div2 : div1;
+ EXPECT_EQ(expected_hover_element, document->HoverElement());
+ }
+};
+
+TEST_F(TapChangeHoverStateTest, TapNotChangeHoverStateOnViewportMetaAndMobile) {
+ RunTest(true, true, false);
+}
+
+TEST_F(TapChangeHoverStateTest, TapChangeHoverStateOnNoViewportMetaAndMobile) {
+ RunTest(true, false, true);
+}
+
+TEST_F(TapChangeHoverStateTest, TapChangeHoverStateOnViewportMetaAndDesktop) {
+ RunTest(false, true, true);
+}
+
TEST_F(WebFrameTest,
CustomScrollbarInOverlayScrollbarThemeWillNotCauseDCHECKFails) {
RegisterMockedHttpURLLoad(
« no previous file with comments | « third_party/WebKit/Source/core/dom/Document.cpp ('k') | third_party/WebKit/Source/web/tests/data/noviewport-2-div.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698