Chromium Code Reviews| OLD | NEW | 
|---|---|
| 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 10815 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 10826 document->frame()->eventHandler().handleMouseMoveEvent( | 10826 document->frame()->eventHandler().handleMouseMoveEvent( | 
| 10827 mouseMoveEvent, Vector<WebMouseEvent>()); | 10827 mouseMoveEvent, Vector<WebMouseEvent>()); | 
| 10828 | 10828 | 
| 10829 EXPECT_EQ(document->hoverNode(), | 10829 EXPECT_EQ(document->hoverNode(), | 
| 10830 document->frame()->chromeClient().lastSetTooltipNodeForTesting()); | 10830 document->frame()->chromeClient().lastSetTooltipNodeForTesting()); | 
| 10831 EXPECT_EQ(div2Tag, | 10831 EXPECT_EQ(div2Tag, | 
| 10832 document->frame()->chromeClient().lastSetTooltipNodeForTesting()); | 10832 document->frame()->chromeClient().lastSetTooltipNodeForTesting()); | 
| 10833 } | 10833 } | 
| 10834 | 10834 | 
| 10835 // Makes sure that mouse hover over an overlay scrollbar doesn't activate | 10835 // Makes sure that mouse hover over an overlay scrollbar doesn't activate | 
| 10836 // elements below unless the scrollbar is faded out. | 10836 // elements below(except the Element that owns the scrollbar) unless the | 
| 10837 // scrollbar is faded out. | |
| 10837 TEST_F(WebFrameTest, MouseOverLinkAndOverlayScrollbar) { | 10838 TEST_F(WebFrameTest, MouseOverLinkAndOverlayScrollbar) { | 
| 10838 FrameTestHelpers::WebViewHelper webViewHelper; | 10839 FrameTestHelpers::WebViewHelper webViewHelper; | 
| 10839 webViewHelper.initialize(true, nullptr, nullptr, nullptr, | 10840 webViewHelper.initialize(true, nullptr, nullptr, nullptr, | 
| 10840 [](WebSettings* settings) {}); | 10841 [](WebSettings* settings) {}); | 
| 10841 webViewHelper.resize(WebSize(20, 20)); | 10842 webViewHelper.resize(WebSize(20, 20)); | 
| 10842 WebViewImpl* webView = webViewHelper.webView(); | 10843 WebViewImpl* webView = webViewHelper.webView(); | 
| 10843 | 10844 | 
| 10844 initializeWithHTML(*webView->mainFrameImpl()->frame(), | 10845 initializeWithHTML(*webView->mainFrameImpl()->frame(), | 
| 10845 "<!DOCTYPE html>" | 10846 "<!DOCTYPE html>" | 
| 10846 "<a id='a' href='javascript:void(0);'>" | 10847 "<a id='a' href='javascript:void(0);'>" | 
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 10988 TimeTicks::Now().InSeconds()); | 10989 TimeTicks::Now().InSeconds()); | 
| 10989 mouseMoveOverDivAndScrollbar.setFrameScale(1); | 10990 mouseMoveOverDivAndScrollbar.setFrameScale(1); | 
| 10990 document->frame()->eventHandler().handleMouseMoveEvent( | 10991 document->frame()->eventHandler().handleMouseMoveEvent( | 
| 10991 mouseMoveOverDivAndScrollbar, Vector<WebMouseEvent>()); | 10992 mouseMoveOverDivAndScrollbar, Vector<WebMouseEvent>()); | 
| 10992 | 10993 | 
| 10993 // Custom not change the DIV :hover | 10994 // Custom not change the DIV :hover | 
| 10994 EXPECT_EQ(document->hoverNode(), scrollbarDiv); | 10995 EXPECT_EQ(document->hoverNode(), scrollbarDiv); | 
| 10995 EXPECT_EQ(hitTestResult.scrollbar()->hoveredPart(), ScrollbarPart::ThumbPart); | 10996 EXPECT_EQ(hitTestResult.scrollbar()->hoveredPart(), ScrollbarPart::ThumbPart); | 
| 10996 } | 10997 } | 
| 10997 | 10998 | 
| 10999 // Makes sure that mouse hover over a scrollbar also hover the element owns the | |
| 11000 // scrollbar. | |
| 11001 TEST_F(WebFrameTest, MouseOverScrollbarAndParentElement) { | |
| 11002 registerMockedHttpURLLoad("scrollbar-and-element-hover.html"); | |
| 11003 FrameTestHelpers::WebViewHelper webViewHelper; | |
| 11004 RuntimeEnabledFeatures::setOverlayScrollbarsEnabled(false); | |
| 11005 WebViewImpl* webView = webViewHelper.initializeAndLoad( | |
| 11006 m_baseURL + "scrollbar-and-element-hover.html"); | |
| 11007 | |
| 11008 webViewHelper.resize(WebSize(200, 200)); | |
| 11009 | |
| 11010 webView->updateAllLifecyclePhases(); | |
| 11011 | |
| 11012 Document* document = toLocalFrame(webView->page()->mainFrame())->document(); | |
| 11013 | |
| 11014 Element* parentDiv = document->getElementById("parent"); | |
| 11015 Element* childDiv = document->getElementById("child"); | |
| 11016 EXPECT_TRUE(parentDiv); | |
| 11017 EXPECT_TRUE(childDiv); | |
| 11018 | |
| 11019 ScrollableArea* scrollableArea = | |
| 11020 toLayoutBox(parentDiv->layoutObject())->getScrollableArea(); | |
| 11021 | |
| 11022 EXPECT_TRUE(scrollableArea->verticalScrollbar()); | |
| 11023 EXPECT_FALSE(scrollableArea->verticalScrollbar()->isOverlayScrollbar()); | |
| 11024 EXPECT_TRUE(scrollableArea->verticalScrollbar()->theme().isMockTheme()); | |
| 11025 | |
| 11026 // Ensure hittest only has DIV. | |
| 11027 HitTestResult hitTestResult = webView->coreHitTestResultAt(WebPoint(1, 1)); | |
| 11028 | |
| 11029 EXPECT_TRUE(hitTestResult.innerElement()); | |
| 11030 EXPECT_FALSE(hitTestResult.scrollbar()); | |
| 11031 | |
| 11032 // Mouse over DIV. | |
| 11033 WebMouseEvent mouseMoveOverDiv( | |
| 11034 WebInputEvent::MouseMove, WebFloatPoint(1, 1), WebFloatPoint(1, 1), | |
| 11035 WebPointerProperties::Button::NoButton, 0, WebInputEvent::NoModifiers, | |
| 11036 TimeTicks::Now().InSeconds()); | |
| 11037 mouseMoveOverDiv.setFrameScale(1); | |
| 11038 document->frame()->eventHandler().handleMouseMoveEvent( | |
| 11039 mouseMoveOverDiv, Vector<WebMouseEvent>()); | |
| 11040 | |
| 11041 // DIV :hover. | |
| 11042 EXPECT_EQ(document->hoverNode(), parentDiv); | |
| 11043 | |
| 11044 // Ensure hittest has DIV and scrollbar. | |
| 11045 hitTestResult = webView->coreHitTestResultAt(WebPoint(175, 5)); | |
| 11046 | |
| 11047 EXPECT_TRUE(hitTestResult.innerElement()); | |
| 11048 EXPECT_TRUE(hitTestResult.scrollbar()); | |
| 11049 EXPECT_FALSE(hitTestResult.scrollbar()->isCustomScrollbar()); | |
| 11050 EXPECT_TRUE(hitTestResult.scrollbar()->enabled()); | |
| 11051 | |
| 11052 // Mouse over scrollbar. | |
| 11053 WebMouseEvent mouseMoveOverDivAndScrollbar( | |
| 11054 WebInputEvent::MouseMove, WebFloatPoint(175, 5), WebFloatPoint(175, 5), | |
| 11055 WebPointerProperties::Button::NoButton, 0, WebInputEvent::NoModifiers, | |
| 11056 TimeTicks::Now().InSeconds()); | |
| 11057 mouseMoveOverDivAndScrollbar.setFrameScale(1); | |
| 11058 document->frame()->eventHandler().handleMouseMoveEvent( | |
| 11059 mouseMoveOverDivAndScrollbar, Vector<WebMouseEvent>()); | |
| 11060 | |
| 11061 // Not change the DIV :hover. | |
| 11062 EXPECT_EQ(document->hoverNode(), parentDiv); | |
| 11063 | |
| 11064 // Disable the Scrollbar by remove the childDiv. | |
| 11065 childDiv->remove(); | |
| 11066 webView->updateAllLifecyclePhases(); | |
| 11067 | |
| 11068 // Ensure hittest has DIV and no scrollbar. | |
| 11069 hitTestResult = webView->coreHitTestResultAt(WebPoint(175, 5)); | |
| 11070 | |
| 11071 EXPECT_TRUE(hitTestResult.innerElement()); | |
| 11072 EXPECT_TRUE(hitTestResult.scrollbar()); | |
| 11073 EXPECT_FALSE(hitTestResult.scrollbar()->enabled()); | |
| 11074 EXPECT_EQ(hitTestResult.innerElement()->clientWidth(), 165); | |
| 
 
bokan
2017/02/03 19:17:22
Check instead that the clientWidth is < 180 so tha
 
 | |
| 11075 | |
| 11076 // Mouse over disabled scrollbar. | |
| 11077 document->frame()->eventHandler().handleMouseMoveEvent( | |
| 11078 mouseMoveOverDivAndScrollbar, Vector<WebMouseEvent>()); | |
| 11079 | |
| 11080 // Not change the DIV :hover. | |
| 11081 EXPECT_EQ(document->hoverNode(), parentDiv); | |
| 11082 } | |
| 11083 | |
| 10998 TEST_F(WebFrameTest, MouseReleaseUpdatesScrollbarHoveredPart) { | 11084 TEST_F(WebFrameTest, MouseReleaseUpdatesScrollbarHoveredPart) { | 
| 10999 registerMockedHttpURLLoad("custom-scrollbar-hover.html"); | 11085 registerMockedHttpURLLoad("custom-scrollbar-hover.html"); | 
| 11000 FrameTestHelpers::WebViewHelper webViewHelper; | 11086 FrameTestHelpers::WebViewHelper webViewHelper; | 
| 11001 WebViewImpl* webView = webViewHelper.initializeAndLoad( | 11087 WebViewImpl* webView = webViewHelper.initializeAndLoad( | 
| 11002 m_baseURL + "custom-scrollbar-hover.html"); | 11088 m_baseURL + "custom-scrollbar-hover.html"); | 
| 11003 | 11089 | 
| 11004 webViewHelper.resize(WebSize(200, 200)); | 11090 webViewHelper.resize(WebSize(200, 200)); | 
| 11005 | 11091 | 
| 11006 webView->updateAllLifecyclePhases(); | 11092 webView->updateAllLifecyclePhases(); | 
| 11007 | 11093 | 
| (...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 11257 | 11343 | 
| 11258 EXPECT_TRUE(mainFrameClient.childClient().didCallFrameDetached()); | 11344 EXPECT_TRUE(mainFrameClient.childClient().didCallFrameDetached()); | 
| 11259 EXPECT_TRUE(mainFrameClient.childClient().didCallDidStopLoading()); | 11345 EXPECT_TRUE(mainFrameClient.childClient().didCallDidStopLoading()); | 
| 11260 EXPECT_TRUE(mainFrameClient.childClient().didCallDidFinishDocumentLoad()); | 11346 EXPECT_TRUE(mainFrameClient.childClient().didCallDidFinishDocumentLoad()); | 
| 11261 EXPECT_TRUE(mainFrameClient.childClient().didCallDidHandleOnloadEvents()); | 11347 EXPECT_TRUE(mainFrameClient.childClient().didCallDidHandleOnloadEvents()); | 
| 11262 | 11348 | 
| 11263 webViewHelper.reset(); | 11349 webViewHelper.reset(); | 
| 11264 } | 11350 } | 
| 11265 | 11351 | 
| 11266 } // namespace blink | 11352 } // namespace blink | 
| OLD | NEW |