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

Side by Side Diff: third_party/WebKit/Source/web/tests/WebFrameTest.cpp

Issue 2679193003: Revert "Change hover element to scrollbar's parent when hit test contains scrollbar"
Patch Set: Created 3 years, 10 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2010 Google Inc. All rights reserved. 2 * Copyright (C) 2010 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 10838 matching lines...) Expand 10 before | Expand all | Expand 10 after
10849 document->frame()->eventHandler().handleMouseMoveEvent( 10849 document->frame()->eventHandler().handleMouseMoveEvent(
10850 mouseMoveEvent, Vector<PlatformMouseEvent>()); 10850 mouseMoveEvent, Vector<PlatformMouseEvent>());
10851 10851
10852 EXPECT_EQ(document->hoverNode(), 10852 EXPECT_EQ(document->hoverNode(),
10853 document->frame()->chromeClient().lastSetTooltipNodeForTesting()); 10853 document->frame()->chromeClient().lastSetTooltipNodeForTesting());
10854 EXPECT_EQ(div2Tag, 10854 EXPECT_EQ(div2Tag,
10855 document->frame()->chromeClient().lastSetTooltipNodeForTesting()); 10855 document->frame()->chromeClient().lastSetTooltipNodeForTesting());
10856 } 10856 }
10857 10857
10858 // Makes sure that mouse hover over an overlay scrollbar doesn't activate 10858 // Makes sure that mouse hover over an overlay scrollbar doesn't activate
10859 // elements below(except the Element that owns the scrollbar) unless the 10859 // elements below unless the scrollbar is faded out.
10860 // scrollbar is faded out.
10861 TEST_F(WebFrameTest, MouseOverLinkAndOverlayScrollbar) { 10860 TEST_F(WebFrameTest, MouseOverLinkAndOverlayScrollbar) {
10862 FrameTestHelpers::WebViewHelper webViewHelper; 10861 FrameTestHelpers::WebViewHelper webViewHelper;
10863 webViewHelper.initialize(true, nullptr, nullptr, nullptr, 10862 webViewHelper.initialize(true, nullptr, nullptr, nullptr,
10864 [](WebSettings* settings) {}); 10863 [](WebSettings* settings) {});
10865 webViewHelper.resize(WebSize(20, 20)); 10864 webViewHelper.resize(WebSize(20, 20));
10866 WebViewImpl* webView = webViewHelper.webView(); 10865 WebViewImpl* webView = webViewHelper.webView();
10867 10866
10868 initializeWithHTML(*webView->mainFrameImpl()->frame(), 10867 initializeWithHTML(*webView->mainFrameImpl()->frame(),
10869 "<!DOCTYPE html>" 10868 "<!DOCTYPE html>"
10870 "<a id='a' href='javascript:void(0);'>" 10869 "<a id='a' href='javascript:void(0);'>"
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
11002 WebPointerProperties::Button::NoButton, PlatformEvent::MouseMoved, 0, 11001 WebPointerProperties::Button::NoButton, PlatformEvent::MouseMoved, 0,
11003 PlatformEvent::NoModifiers, TimeTicks::Now()); 11002 PlatformEvent::NoModifiers, TimeTicks::Now());
11004 document->frame()->eventHandler().handleMouseMoveEvent( 11003 document->frame()->eventHandler().handleMouseMoveEvent(
11005 mouseMoveOverDivAndScrollbar, Vector<PlatformMouseEvent>()); 11004 mouseMoveOverDivAndScrollbar, Vector<PlatformMouseEvent>());
11006 11005
11007 // Custom not change the DIV :hover 11006 // Custom not change the DIV :hover
11008 EXPECT_EQ(document->hoverNode(), scrollbarDiv); 11007 EXPECT_EQ(document->hoverNode(), scrollbarDiv);
11009 EXPECT_EQ(hitTestResult.scrollbar()->hoveredPart(), ScrollbarPart::ThumbPart); 11008 EXPECT_EQ(hitTestResult.scrollbar()->hoveredPart(), ScrollbarPart::ThumbPart);
11010 } 11009 }
11011 11010
11012 // Makes sure that mouse hover over a scrollbar also hover the element owns the
11013 // scrollbar.
11014 TEST_F(WebFrameTest, MouseOverScrollbarAndParentElement) {
11015 registerMockedHttpURLLoad("scrollbar-and-element-hover.html");
11016 FrameTestHelpers::WebViewHelper webViewHelper;
11017 RuntimeEnabledFeatures::setOverlayScrollbarsEnabled(false);
11018 WebViewImpl* webView = webViewHelper.initializeAndLoad(
11019 m_baseURL + "scrollbar-and-element-hover.html");
11020
11021 webViewHelper.resize(WebSize(200, 200));
11022
11023 webView->updateAllLifecyclePhases();
11024
11025 Document* document = toLocalFrame(webView->page()->mainFrame())->document();
11026
11027 Element* parentDiv = document->getElementById("parent");
11028 Element* childDiv = document->getElementById("child");
11029 EXPECT_TRUE(parentDiv);
11030 EXPECT_TRUE(childDiv);
11031
11032 ScrollableArea* scrollableArea =
11033 toLayoutBox(parentDiv->layoutObject())->getScrollableArea();
11034
11035 EXPECT_TRUE(scrollableArea->verticalScrollbar());
11036 EXPECT_FALSE(scrollableArea->verticalScrollbar()->isOverlayScrollbar());
11037 EXPECT_TRUE(scrollableArea->verticalScrollbar()->theme().isMockTheme());
11038
11039 // Ensure hittest only has DIV.
11040 HitTestResult hitTestResult = webView->coreHitTestResultAt(WebPoint(1, 1));
11041
11042 EXPECT_TRUE(hitTestResult.innerElement());
11043 EXPECT_FALSE(hitTestResult.scrollbar());
11044
11045 // Mouse over DIV.
11046 WebMouseEvent mouseMoveOverDiv(
11047 WebInputEvent::MouseMove, WebFloatPoint(1, 1), WebFloatPoint(1, 1),
11048 WebPointerProperties::Button::NoButton, 0, WebInputEvent::NoModifiers,
11049 TimeTicks::Now().InSeconds());
11050 mouseMoveOverDiv.setFrameScale(1);
11051 document->frame()->eventHandler().handleMouseMoveEvent(
11052 mouseMoveOverDiv, Vector<WebMouseEvent>());
11053
11054 // DIV :hover.
11055 EXPECT_EQ(document->hoverNode(), parentDiv);
11056
11057 // Ensure hittest has DIV and scrollbar.
11058 hitTestResult = webView->coreHitTestResultAt(WebPoint(175, 5));
11059
11060 EXPECT_TRUE(hitTestResult.innerElement());
11061 EXPECT_TRUE(hitTestResult.scrollbar());
11062 EXPECT_FALSE(hitTestResult.scrollbar()->isCustomScrollbar());
11063 EXPECT_TRUE(hitTestResult.scrollbar()->enabled());
11064
11065 // Mouse over scrollbar.
11066 WebMouseEvent mouseMoveOverDivAndScrollbar(
11067 WebInputEvent::MouseMove, WebFloatPoint(175, 5), WebFloatPoint(175, 5),
11068 WebPointerProperties::Button::NoButton, 0, WebInputEvent::NoModifiers,
11069 TimeTicks::Now().InSeconds());
11070 mouseMoveOverDivAndScrollbar.setFrameScale(1);
11071 document->frame()->eventHandler().handleMouseMoveEvent(
11072 mouseMoveOverDivAndScrollbar, Vector<WebMouseEvent>());
11073
11074 // Not change the DIV :hover.
11075 EXPECT_EQ(document->hoverNode(), parentDiv);
11076
11077 // Disable the Scrollbar by remove the childDiv.
11078 childDiv->remove();
11079 webView->updateAllLifecyclePhases();
11080
11081 // Ensure hittest has DIV and no scrollbar.
11082 hitTestResult = webView->coreHitTestResultAt(WebPoint(175, 5));
11083
11084 EXPECT_TRUE(hitTestResult.innerElement());
11085 EXPECT_TRUE(hitTestResult.scrollbar());
11086 EXPECT_FALSE(hitTestResult.scrollbar()->enabled());
11087 EXPECT_LT(hitTestResult.innerElement()->clientWidth(), 180);
11088
11089 // Mouse over disabled scrollbar.
11090 document->frame()->eventHandler().handleMouseMoveEvent(
11091 mouseMoveOverDivAndScrollbar, Vector<WebMouseEvent>());
11092
11093 // Not change the DIV :hover.
11094 EXPECT_EQ(document->hoverNode(), parentDiv);
11095 }
11096
11097 TEST_F(WebFrameTest, MouseReleaseUpdatesScrollbarHoveredPart) { 11011 TEST_F(WebFrameTest, MouseReleaseUpdatesScrollbarHoveredPart) {
11098 registerMockedHttpURLLoad("custom-scrollbar-hover.html"); 11012 registerMockedHttpURLLoad("custom-scrollbar-hover.html");
11099 FrameTestHelpers::WebViewHelper webViewHelper; 11013 FrameTestHelpers::WebViewHelper webViewHelper;
11100 WebViewImpl* webView = webViewHelper.initializeAndLoad( 11014 WebViewImpl* webView = webViewHelper.initializeAndLoad(
11101 m_baseURL + "custom-scrollbar-hover.html"); 11015 m_baseURL + "custom-scrollbar-hover.html");
11102 11016
11103 webViewHelper.resize(WebSize(200, 200)); 11017 webViewHelper.resize(WebSize(200, 200));
11104 11018
11105 webView->updateAllLifecyclePhases(); 11019 webView->updateAllLifecyclePhases();
11106 11020
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
11351 11265
11352 EXPECT_TRUE(mainFrameClient.childClient().didCallFrameDetached()); 11266 EXPECT_TRUE(mainFrameClient.childClient().didCallFrameDetached());
11353 EXPECT_TRUE(mainFrameClient.childClient().didCallDidStopLoading()); 11267 EXPECT_TRUE(mainFrameClient.childClient().didCallDidStopLoading());
11354 EXPECT_TRUE(mainFrameClient.childClient().didCallDidFinishDocumentLoad()); 11268 EXPECT_TRUE(mainFrameClient.childClient().didCallDidFinishDocumentLoad());
11355 EXPECT_TRUE(mainFrameClient.childClient().didCallDidHandleOnloadEvents()); 11269 EXPECT_TRUE(mainFrameClient.childClient().didCallDidHandleOnloadEvents());
11356 11270
11357 webViewHelper.reset(); 11271 webViewHelper.reset();
11358 } 11272 }
11359 11273
11360 } // namespace blink 11274 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698