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 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
72 #include "core/loader/FrameLoadRequest.h" | 72 #include "core/loader/FrameLoadRequest.h" |
73 #include "core/loader/ThreadableLoader.h" | 73 #include "core/loader/ThreadableLoader.h" |
74 #include "core/page/Page.h" | 74 #include "core/page/Page.h" |
75 #include "core/page/ScopedPageSuspender.h" | 75 #include "core/page/ScopedPageSuspender.h" |
76 #include "core/paint/PaintLayer.h" | 76 #include "core/paint/PaintLayer.h" |
77 #include "core/testing/NullExecutionContext.h" | 77 #include "core/testing/NullExecutionContext.h" |
78 #include "modules/mediastream/MediaStream.h" | 78 #include "modules/mediastream/MediaStream.h" |
79 #include "modules/mediastream/MediaStreamRegistry.h" | 79 #include "modules/mediastream/MediaStreamRegistry.h" |
80 #include "platform/Cursor.h" | 80 #include "platform/Cursor.h" |
81 #include "platform/DragImage.h" | 81 #include "platform/DragImage.h" |
82 #include "platform/PlatformMouseEvent.h" | |
83 #include "platform/PlatformResourceLoader.h" | 82 #include "platform/PlatformResourceLoader.h" |
84 #include "platform/RuntimeEnabledFeatures.h" | 83 #include "platform/RuntimeEnabledFeatures.h" |
85 #include "platform/UserGestureIndicator.h" | 84 #include "platform/UserGestureIndicator.h" |
86 #include "platform/geometry/FloatRect.h" | 85 #include "platform/geometry/FloatRect.h" |
87 #include "platform/loader/fetch/FetchRequest.h" | 86 #include "platform/loader/fetch/FetchRequest.h" |
88 #include "platform/loader/fetch/MemoryCache.h" | 87 #include "platform/loader/fetch/MemoryCache.h" |
89 #include "platform/loader/fetch/ResourceFetcher.h" | 88 #include "platform/loader/fetch/ResourceFetcher.h" |
90 #include "platform/network/ResourceError.h" | 89 #include "platform/network/ResourceError.h" |
91 #include "platform/scroll/Scrollbar.h" | 90 #include "platform/scroll/Scrollbar.h" |
92 #include "platform/scroll/ScrollbarTestSuite.h" | 91 #include "platform/scroll/ScrollbarTestSuite.h" |
(...skipping 6773 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6866 TestNavigationPolicyWebFrameClient client; | 6865 TestNavigationPolicyWebFrameClient client; |
6867 FrameTestHelpers::WebViewHelper webViewHelper; | 6866 FrameTestHelpers::WebViewHelper webViewHelper; |
6868 webViewHelper.initializeAndLoad(m_baseURL + "fragment_middle_click.html", | 6867 webViewHelper.initializeAndLoad(m_baseURL + "fragment_middle_click.html", |
6869 true, &client); | 6868 true, &client); |
6870 | 6869 |
6871 Document* document = | 6870 Document* document = |
6872 toLocalFrame(webViewHelper.webView()->page()->mainFrame())->document(); | 6871 toLocalFrame(webViewHelper.webView()->page()->mainFrame())->document(); |
6873 KURL destination = document->url(); | 6872 KURL destination = document->url(); |
6874 destination.setFragmentIdentifier("test"); | 6873 destination.setFragmentIdentifier("test"); |
6875 | 6874 |
6876 Event* event = MouseEvent::create( | 6875 MouseEventInit mouseInitializer; |
6877 EventTypeNames::click, false, false, document->domWindow(), 0, 0, 0, 0, 0, | 6876 mouseInitializer.setView(document->domWindow()); |
6878 0, 0, PlatformEvent::NoModifiers, 1, 0, nullptr, TimeTicks(), | 6877 mouseInitializer.setButton(1); |
6879 PlatformMouseEvent::RealOrIndistinguishable, String(), nullptr); | 6878 |
| 6879 Event* event = |
| 6880 MouseEvent::create(nullptr, EventTypeNames::click, mouseInitializer); |
6880 FrameLoadRequest frameRequest(document, ResourceRequest(destination)); | 6881 FrameLoadRequest frameRequest(document, ResourceRequest(destination)); |
6881 frameRequest.setTriggeringEvent(event); | 6882 frameRequest.setTriggeringEvent(event); |
6882 toLocalFrame(webViewHelper.webView()->page()->mainFrame()) | 6883 toLocalFrame(webViewHelper.webView()->page()->mainFrame()) |
6883 ->loader() | 6884 ->loader() |
6884 .load(frameRequest); | 6885 .load(frameRequest); |
6885 } | 6886 } |
6886 | 6887 |
6887 class TestNewWindowWebViewClient : public FrameTestHelpers::TestWebViewClient { | 6888 class TestNewWindowWebViewClient : public FrameTestHelpers::TestWebViewClient { |
6888 public: | 6889 public: |
6889 virtual WebView* createView(WebLocalFrame*, | 6890 virtual WebView* createView(WebLocalFrame*, |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6921 TestNewWindowWebFrameClient webFrameClient; | 6922 TestNewWindowWebFrameClient webFrameClient; |
6922 FrameTestHelpers::WebViewHelper webViewHelper; | 6923 FrameTestHelpers::WebViewHelper webViewHelper; |
6923 webViewHelper.initializeAndLoad(m_baseURL + "ctrl_click.html", true, | 6924 webViewHelper.initializeAndLoad(m_baseURL + "ctrl_click.html", true, |
6924 &webFrameClient, &webViewClient); | 6925 &webFrameClient, &webViewClient); |
6925 | 6926 |
6926 Document* document = | 6927 Document* document = |
6927 toLocalFrame(webViewHelper.webView()->page()->mainFrame())->document(); | 6928 toLocalFrame(webViewHelper.webView()->page()->mainFrame())->document(); |
6928 KURL destination = toKURL(m_baseURL + "hello_world.html"); | 6929 KURL destination = toKURL(m_baseURL + "hello_world.html"); |
6929 | 6930 |
6930 // ctrl+click event | 6931 // ctrl+click event |
6931 Event* event = MouseEvent::create( | 6932 MouseEventInit mouseInitializer; |
6932 EventTypeNames::click, false, false, document->domWindow(), 0, 0, 0, 0, 0, | 6933 mouseInitializer.setView(document->domWindow()); |
6933 0, 0, PlatformEvent::CtrlKey, 0, 0, nullptr, TimeTicks(), | 6934 mouseInitializer.setButton(1); |
6934 PlatformMouseEvent::RealOrIndistinguishable, String(), nullptr); | 6935 mouseInitializer.setCtrlKey(true); |
| 6936 |
| 6937 Event* event = |
| 6938 MouseEvent::create(nullptr, EventTypeNames::click, mouseInitializer); |
6935 FrameLoadRequest frameRequest(document, ResourceRequest(destination)); | 6939 FrameLoadRequest frameRequest(document, ResourceRequest(destination)); |
6936 frameRequest.setTriggeringEvent(event); | 6940 frameRequest.setTriggeringEvent(event); |
6937 UserGestureIndicator gesture(DocumentUserGestureToken::create(document)); | 6941 UserGestureIndicator gesture(DocumentUserGestureToken::create(document)); |
6938 toLocalFrame(webViewHelper.webView()->page()->mainFrame()) | 6942 toLocalFrame(webViewHelper.webView()->page()->mainFrame()) |
6939 ->loader() | 6943 ->loader() |
6940 .load(frameRequest); | 6944 .load(frameRequest); |
6941 FrameTestHelpers::pumpPendingRequestsForFrameToLoad( | 6945 FrameTestHelpers::pumpPendingRequestsForFrameToLoad( |
6942 webViewHelper.webView()->mainFrame()); | 6946 webViewHelper.webView()->mainFrame()); |
6943 | 6947 |
6944 // decidePolicyForNavigation should be called both for the original request | 6948 // decidePolicyForNavigation should be called both for the original request |
(...skipping 3845 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10790 | 10794 |
10791 Document* document = webView->mainFrameImpl()->frame()->document(); | 10795 Document* document = webView->mainFrameImpl()->frame()->document(); |
10792 Element* div1Tag = document->getElementById("div1"); | 10796 Element* div1Tag = document->getElementById("div1"); |
10793 | 10797 |
10794 HitTestResult hitTestResult = webView->coreHitTestResultAt( | 10798 HitTestResult hitTestResult = webView->coreHitTestResultAt( |
10795 WebPoint(div1Tag->offsetLeft() + 5, div1Tag->offsetTop() + 5)); | 10799 WebPoint(div1Tag->offsetLeft() + 5, div1Tag->offsetTop() + 5)); |
10796 | 10800 |
10797 EXPECT_TRUE(hitTestResult.innerElement()); | 10801 EXPECT_TRUE(hitTestResult.innerElement()); |
10798 | 10802 |
10799 // Mouse over link. Mouse cursor should be hand. | 10803 // Mouse over link. Mouse cursor should be hand. |
10800 PlatformMouseEvent mouseMoveOverLinkEvent( | 10804 WebMouseEvent mouseMoveOverLinkEvent( |
10801 IntPoint(div1Tag->offsetLeft() + 5, div1Tag->offsetTop() + 5), | 10805 WebInputEvent::MouseMove, |
10802 IntPoint(div1Tag->offsetLeft() + 5, div1Tag->offsetTop() + 5), | 10806 WebFloatPoint(div1Tag->offsetLeft() + 5, div1Tag->offsetTop() + 5), |
10803 WebPointerProperties::Button::NoButton, PlatformEvent::MouseMoved, 0, | 10807 WebFloatPoint(div1Tag->offsetLeft() + 5, div1Tag->offsetTop() + 5), |
10804 PlatformEvent::NoModifiers, TimeTicks::Now()); | 10808 WebPointerProperties::Button::NoButton, 0, WebInputEvent::NoModifiers, |
| 10809 TimeTicks::Now().InSeconds()); |
| 10810 mouseMoveOverLinkEvent.setFrameScale(1); |
10805 document->frame()->eventHandler().handleMouseMoveEvent( | 10811 document->frame()->eventHandler().handleMouseMoveEvent( |
10806 mouseMoveOverLinkEvent, Vector<PlatformMouseEvent>()); | 10812 mouseMoveOverLinkEvent, Vector<WebMouseEvent>()); |
10807 | 10813 |
10808 EXPECT_EQ(document->hoverNode(), | 10814 EXPECT_EQ(document->hoverNode(), |
10809 document->frame()->chromeClient().lastSetTooltipNodeForTesting()); | 10815 document->frame()->chromeClient().lastSetTooltipNodeForTesting()); |
10810 EXPECT_EQ(div1Tag, | 10816 EXPECT_EQ(div1Tag, |
10811 document->frame()->chromeClient().lastSetTooltipNodeForTesting()); | 10817 document->frame()->chromeClient().lastSetTooltipNodeForTesting()); |
10812 | 10818 |
10813 Element* div2Tag = document->getElementById("div2"); | 10819 Element* div2Tag = document->getElementById("div2"); |
10814 | 10820 |
10815 PlatformMouseEvent mouseMoveEvent( | 10821 WebMouseEvent mouseMoveEvent( |
10816 IntPoint(div2Tag->offsetLeft() + 5, div2Tag->offsetTop() + 5), | 10822 WebInputEvent::MouseMove, |
10817 IntPoint(div2Tag->offsetLeft() + 5, div2Tag->offsetTop() + 5), | 10823 WebFloatPoint(div2Tag->offsetLeft() + 5, div2Tag->offsetTop() + 5), |
10818 WebPointerProperties::Button::NoButton, PlatformEvent::MouseMoved, 0, | 10824 WebFloatPoint(div2Tag->offsetLeft() + 5, div2Tag->offsetTop() + 5), |
10819 PlatformEvent::NoModifiers, TimeTicks::Now()); | 10825 WebPointerProperties::Button::NoButton, 0, WebInputEvent::NoModifiers, |
| 10826 TimeTicks::Now().InSeconds()); |
| 10827 mouseMoveEvent.setFrameScale(1); |
10820 document->frame()->eventHandler().handleMouseMoveEvent( | 10828 document->frame()->eventHandler().handleMouseMoveEvent( |
10821 mouseMoveEvent, Vector<PlatformMouseEvent>()); | 10829 mouseMoveEvent, Vector<WebMouseEvent>()); |
10822 | 10830 |
10823 EXPECT_EQ(document->hoverNode(), | 10831 EXPECT_EQ(document->hoverNode(), |
10824 document->frame()->chromeClient().lastSetTooltipNodeForTesting()); | 10832 document->frame()->chromeClient().lastSetTooltipNodeForTesting()); |
10825 EXPECT_EQ(div2Tag, | 10833 EXPECT_EQ(div2Tag, |
10826 document->frame()->chromeClient().lastSetTooltipNodeForTesting()); | 10834 document->frame()->chromeClient().lastSetTooltipNodeForTesting()); |
10827 } | 10835 } |
10828 | 10836 |
10829 // Makes sure that mouse hover over an overlay scrollbar doesn't activate | 10837 // Makes sure that mouse hover over an overlay scrollbar doesn't activate |
10830 // elements below unless the scrollbar is faded out. | 10838 // elements below unless the scrollbar is faded out. |
10831 TEST_F(WebFrameTest, MouseOverLinkAndOverlayScrollbar) { | 10839 TEST_F(WebFrameTest, MouseOverLinkAndOverlayScrollbar) { |
(...skipping 20 matching lines...) Expand all Loading... |
10852 // Ensure hittest has scrollbar and link | 10860 // Ensure hittest has scrollbar and link |
10853 HitTestResult hitTestResult = | 10861 HitTestResult hitTestResult = |
10854 webView->coreHitTestResultAt(WebPoint(18, aTag->offsetTop())); | 10862 webView->coreHitTestResultAt(WebPoint(18, aTag->offsetTop())); |
10855 | 10863 |
10856 EXPECT_TRUE(hitTestResult.URLElement()); | 10864 EXPECT_TRUE(hitTestResult.URLElement()); |
10857 EXPECT_TRUE(hitTestResult.innerElement()); | 10865 EXPECT_TRUE(hitTestResult.innerElement()); |
10858 EXPECT_TRUE(hitTestResult.scrollbar()); | 10866 EXPECT_TRUE(hitTestResult.scrollbar()); |
10859 EXPECT_FALSE(hitTestResult.scrollbar()->isCustomScrollbar()); | 10867 EXPECT_FALSE(hitTestResult.scrollbar()->isCustomScrollbar()); |
10860 | 10868 |
10861 // Mouse over link. Mouse cursor should be hand. | 10869 // Mouse over link. Mouse cursor should be hand. |
10862 PlatformMouseEvent mouseMoveOverLinkEvent( | 10870 WebMouseEvent mouseMoveOverLinkEvent( |
10863 IntPoint(aTag->offsetLeft(), aTag->offsetTop()), | 10871 WebInputEvent::MouseMove, |
10864 IntPoint(aTag->offsetLeft(), aTag->offsetTop()), | 10872 WebFloatPoint(aTag->offsetLeft(), aTag->offsetTop()), |
10865 WebPointerProperties::Button::NoButton, PlatformEvent::MouseMoved, 0, | 10873 WebFloatPoint(aTag->offsetLeft(), aTag->offsetTop()), |
10866 PlatformEvent::NoModifiers, TimeTicks::Now()); | 10874 WebPointerProperties::Button::NoButton, 0, WebInputEvent::NoModifiers, |
| 10875 TimeTicks::Now().InSeconds()); |
| 10876 mouseMoveOverLinkEvent.setFrameScale(1); |
10867 document->frame()->eventHandler().handleMouseMoveEvent( | 10877 document->frame()->eventHandler().handleMouseMoveEvent( |
10868 mouseMoveOverLinkEvent, Vector<PlatformMouseEvent>()); | 10878 mouseMoveOverLinkEvent, Vector<WebMouseEvent>()); |
10869 | 10879 |
10870 EXPECT_EQ( | 10880 EXPECT_EQ( |
10871 Cursor::Type::Hand, | 10881 Cursor::Type::Hand, |
10872 document->frame()->chromeClient().lastSetCursorForTesting().getType()); | 10882 document->frame()->chromeClient().lastSetCursorForTesting().getType()); |
10873 | 10883 |
10874 // Mouse over enabled overlay scrollbar. Mouse cursor should be pointer and no | 10884 // Mouse over enabled overlay scrollbar. Mouse cursor should be pointer and no |
10875 // active hover element. | 10885 // active hover element. |
10876 PlatformMouseEvent mouseMoveEvent( | 10886 WebMouseEvent mouseMoveEvent( |
10877 IntPoint(18, aTag->offsetTop()), IntPoint(18, aTag->offsetTop()), | 10887 WebInputEvent::MouseMove, WebFloatPoint(18, aTag->offsetTop()), |
10878 WebPointerProperties::Button::NoButton, PlatformEvent::MouseMoved, 0, | 10888 WebFloatPoint(18, aTag->offsetTop()), |
10879 PlatformEvent::NoModifiers, TimeTicks::Now()); | 10889 WebPointerProperties::Button::NoButton, 0, WebInputEvent::NoModifiers, |
| 10890 TimeTicks::Now().InSeconds()); |
| 10891 mouseMoveEvent.setFrameScale(1); |
10880 document->frame()->eventHandler().handleMouseMoveEvent( | 10892 document->frame()->eventHandler().handleMouseMoveEvent( |
10881 mouseMoveEvent, Vector<PlatformMouseEvent>()); | 10893 mouseMoveEvent, Vector<WebMouseEvent>()); |
10882 | 10894 |
10883 EXPECT_EQ( | 10895 EXPECT_EQ( |
10884 Cursor::Type::Pointer, | 10896 Cursor::Type::Pointer, |
10885 document->frame()->chromeClient().lastSetCursorForTesting().getType()); | 10897 document->frame()->chromeClient().lastSetCursorForTesting().getType()); |
10886 | 10898 |
10887 PlatformMouseEvent mousePressEvent( | 10899 WebMouseEvent mousePressEvent( |
10888 IntPoint(18, aTag->offsetTop()), IntPoint(18, aTag->offsetTop()), | 10900 WebInputEvent::MouseDown, WebFloatPoint(18, aTag->offsetTop()), |
10889 WebPointerProperties::Button::Left, PlatformEvent::MousePressed, 0, | 10901 WebFloatPoint(18, aTag->offsetTop()), WebPointerProperties::Button::Left, |
10890 PlatformEvent::Modifiers::LeftButtonDown, TimeTicks::Now()); | 10902 0, WebInputEvent::Modifiers::LeftButtonDown, |
| 10903 TimeTicks::Now().InSeconds()); |
| 10904 mousePressEvent.setFrameScale(1); |
10891 document->frame()->eventHandler().handleMousePressEvent(mousePressEvent); | 10905 document->frame()->eventHandler().handleMousePressEvent(mousePressEvent); |
10892 | 10906 |
10893 EXPECT_FALSE(document->activeHoverElement()); | 10907 EXPECT_FALSE(document->activeHoverElement()); |
10894 EXPECT_FALSE(document->hoverNode()); | 10908 EXPECT_FALSE(document->hoverNode()); |
10895 | 10909 |
10896 PlatformMouseEvent MouseReleaseEvent( | 10910 WebMouseEvent mouseReleaseEvent( |
10897 IntPoint(18, aTag->offsetTop()), IntPoint(18, aTag->offsetTop()), | 10911 WebInputEvent::MouseUp, WebFloatPoint(18, aTag->offsetTop()), |
10898 WebPointerProperties::Button::Left, PlatformEvent::MouseReleased, 0, | 10912 WebFloatPoint(18, aTag->offsetTop()), WebPointerProperties::Button::Left, |
10899 PlatformEvent::Modifiers::LeftButtonDown, TimeTicks::Now()); | 10913 0, WebInputEvent::Modifiers::LeftButtonDown, |
10900 document->frame()->eventHandler().handleMouseReleaseEvent(MouseReleaseEvent); | 10914 TimeTicks::Now().InSeconds()); |
| 10915 mouseReleaseEvent.setFrameScale(1); |
| 10916 document->frame()->eventHandler().handleMouseReleaseEvent(mouseReleaseEvent); |
10901 | 10917 |
10902 // Mouse over disabled overlay scrollbar. Mouse cursor should be hand and has | 10918 // Mouse over disabled overlay scrollbar. Mouse cursor should be hand and has |
10903 // active hover element. | 10919 // active hover element. |
10904 webView->mainFrameImpl()->frameView()->setScrollbarsHidden(true); | 10920 webView->mainFrameImpl()->frameView()->setScrollbarsHidden(true); |
10905 | 10921 |
10906 // Ensure hittest only has link | 10922 // Ensure hittest only has link |
10907 hitTestResult = webView->coreHitTestResultAt(WebPoint(18, aTag->offsetTop())); | 10923 hitTestResult = webView->coreHitTestResultAt(WebPoint(18, aTag->offsetTop())); |
10908 | 10924 |
10909 EXPECT_TRUE(hitTestResult.URLElement()); | 10925 EXPECT_TRUE(hitTestResult.URLElement()); |
10910 EXPECT_TRUE(hitTestResult.innerElement()); | 10926 EXPECT_TRUE(hitTestResult.innerElement()); |
10911 EXPECT_FALSE(hitTestResult.scrollbar()); | 10927 EXPECT_FALSE(hitTestResult.scrollbar()); |
10912 | 10928 |
10913 document->frame()->eventHandler().handleMouseMoveEvent( | 10929 document->frame()->eventHandler().handleMouseMoveEvent( |
10914 mouseMoveEvent, Vector<PlatformMouseEvent>()); | 10930 mouseMoveEvent, Vector<WebMouseEvent>()); |
10915 | 10931 |
10916 EXPECT_EQ( | 10932 EXPECT_EQ( |
10917 Cursor::Type::Hand, | 10933 Cursor::Type::Hand, |
10918 document->frame()->chromeClient().lastSetCursorForTesting().getType()); | 10934 document->frame()->chromeClient().lastSetCursorForTesting().getType()); |
10919 | 10935 |
10920 document->frame()->eventHandler().handleMousePressEvent(mousePressEvent); | 10936 document->frame()->eventHandler().handleMousePressEvent(mousePressEvent); |
10921 | 10937 |
10922 EXPECT_TRUE(document->activeHoverElement()); | 10938 EXPECT_TRUE(document->activeHoverElement()); |
10923 EXPECT_TRUE(document->hoverNode()); | 10939 EXPECT_TRUE(document->hoverNode()); |
10924 | 10940 |
10925 document->frame()->eventHandler().handleMouseReleaseEvent(MouseReleaseEvent); | 10941 document->frame()->eventHandler().handleMouseReleaseEvent(mouseReleaseEvent); |
10926 } | 10942 } |
10927 | 10943 |
10928 // Makes sure that mouse hover over an custom scrollbar doesn't change the | 10944 // Makes sure that mouse hover over an custom scrollbar doesn't change the |
10929 // activate elements. | 10945 // activate elements. |
10930 TEST_F(WebFrameTest, MouseOverCustomScrollbar) { | 10946 TEST_F(WebFrameTest, MouseOverCustomScrollbar) { |
10931 registerMockedHttpURLLoad("custom-scrollbar-hover.html"); | 10947 registerMockedHttpURLLoad("custom-scrollbar-hover.html"); |
10932 FrameTestHelpers::WebViewHelper webViewHelper; | 10948 FrameTestHelpers::WebViewHelper webViewHelper; |
10933 WebViewImpl* webView = webViewHelper.initializeAndLoad( | 10949 WebViewImpl* webView = webViewHelper.initializeAndLoad( |
10934 m_baseURL + "custom-scrollbar-hover.html"); | 10950 m_baseURL + "custom-scrollbar-hover.html"); |
10935 | 10951 |
10936 webViewHelper.resize(WebSize(200, 200)); | 10952 webViewHelper.resize(WebSize(200, 200)); |
10937 | 10953 |
10938 webView->updateAllLifecyclePhases(); | 10954 webView->updateAllLifecyclePhases(); |
10939 | 10955 |
10940 Document* document = toLocalFrame(webView->page()->mainFrame())->document(); | 10956 Document* document = toLocalFrame(webView->page()->mainFrame())->document(); |
10941 | 10957 |
10942 Element* scrollbarDiv = document->getElementById("scrollbar"); | 10958 Element* scrollbarDiv = document->getElementById("scrollbar"); |
10943 EXPECT_TRUE(scrollbarDiv); | 10959 EXPECT_TRUE(scrollbarDiv); |
10944 | 10960 |
10945 // Ensure hittest only has DIV | 10961 // Ensure hittest only has DIV |
10946 HitTestResult hitTestResult = webView->coreHitTestResultAt(WebPoint(1, 1)); | 10962 HitTestResult hitTestResult = webView->coreHitTestResultAt(WebPoint(1, 1)); |
10947 | 10963 |
10948 EXPECT_TRUE(hitTestResult.innerElement()); | 10964 EXPECT_TRUE(hitTestResult.innerElement()); |
10949 EXPECT_FALSE(hitTestResult.scrollbar()); | 10965 EXPECT_FALSE(hitTestResult.scrollbar()); |
10950 | 10966 |
10951 // Mouse over DIV | 10967 // Mouse over DIV |
10952 PlatformMouseEvent mouseMoveOverDiv( | 10968 WebMouseEvent mouseMoveOverDiv( |
10953 IntPoint(1, 1), IntPoint(1, 1), WebPointerProperties::Button::NoButton, | 10969 WebInputEvent::MouseMove, WebFloatPoint(1, 1), WebFloatPoint(1, 1), |
10954 PlatformEvent::MouseMoved, 0, PlatformEvent::NoModifiers, | 10970 WebPointerProperties::Button::NoButton, 0, WebInputEvent::NoModifiers, |
10955 TimeTicks::Now()); | 10971 TimeTicks::Now().InSeconds()); |
| 10972 mouseMoveOverDiv.setFrameScale(1); |
10956 document->frame()->eventHandler().handleMouseMoveEvent( | 10973 document->frame()->eventHandler().handleMouseMoveEvent( |
10957 mouseMoveOverDiv, Vector<PlatformMouseEvent>()); | 10974 mouseMoveOverDiv, Vector<WebMouseEvent>()); |
10958 | 10975 |
10959 // DIV :hover | 10976 // DIV :hover |
10960 EXPECT_EQ(document->hoverNode(), scrollbarDiv); | 10977 EXPECT_EQ(document->hoverNode(), scrollbarDiv); |
10961 | 10978 |
10962 // Ensure hittest has DIV and scrollbar | 10979 // Ensure hittest has DIV and scrollbar |
10963 hitTestResult = webView->coreHitTestResultAt(WebPoint(175, 1)); | 10980 hitTestResult = webView->coreHitTestResultAt(WebPoint(175, 1)); |
10964 | 10981 |
10965 EXPECT_TRUE(hitTestResult.innerElement()); | 10982 EXPECT_TRUE(hitTestResult.innerElement()); |
10966 EXPECT_TRUE(hitTestResult.scrollbar()); | 10983 EXPECT_TRUE(hitTestResult.scrollbar()); |
10967 EXPECT_TRUE(hitTestResult.scrollbar()->isCustomScrollbar()); | 10984 EXPECT_TRUE(hitTestResult.scrollbar()->isCustomScrollbar()); |
10968 | 10985 |
10969 // Mouse over scrollbar | 10986 // Mouse over scrollbar |
10970 PlatformMouseEvent mouseMoveOverDivAndScrollbar( | 10987 WebMouseEvent mouseMoveOverDivAndScrollbar( |
10971 IntPoint(175, 1), IntPoint(175, 1), | 10988 WebInputEvent::MouseMove, WebFloatPoint(175, 1), WebFloatPoint(175, 1), |
10972 WebPointerProperties::Button::NoButton, PlatformEvent::MouseMoved, 0, | 10989 WebPointerProperties::Button::NoButton, 0, WebInputEvent::NoModifiers, |
10973 PlatformEvent::NoModifiers, TimeTicks::Now()); | 10990 TimeTicks::Now().InSeconds()); |
| 10991 mouseMoveOverDivAndScrollbar.setFrameScale(1); |
10974 document->frame()->eventHandler().handleMouseMoveEvent( | 10992 document->frame()->eventHandler().handleMouseMoveEvent( |
10975 mouseMoveOverDivAndScrollbar, Vector<PlatformMouseEvent>()); | 10993 mouseMoveOverDivAndScrollbar, Vector<WebMouseEvent>()); |
10976 | 10994 |
10977 // Custom not change the DIV :hover | 10995 // Custom not change the DIV :hover |
10978 EXPECT_EQ(document->hoverNode(), scrollbarDiv); | 10996 EXPECT_EQ(document->hoverNode(), scrollbarDiv); |
10979 EXPECT_EQ(hitTestResult.scrollbar()->hoveredPart(), ScrollbarPart::ThumbPart); | 10997 EXPECT_EQ(hitTestResult.scrollbar()->hoveredPart(), ScrollbarPart::ThumbPart); |
10980 } | 10998 } |
10981 | 10999 |
10982 TEST_F(WebFrameTest, MouseReleaseUpdatesScrollbarHoveredPart) { | 11000 TEST_F(WebFrameTest, MouseReleaseUpdatesScrollbarHoveredPart) { |
10983 registerMockedHttpURLLoad("custom-scrollbar-hover.html"); | 11001 registerMockedHttpURLLoad("custom-scrollbar-hover.html"); |
10984 FrameTestHelpers::WebViewHelper webViewHelper; | 11002 FrameTestHelpers::WebViewHelper webViewHelper; |
10985 WebViewImpl* webView = webViewHelper.initializeAndLoad( | 11003 WebViewImpl* webView = webViewHelper.initializeAndLoad( |
(...skipping 10 matching lines...) Expand all Loading... |
10996 | 11014 |
10997 ScrollableArea* scrollableArea = | 11015 ScrollableArea* scrollableArea = |
10998 toLayoutBox(scrollbarDiv->layoutObject())->getScrollableArea(); | 11016 toLayoutBox(scrollbarDiv->layoutObject())->getScrollableArea(); |
10999 | 11017 |
11000 EXPECT_TRUE(scrollableArea->verticalScrollbar()); | 11018 EXPECT_TRUE(scrollableArea->verticalScrollbar()); |
11001 Scrollbar* scrollbar = scrollableArea->verticalScrollbar(); | 11019 Scrollbar* scrollbar = scrollableArea->verticalScrollbar(); |
11002 EXPECT_EQ(scrollbar->pressedPart(), ScrollbarPart::NoPart); | 11020 EXPECT_EQ(scrollbar->pressedPart(), ScrollbarPart::NoPart); |
11003 EXPECT_EQ(scrollbar->hoveredPart(), ScrollbarPart::NoPart); | 11021 EXPECT_EQ(scrollbar->hoveredPart(), ScrollbarPart::NoPart); |
11004 | 11022 |
11005 // Mouse moved over the scrollbar. | 11023 // Mouse moved over the scrollbar. |
11006 PlatformMouseEvent mouseMoveOverScrollbar( | 11024 WebMouseEvent mouseMoveOverScrollbar( |
11007 IntPoint(175, 1), IntPoint(175, 1), | 11025 WebInputEvent::MouseMove, WebFloatPoint(175, 1), WebFloatPoint(175, 1), |
11008 WebPointerProperties::Button::NoButton, PlatformEvent::MouseMoved, 0, | 11026 WebPointerProperties::Button::NoButton, 0, WebInputEvent::NoModifiers, |
11009 PlatformEvent::NoModifiers, TimeTicks::Now()); | 11027 TimeTicks::Now().InSeconds()); |
| 11028 mouseMoveOverScrollbar.setFrameScale(1); |
11010 document->frame()->eventHandler().handleMouseMoveEvent( | 11029 document->frame()->eventHandler().handleMouseMoveEvent( |
11011 mouseMoveOverScrollbar, Vector<PlatformMouseEvent>()); | 11030 mouseMoveOverScrollbar, Vector<WebMouseEvent>()); |
11012 HitTestResult hitTestResult = webView->coreHitTestResultAt(WebPoint(175, 1)); | 11031 HitTestResult hitTestResult = webView->coreHitTestResultAt(WebPoint(175, 1)); |
11013 EXPECT_EQ(scrollbar->pressedPart(), ScrollbarPart::NoPart); | 11032 EXPECT_EQ(scrollbar->pressedPart(), ScrollbarPart::NoPart); |
11014 EXPECT_EQ(scrollbar->hoveredPart(), ScrollbarPart::ThumbPart); | 11033 EXPECT_EQ(scrollbar->hoveredPart(), ScrollbarPart::ThumbPart); |
11015 | 11034 |
11016 // Mouse pressed. | 11035 // Mouse pressed. |
11017 PlatformMouseEvent mousePressEvent( | 11036 WebMouseEvent mousePressEvent( |
11018 IntPoint(175, 1), IntPoint(175, 1), WebPointerProperties::Button::Left, | 11037 WebInputEvent::MouseDown, WebFloatPoint(175, 1), WebFloatPoint(175, 1), |
11019 PlatformEvent::MousePressed, 0, PlatformEvent::Modifiers::LeftButtonDown, | 11038 WebPointerProperties::Button::Left, 0, |
11020 TimeTicks::Now()); | 11039 WebInputEvent::Modifiers::LeftButtonDown, TimeTicks::Now().InSeconds()); |
| 11040 mousePressEvent.setFrameScale(1); |
11021 document->frame()->eventHandler().handleMousePressEvent(mousePressEvent); | 11041 document->frame()->eventHandler().handleMousePressEvent(mousePressEvent); |
11022 EXPECT_EQ(scrollbar->pressedPart(), ScrollbarPart::ThumbPart); | 11042 EXPECT_EQ(scrollbar->pressedPart(), ScrollbarPart::ThumbPart); |
11023 EXPECT_EQ(scrollbar->hoveredPart(), ScrollbarPart::ThumbPart); | 11043 EXPECT_EQ(scrollbar->hoveredPart(), ScrollbarPart::ThumbPart); |
11024 | 11044 |
11025 // Mouse moved off the scrollbar while still pressed. | 11045 // Mouse moved off the scrollbar while still pressed. |
11026 PlatformMouseEvent mouseMoveOffScrollbar( | 11046 WebMouseEvent mouseMoveOffScrollbar( |
11027 IntPoint(1, 1), IntPoint(1, 1), WebPointerProperties::Button::Left, | 11047 WebInputEvent::MouseMove, WebFloatPoint(1, 1), WebFloatPoint(1, 1), |
11028 PlatformEvent::MouseMoved, 0, PlatformEvent::Modifiers::LeftButtonDown, | 11048 WebPointerProperties::Button::Left, 0, |
11029 TimeTicks::Now()); | 11049 WebInputEvent::Modifiers::LeftButtonDown, TimeTicks::Now().InSeconds()); |
| 11050 mouseMoveOffScrollbar.setFrameScale(1); |
11030 document->frame()->eventHandler().handleMouseLeaveEvent( | 11051 document->frame()->eventHandler().handleMouseLeaveEvent( |
11031 mouseMoveOffScrollbar); | 11052 mouseMoveOffScrollbar); |
11032 EXPECT_EQ(scrollbar->pressedPart(), ScrollbarPart::ThumbPart); | 11053 EXPECT_EQ(scrollbar->pressedPart(), ScrollbarPart::ThumbPart); |
11033 EXPECT_EQ(scrollbar->hoveredPart(), ScrollbarPart::ThumbPart); | 11054 EXPECT_EQ(scrollbar->hoveredPart(), ScrollbarPart::ThumbPart); |
11034 | 11055 |
11035 // Mouse released. | 11056 // Mouse released. |
11036 PlatformMouseEvent MouseReleaseEvent( | 11057 WebMouseEvent mouseReleaseEvent( |
11037 IntPoint(1, 1), IntPoint(1, 1), WebPointerProperties::Button::Left, | 11058 WebInputEvent::MouseUp, WebFloatPoint(1, 1), WebFloatPoint(1, 1), |
11038 PlatformEvent::MouseReleased, 0, PlatformEvent::Modifiers::LeftButtonDown, | 11059 WebPointerProperties::Button::Left, 0, |
11039 TimeTicks::Now()); | 11060 WebInputEvent::Modifiers::LeftButtonDown, TimeTicks::Now().InSeconds()); |
11040 document->frame()->eventHandler().handleMouseReleaseEvent(MouseReleaseEvent); | 11061 mouseReleaseEvent.setFrameScale(1); |
| 11062 document->frame()->eventHandler().handleMouseReleaseEvent(mouseReleaseEvent); |
11041 EXPECT_EQ(scrollbar->pressedPart(), ScrollbarPart::NoPart); | 11063 EXPECT_EQ(scrollbar->pressedPart(), ScrollbarPart::NoPart); |
11042 EXPECT_EQ(scrollbar->hoveredPart(), ScrollbarPart::NoPart); | 11064 EXPECT_EQ(scrollbar->hoveredPart(), ScrollbarPart::NoPart); |
11043 } | 11065 } |
11044 | 11066 |
11045 static void disableCompositing(WebSettings* settings) { | 11067 static void disableCompositing(WebSettings* settings) { |
11046 settings->setAcceleratedCompositingEnabled(false); | 11068 settings->setAcceleratedCompositingEnabled(false); |
11047 settings->setPreferCompositingToLCDTextEnabled(false); | 11069 settings->setPreferCompositingToLCDTextEnabled(false); |
11048 } | 11070 } |
11049 | 11071 |
11050 // Make sure overlay scrollbars on non-composited scrollers fade out and set | 11072 // Make sure overlay scrollbars on non-composited scrollers fade out and set |
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
11237 | 11259 |
11238 EXPECT_TRUE(mainFrameClient.childClient().didCallFrameDetached()); | 11260 EXPECT_TRUE(mainFrameClient.childClient().didCallFrameDetached()); |
11239 EXPECT_TRUE(mainFrameClient.childClient().didCallDidStopLoading()); | 11261 EXPECT_TRUE(mainFrameClient.childClient().didCallDidStopLoading()); |
11240 EXPECT_TRUE(mainFrameClient.childClient().didCallDidFinishDocumentLoad()); | 11262 EXPECT_TRUE(mainFrameClient.childClient().didCallDidFinishDocumentLoad()); |
11241 EXPECT_TRUE(mainFrameClient.childClient().didCallDidHandleOnloadEvents()); | 11263 EXPECT_TRUE(mainFrameClient.childClient().didCallDidHandleOnloadEvents()); |
11242 | 11264 |
11243 webViewHelper.reset(); | 11265 webViewHelper.reset(); |
11244 } | 11266 } |
11245 | 11267 |
11246 } // namespace blink | 11268 } // namespace blink |
OLD | NEW |