Commit 8911e9ed authored by HyeockJinKim's avatar HyeockJinKim Committed by Commit Bot

Release scrollbar dragging when context menu open

Bug: 844242
Change-Id: I980a50866506181759ad78424e9c35bfc3cd9edc
Reviewed-on: https://chromium-review.googlesource.com/1201627Reviewed-by: default avatarJianpeng Chao <chaopeng@chromium.org>
Reviewed-by: default avatarNavid Zolghadr <nzolghadr@chromium.org>
Reviewed-by: default avatarDavid Bokan <bokan@chromium.org>
Commit-Queue: Jinho Bang <jinho.bang@samsung.com>
Cr-Commit-Position: refs/heads/master@{#592407}
parent 4152ac35
......@@ -1851,6 +1851,9 @@ WebInputEventResult EventHandler::SendContextMenuEvent(
// Clear mouse press state to avoid initiating a drag while context menu is
// up.
mouse_event_manager_->ReleaseMousePress();
if (last_scrollbar_under_mouse_)
last_scrollbar_under_mouse_->MouseUp(event);
LayoutPoint position_in_contents =
v->ConvertFromRootFrame(FlooredIntPoint(event.PositionInRootFrame()));
HitTestRequest request(HitTestRequest::kActive);
......
......@@ -60,6 +60,15 @@ class ScrollbarsTest : public SimTest {
GetEventHandler().HandleMousePressEvent(event);
}
void HandleContextMenuEvent(int x, int y) {
WebMouseEvent event(
WebInputEvent::kMouseDown, WebFloatPoint(x, y), WebFloatPoint(x, y),
WebPointerProperties::Button::kNoButton, 0,
WebInputEvent::Modifiers::kNoModifiers, CurrentTimeTicks());
event.SetFrameScale(1);
GetEventHandler().SendContextMenuEvent(event);
}
void HandleMouseReleaseEvent(int x, int y) {
WebMouseEvent event(
WebInputEvent::kMouseUp, WebFloatPoint(x, y), WebFloatPoint(x, y),
......@@ -1047,6 +1056,58 @@ TEST_F(ScrollbarsTest, MouseReleaseUpdatesScrollbarHoveredPart) {
EXPECT_EQ(scrollbar->HoveredPart(), ScrollbarPart::kNoPart);
}
TEST_F(ScrollbarsTest, ContextMenuUpdatesScrollbarPressedPart) {
WebView().Resize(WebSize(200, 200));
SimRequest request("https://example.com/test.html", "text/html");
LoadURL("https://example.com/test.html");
request.Complete(R"HTML(
<!DOCTYPE html>
<style>
body { margin: 0px }
#scroller { overflow-x: auto; width: 180px; height: 100px }
#spacer { height: 300px }
::-webkit-scrollbar { width: 8px }
::-webkit-scrollbar-thumb {
background-color: hsla(0, 0%, 56%, 0.6)
}
</style>
<div id='scroller'>
<div id='spacer'></div>
</div>
)HTML");
Compositor().BeginFrame();
Document& document = GetDocument();
Element* scrollbar_div = document.getElementById("scroller");
EXPECT_TRUE(scrollbar_div);
ScrollableArea* scrollable_area =
ToLayoutBox(scrollbar_div->GetLayoutObject())->GetScrollableArea();
EXPECT_TRUE(scrollable_area->VerticalScrollbar());
Scrollbar* scrollbar = scrollable_area->VerticalScrollbar();
EXPECT_EQ(scrollbar->PressedPart(), ScrollbarPart::kNoPart);
// Mouse moved over the scrollbar.
HandleMouseMoveEvent(175, 5);
EXPECT_EQ(scrollbar->PressedPart(), ScrollbarPart::kNoPart);
// Press the scrollbar.
HandleMousePressEvent(175, 5);
EXPECT_EQ(scrollbar->PressedPart(), ScrollbarPart::kThumbPart);
// ContextMenu while still pressed.
HandleContextMenuEvent(175, 5);
EXPECT_EQ(scrollbar->PressedPart(), ScrollbarPart::kNoPart);
// Mouse moved off the scrollbar.
HandleMousePressEvent(50, 5);
EXPECT_EQ(scrollbar->PressedPart(), ScrollbarPart::kNoPart);
}
TEST_F(ScrollbarsTest,
CustomScrollbarInOverlayScrollbarThemeWillNotCauseDCHECKFails) {
WebView().Resize(WebSize(200, 200));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment