| 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 7cf7d26aa896954080f9615aedf1a4eb2d842441..1d4aeca67a9191a9885f9c03e2e6eaaf1218e646 100644
|
| --- a/third_party/WebKit/Source/web/tests/WebFrameTest.cpp
|
| +++ b/third_party/WebKit/Source/web/tests/WebFrameTest.cpp
|
| @@ -10901,6 +10901,69 @@ TEST_F(WebFrameTest, MouseOverCustomScrollbar) {
|
| EXPECT_EQ(hitTestResult.scrollbar()->hoveredPart(), ScrollbarPart::ThumbPart);
|
| }
|
|
|
| +TEST_F(WebFrameTest, MouseReleaseUpdatesScrollbarHoveredPart) {
|
| + registerMockedHttpURLLoad("custom-scrollbar-hover.html");
|
| + FrameTestHelpers::WebViewHelper webViewHelper;
|
| + WebViewImpl* webView = webViewHelper.initializeAndLoad(
|
| + m_baseURL + "custom-scrollbar-hover.html");
|
| +
|
| + webViewHelper.resize(WebSize(200, 200));
|
| +
|
| + webView->updateAllLifecyclePhases();
|
| +
|
| + Document* document = toLocalFrame(webView->page()->mainFrame())->document();
|
| +
|
| + Element* scrollbarDiv = document->getElementById("scrollbar");
|
| + EXPECT_TRUE(scrollbarDiv);
|
| +
|
| + ScrollableArea* scrollableArea =
|
| + toLayoutBox(scrollbarDiv->layoutObject())->getScrollableArea();
|
| +
|
| + EXPECT_TRUE(scrollableArea->verticalScrollbar());
|
| + Scrollbar* scrollbar = scrollableArea->verticalScrollbar();
|
| + EXPECT_EQ(scrollbar->pressedPart(), ScrollbarPart::NoPart);
|
| + EXPECT_EQ(scrollbar->hoveredPart(), ScrollbarPart::NoPart);
|
| +
|
| + // Mouse moved over the scrollbar.
|
| + PlatformMouseEvent mouseMoveOverScrollbar(
|
| + IntPoint(175, 1), IntPoint(175, 1),
|
| + WebPointerProperties::Button::NoButton, PlatformEvent::MouseMoved, 0,
|
| + PlatformEvent::NoModifiers, TimeTicks::Now());
|
| + document->frame()->eventHandler().handleMouseMoveEvent(
|
| + mouseMoveOverScrollbar, Vector<PlatformMouseEvent>());
|
| + HitTestResult hitTestResult = webView->coreHitTestResultAt(WebPoint(175, 1));
|
| + EXPECT_EQ(scrollbar->pressedPart(), ScrollbarPart::NoPart);
|
| + EXPECT_EQ(scrollbar->hoveredPart(), ScrollbarPart::ThumbPart);
|
| +
|
| + // Mouse pressed.
|
| + PlatformMouseEvent mousePressEvent(
|
| + IntPoint(175, 1), IntPoint(175, 1), WebPointerProperties::Button::Left,
|
| + PlatformEvent::MousePressed, 0, PlatformEvent::Modifiers::LeftButtonDown,
|
| + TimeTicks::Now());
|
| + document->frame()->eventHandler().handleMousePressEvent(mousePressEvent);
|
| + EXPECT_EQ(scrollbar->pressedPart(), ScrollbarPart::ThumbPart);
|
| + EXPECT_EQ(scrollbar->hoveredPart(), ScrollbarPart::ThumbPart);
|
| +
|
| + // Mouse moved off the scrollbar while still pressed.
|
| + PlatformMouseEvent mouseMoveOffScrollbar(
|
| + IntPoint(1, 1), IntPoint(1, 1), WebPointerProperties::Button::Left,
|
| + PlatformEvent::MouseMoved, 0, PlatformEvent::Modifiers::LeftButtonDown,
|
| + TimeTicks::Now());
|
| + document->frame()->eventHandler().handleMouseLeaveEvent(
|
| + mouseMoveOffScrollbar);
|
| + EXPECT_EQ(scrollbar->pressedPart(), ScrollbarPart::ThumbPart);
|
| + EXPECT_EQ(scrollbar->hoveredPart(), ScrollbarPart::ThumbPart);
|
| +
|
| + // Mouse released.
|
| + PlatformMouseEvent MouseReleaseEvent(
|
| + IntPoint(1, 1), IntPoint(1, 1), WebPointerProperties::Button::Left,
|
| + PlatformEvent::MouseReleased, 0, PlatformEvent::Modifiers::LeftButtonDown,
|
| + TimeTicks::Now());
|
| + document->frame()->eventHandler().handleMouseReleaseEvent(MouseReleaseEvent);
|
| + EXPECT_EQ(scrollbar->pressedPart(), ScrollbarPart::NoPart);
|
| + EXPECT_EQ(scrollbar->hoveredPart(), ScrollbarPart::NoPart);
|
| +}
|
| +
|
| static void disableCompositing(WebSettings* settings) {
|
| settings->setAcceleratedCompositingEnabled(false);
|
| settings->setPreferCompositingToLCDTextEnabled(false);
|
|
|