Chromium Code Reviews| 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 9beb924389e40bca45f2a3807f3ad1254bed17af..3026de3e6db876c8bbbce746eed1ba5f330c2e3e 100644 |
| --- a/third_party/WebKit/Source/web/tests/WebFrameTest.cpp |
| +++ b/third_party/WebKit/Source/web/tests/WebFrameTest.cpp |
| @@ -11654,8 +11654,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)); |
|
bokan
2017/06/09 16:21:09
Why this change? What was this doing before?
chaopeng
2017/06/09 19:19:31
This hit_test_result is unused var now. hit_test_r
|
| EXPECT_EQ(scrollbar->PressedPart(), ScrollbarPart::kNoPart); |
| EXPECT_EQ(scrollbar->HoveredPart(), ScrollbarPart::kThumbPart); |
| @@ -11693,6 +11691,68 @@ TEST_F(WebFrameTest, MouseReleaseUpdatesScrollbarHoveredPart) { |
| EXPECT_EQ(scrollbar->HoveredPart(), ScrollbarPart::kNoPart); |
| } |
| +class TapChangeHoverStateTest : public WebFrameTest { |
| + public: |
| + void RunTest(bool on_mobile, bool should_change_hover_state) { |
| + std::string test_page = "viewport-2-div.html"; |
| + |
| + FakeCompositingWebViewClient client; |
| + RegisterMockedHttpURLLoad(test_page); |
| + FrameTestHelpers::WebViewHelper web_view_helper; |
| + WebViewBase* web_view; |
| + if (on_mobile) { |
|
bokan
2017/06/09 16:21:09
The difference isn't whether we're on mobile or no
|
| + 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, TapNotChangeHoverStateOnMobile) { |
| + RunTest(true, false); |
| +} |
| + |
| +TEST_F(TapChangeHoverStateTest, TapChangeHoverStateOnDesktop) { |
| + RunTest(false, true); |
| +} |
| + |
| TEST_F(WebFrameTest, |
| CustomScrollbarInOverlayScrollbarThemeWillNotCauseDCHECKFails) { |
| RegisterMockedHttpURLLoad( |