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 3842 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10787 | 10791 |
10788 Document* document = webView->mainFrameImpl()->frame()->document(); | 10792 Document* document = webView->mainFrameImpl()->frame()->document(); |
10789 Element* div1Tag = document->getElementById("div1"); | 10793 Element* div1Tag = document->getElementById("div1"); |
10790 | 10794 |
10791 HitTestResult hitTestResult = webView->coreHitTestResultAt( | 10795 HitTestResult hitTestResult = webView->coreHitTestResultAt( |
10792 WebPoint(div1Tag->offsetLeft() + 5, div1Tag->offsetTop() + 5)); | 10796 WebPoint(div1Tag->offsetLeft() + 5, div1Tag->offsetTop() + 5)); |
10793 | 10797 |
10794 EXPECT_TRUE(hitTestResult.innerElement()); | 10798 EXPECT_TRUE(hitTestResult.innerElement()); |
10795 | 10799 |
10796 // Mouse over link. Mouse cursor should be hand. | 10800 // Mouse over link. Mouse cursor should be hand. |
10797 PlatformMouseEvent mouseMoveOverLinkEvent( | 10801 WebMouseEvent mouseMoveOverLinkEvent( |
10798 IntPoint(div1Tag->offsetLeft() + 5, div1Tag->offsetTop() + 5), | 10802 WebInputEvent::MouseMove, |
10799 IntPoint(div1Tag->offsetLeft() + 5, div1Tag->offsetTop() + 5), | 10803 WebFloatPoint(div1Tag->offsetLeft() + 5, div1Tag->offsetTop() + 5), |
10800 WebPointerProperties::Button::NoButton, PlatformEvent::MouseMoved, 0, | 10804 WebFloatPoint(div1Tag->offsetLeft() + 5, div1Tag->offsetTop() + 5), |
10801 PlatformEvent::NoModifiers, TimeTicks::Now()); | 10805 WebPointerProperties::Button::NoButton, 0, WebInputEvent::NoModifiers, |
| 10806 TimeTicks::Now().InSeconds()); |
| 10807 mouseMoveOverLinkEvent.setFrameScale(1); |
10802 document->frame()->eventHandler().handleMouseMoveEvent( | 10808 document->frame()->eventHandler().handleMouseMoveEvent( |
10803 mouseMoveOverLinkEvent, Vector<PlatformMouseEvent>()); | 10809 mouseMoveOverLinkEvent, Vector<WebMouseEvent>()); |
10804 | 10810 |
10805 EXPECT_EQ(document->hoverNode(), | 10811 EXPECT_EQ(document->hoverNode(), |
10806 document->frame()->chromeClient().lastSetTooltipNodeForTesting()); | 10812 document->frame()->chromeClient().lastSetTooltipNodeForTesting()); |
10807 EXPECT_EQ(div1Tag, | 10813 EXPECT_EQ(div1Tag, |
10808 document->frame()->chromeClient().lastSetTooltipNodeForTesting()); | 10814 document->frame()->chromeClient().lastSetTooltipNodeForTesting()); |
10809 | 10815 |
10810 Element* div2Tag = document->getElementById("div2"); | 10816 Element* div2Tag = document->getElementById("div2"); |
10811 | 10817 |
10812 PlatformMouseEvent mouseMoveEvent( | 10818 WebMouseEvent mouseMoveEvent( |
10813 IntPoint(div2Tag->offsetLeft() + 5, div2Tag->offsetTop() + 5), | 10819 WebInputEvent::MouseMove, |
10814 IntPoint(div2Tag->offsetLeft() + 5, div2Tag->offsetTop() + 5), | 10820 WebFloatPoint(div2Tag->offsetLeft() + 5, div2Tag->offsetTop() + 5), |
10815 WebPointerProperties::Button::NoButton, PlatformEvent::MouseMoved, 0, | 10821 WebFloatPoint(div2Tag->offsetLeft() + 5, div2Tag->offsetTop() + 5), |
10816 PlatformEvent::NoModifiers, TimeTicks::Now()); | 10822 WebPointerProperties::Button::NoButton, 0, WebInputEvent::NoModifiers, |
| 10823 TimeTicks::Now().InSeconds()); |
| 10824 mouseMoveEvent.setFrameScale(1); |
10817 document->frame()->eventHandler().handleMouseMoveEvent( | 10825 document->frame()->eventHandler().handleMouseMoveEvent( |
10818 mouseMoveEvent, Vector<PlatformMouseEvent>()); | 10826 mouseMoveEvent, Vector<WebMouseEvent>()); |
10819 | 10827 |
10820 EXPECT_EQ(document->hoverNode(), | 10828 EXPECT_EQ(document->hoverNode(), |
10821 document->frame()->chromeClient().lastSetTooltipNodeForTesting()); | 10829 document->frame()->chromeClient().lastSetTooltipNodeForTesting()); |
10822 EXPECT_EQ(div2Tag, | 10830 EXPECT_EQ(div2Tag, |
10823 document->frame()->chromeClient().lastSetTooltipNodeForTesting()); | 10831 document->frame()->chromeClient().lastSetTooltipNodeForTesting()); |
10824 } | 10832 } |
10825 | 10833 |
10826 // Makes sure that mouse hover over an overlay scrollbar doesn't activate | 10834 // Makes sure that mouse hover over an overlay scrollbar doesn't activate |
10827 // elements below unless the scrollbar is faded out. | 10835 // elements below unless the scrollbar is faded out. |
10828 TEST_F(WebFrameTest, MouseOverLinkAndOverlayScrollbar) { | 10836 TEST_F(WebFrameTest, MouseOverLinkAndOverlayScrollbar) { |
(...skipping 20 matching lines...) Expand all Loading... |
10849 // Ensure hittest has scrollbar and link | 10857 // Ensure hittest has scrollbar and link |
10850 HitTestResult hitTestResult = | 10858 HitTestResult hitTestResult = |
10851 webView->coreHitTestResultAt(WebPoint(18, aTag->offsetTop())); | 10859 webView->coreHitTestResultAt(WebPoint(18, aTag->offsetTop())); |
10852 | 10860 |
10853 EXPECT_TRUE(hitTestResult.URLElement()); | 10861 EXPECT_TRUE(hitTestResult.URLElement()); |
10854 EXPECT_TRUE(hitTestResult.innerElement()); | 10862 EXPECT_TRUE(hitTestResult.innerElement()); |
10855 EXPECT_TRUE(hitTestResult.scrollbar()); | 10863 EXPECT_TRUE(hitTestResult.scrollbar()); |
10856 EXPECT_FALSE(hitTestResult.scrollbar()->isCustomScrollbar()); | 10864 EXPECT_FALSE(hitTestResult.scrollbar()->isCustomScrollbar()); |
10857 | 10865 |
10858 // Mouse over link. Mouse cursor should be hand. | 10866 // Mouse over link. Mouse cursor should be hand. |
10859 PlatformMouseEvent mouseMoveOverLinkEvent( | 10867 WebMouseEvent mouseMoveOverLinkEvent( |
10860 IntPoint(aTag->offsetLeft(), aTag->offsetTop()), | 10868 WebInputEvent::MouseMove, |
10861 IntPoint(aTag->offsetLeft(), aTag->offsetTop()), | 10869 WebFloatPoint(aTag->offsetLeft(), aTag->offsetTop()), |
10862 WebPointerProperties::Button::NoButton, PlatformEvent::MouseMoved, 0, | 10870 WebFloatPoint(aTag->offsetLeft(), aTag->offsetTop()), |
10863 PlatformEvent::NoModifiers, TimeTicks::Now()); | 10871 WebPointerProperties::Button::NoButton, 0, WebInputEvent::NoModifiers, |
| 10872 TimeTicks::Now().InSeconds()); |
| 10873 mouseMoveOverLinkEvent.setFrameScale(1); |
10864 document->frame()->eventHandler().handleMouseMoveEvent( | 10874 document->frame()->eventHandler().handleMouseMoveEvent( |
10865 mouseMoveOverLinkEvent, Vector<PlatformMouseEvent>()); | 10875 mouseMoveOverLinkEvent, Vector<WebMouseEvent>()); |
10866 | 10876 |
10867 EXPECT_EQ( | 10877 EXPECT_EQ( |
10868 Cursor::Type::Hand, | 10878 Cursor::Type::Hand, |
10869 document->frame()->chromeClient().lastSetCursorForTesting().getType()); | 10879 document->frame()->chromeClient().lastSetCursorForTesting().getType()); |
10870 | 10880 |
10871 // Mouse over enabled overlay scrollbar. Mouse cursor should be pointer and no | 10881 // Mouse over enabled overlay scrollbar. Mouse cursor should be pointer and no |
10872 // active hover element. | 10882 // active hover element. |
10873 PlatformMouseEvent mouseMoveEvent( | 10883 WebMouseEvent mouseMoveEvent( |
10874 IntPoint(18, aTag->offsetTop()), IntPoint(18, aTag->offsetTop()), | 10884 WebInputEvent::MouseMove, WebFloatPoint(18, aTag->offsetTop()), |
10875 WebPointerProperties::Button::NoButton, PlatformEvent::MouseMoved, 0, | 10885 WebFloatPoint(18, aTag->offsetTop()), |
10876 PlatformEvent::NoModifiers, TimeTicks::Now()); | 10886 WebPointerProperties::Button::NoButton, 0, WebInputEvent::NoModifiers, |
| 10887 TimeTicks::Now().InSeconds()); |
| 10888 mouseMoveEvent.setFrameScale(1); |
10877 document->frame()->eventHandler().handleMouseMoveEvent( | 10889 document->frame()->eventHandler().handleMouseMoveEvent( |
10878 mouseMoveEvent, Vector<PlatformMouseEvent>()); | 10890 mouseMoveEvent, Vector<WebMouseEvent>()); |
10879 | 10891 |
10880 EXPECT_EQ( | 10892 EXPECT_EQ( |
10881 Cursor::Type::Pointer, | 10893 Cursor::Type::Pointer, |
10882 document->frame()->chromeClient().lastSetCursorForTesting().getType()); | 10894 document->frame()->chromeClient().lastSetCursorForTesting().getType()); |
10883 | 10895 |
10884 PlatformMouseEvent mousePressEvent( | 10896 WebMouseEvent mousePressEvent( |
10885 IntPoint(18, aTag->offsetTop()), IntPoint(18, aTag->offsetTop()), | 10897 WebInputEvent::MouseDown, WebFloatPoint(18, aTag->offsetTop()), |
10886 WebPointerProperties::Button::Left, PlatformEvent::MousePressed, 0, | 10898 WebFloatPoint(18, aTag->offsetTop()), WebPointerProperties::Button::Left, |
10887 PlatformEvent::Modifiers::LeftButtonDown, TimeTicks::Now()); | 10899 0, WebInputEvent::Modifiers::LeftButtonDown, |
| 10900 TimeTicks::Now().InSeconds()); |
| 10901 mousePressEvent.setFrameScale(1); |
10888 document->frame()->eventHandler().handleMousePressEvent(mousePressEvent); | 10902 document->frame()->eventHandler().handleMousePressEvent(mousePressEvent); |
10889 | 10903 |
10890 EXPECT_FALSE(document->activeHoverElement()); | 10904 EXPECT_FALSE(document->activeHoverElement()); |
10891 EXPECT_FALSE(document->hoverNode()); | 10905 EXPECT_FALSE(document->hoverNode()); |
10892 | 10906 |
10893 PlatformMouseEvent MouseReleaseEvent( | 10907 WebMouseEvent mouseReleaseEvent( |
10894 IntPoint(18, aTag->offsetTop()), IntPoint(18, aTag->offsetTop()), | 10908 WebInputEvent::MouseUp, WebFloatPoint(18, aTag->offsetTop()), |
10895 WebPointerProperties::Button::Left, PlatformEvent::MouseReleased, 0, | 10909 WebFloatPoint(18, aTag->offsetTop()), WebPointerProperties::Button::Left, |
10896 PlatformEvent::Modifiers::LeftButtonDown, TimeTicks::Now()); | 10910 0, WebInputEvent::Modifiers::LeftButtonDown, |
10897 document->frame()->eventHandler().handleMouseReleaseEvent(MouseReleaseEvent); | 10911 TimeTicks::Now().InSeconds()); |
| 10912 mouseReleaseEvent.setFrameScale(1); |
| 10913 document->frame()->eventHandler().handleMouseReleaseEvent(mouseReleaseEvent); |
10898 | 10914 |
10899 // Mouse over disabled overlay scrollbar. Mouse cursor should be hand and has | 10915 // Mouse over disabled overlay scrollbar. Mouse cursor should be hand and has |
10900 // active hover element. | 10916 // active hover element. |
10901 webView->mainFrameImpl()->frameView()->setScrollbarsHidden(true); | 10917 webView->mainFrameImpl()->frameView()->setScrollbarsHidden(true); |
10902 | 10918 |
10903 // Ensure hittest only has link | 10919 // Ensure hittest only has link |
10904 hitTestResult = webView->coreHitTestResultAt(WebPoint(18, aTag->offsetTop())); | 10920 hitTestResult = webView->coreHitTestResultAt(WebPoint(18, aTag->offsetTop())); |
10905 | 10921 |
10906 EXPECT_TRUE(hitTestResult.URLElement()); | 10922 EXPECT_TRUE(hitTestResult.URLElement()); |
10907 EXPECT_TRUE(hitTestResult.innerElement()); | 10923 EXPECT_TRUE(hitTestResult.innerElement()); |
10908 EXPECT_FALSE(hitTestResult.scrollbar()); | 10924 EXPECT_FALSE(hitTestResult.scrollbar()); |
10909 | 10925 |
10910 document->frame()->eventHandler().handleMouseMoveEvent( | 10926 document->frame()->eventHandler().handleMouseMoveEvent( |
10911 mouseMoveEvent, Vector<PlatformMouseEvent>()); | 10927 mouseMoveEvent, Vector<WebMouseEvent>()); |
10912 | 10928 |
10913 EXPECT_EQ( | 10929 EXPECT_EQ( |
10914 Cursor::Type::Hand, | 10930 Cursor::Type::Hand, |
10915 document->frame()->chromeClient().lastSetCursorForTesting().getType()); | 10931 document->frame()->chromeClient().lastSetCursorForTesting().getType()); |
10916 | 10932 |
10917 document->frame()->eventHandler().handleMousePressEvent(mousePressEvent); | 10933 document->frame()->eventHandler().handleMousePressEvent(mousePressEvent); |
10918 | 10934 |
10919 EXPECT_TRUE(document->activeHoverElement()); | 10935 EXPECT_TRUE(document->activeHoverElement()); |
10920 EXPECT_TRUE(document->hoverNode()); | 10936 EXPECT_TRUE(document->hoverNode()); |
10921 | 10937 |
10922 document->frame()->eventHandler().handleMouseReleaseEvent(MouseReleaseEvent); | 10938 document->frame()->eventHandler().handleMouseReleaseEvent(mouseReleaseEvent); |
10923 } | 10939 } |
10924 | 10940 |
10925 // Makes sure that mouse hover over an custom scrollbar doesn't change the | 10941 // Makes sure that mouse hover over an custom scrollbar doesn't change the |
10926 // activate elements. | 10942 // activate elements. |
10927 TEST_F(WebFrameTest, MouseOverCustomScrollbar) { | 10943 TEST_F(WebFrameTest, MouseOverCustomScrollbar) { |
10928 registerMockedHttpURLLoad("custom-scrollbar-hover.html"); | 10944 registerMockedHttpURLLoad("custom-scrollbar-hover.html"); |
10929 FrameTestHelpers::WebViewHelper webViewHelper; | 10945 FrameTestHelpers::WebViewHelper webViewHelper; |
10930 WebViewImpl* webView = webViewHelper.initializeAndLoad( | 10946 WebViewImpl* webView = webViewHelper.initializeAndLoad( |
10931 m_baseURL + "custom-scrollbar-hover.html"); | 10947 m_baseURL + "custom-scrollbar-hover.html"); |
10932 | 10948 |
10933 webViewHelper.resize(WebSize(200, 200)); | 10949 webViewHelper.resize(WebSize(200, 200)); |
10934 | 10950 |
10935 webView->updateAllLifecyclePhases(); | 10951 webView->updateAllLifecyclePhases(); |
10936 | 10952 |
10937 Document* document = toLocalFrame(webView->page()->mainFrame())->document(); | 10953 Document* document = toLocalFrame(webView->page()->mainFrame())->document(); |
10938 | 10954 |
10939 Element* scrollbarDiv = document->getElementById("scrollbar"); | 10955 Element* scrollbarDiv = document->getElementById("scrollbar"); |
10940 EXPECT_TRUE(scrollbarDiv); | 10956 EXPECT_TRUE(scrollbarDiv); |
10941 | 10957 |
10942 // Ensure hittest only has DIV | 10958 // Ensure hittest only has DIV |
10943 HitTestResult hitTestResult = webView->coreHitTestResultAt(WebPoint(1, 1)); | 10959 HitTestResult hitTestResult = webView->coreHitTestResultAt(WebPoint(1, 1)); |
10944 | 10960 |
10945 EXPECT_TRUE(hitTestResult.innerElement()); | 10961 EXPECT_TRUE(hitTestResult.innerElement()); |
10946 EXPECT_FALSE(hitTestResult.scrollbar()); | 10962 EXPECT_FALSE(hitTestResult.scrollbar()); |
10947 | 10963 |
10948 // Mouse over DIV | 10964 // Mouse over DIV |
10949 PlatformMouseEvent mouseMoveOverDiv( | 10965 WebMouseEvent mouseMoveOverDiv( |
10950 IntPoint(1, 1), IntPoint(1, 1), WebPointerProperties::Button::NoButton, | 10966 WebInputEvent::MouseMove, WebFloatPoint(1, 1), WebFloatPoint(1, 1), |
10951 PlatformEvent::MouseMoved, 0, PlatformEvent::NoModifiers, | 10967 WebPointerProperties::Button::NoButton, 0, WebInputEvent::NoModifiers, |
10952 TimeTicks::Now()); | 10968 TimeTicks::Now().InSeconds()); |
| 10969 mouseMoveOverDiv.setFrameScale(1); |
10953 document->frame()->eventHandler().handleMouseMoveEvent( | 10970 document->frame()->eventHandler().handleMouseMoveEvent( |
10954 mouseMoveOverDiv, Vector<PlatformMouseEvent>()); | 10971 mouseMoveOverDiv, Vector<WebMouseEvent>()); |
10955 | 10972 |
10956 // DIV :hover | 10973 // DIV :hover |
10957 EXPECT_EQ(document->hoverNode(), scrollbarDiv); | 10974 EXPECT_EQ(document->hoverNode(), scrollbarDiv); |
10958 | 10975 |
10959 // Ensure hittest has DIV and scrollbar | 10976 // Ensure hittest has DIV and scrollbar |
10960 hitTestResult = webView->coreHitTestResultAt(WebPoint(175, 1)); | 10977 hitTestResult = webView->coreHitTestResultAt(WebPoint(175, 1)); |
10961 | 10978 |
10962 EXPECT_TRUE(hitTestResult.innerElement()); | 10979 EXPECT_TRUE(hitTestResult.innerElement()); |
10963 EXPECT_TRUE(hitTestResult.scrollbar()); | 10980 EXPECT_TRUE(hitTestResult.scrollbar()); |
10964 EXPECT_TRUE(hitTestResult.scrollbar()->isCustomScrollbar()); | 10981 EXPECT_TRUE(hitTestResult.scrollbar()->isCustomScrollbar()); |
10965 | 10982 |
10966 // Mouse over scrollbar | 10983 // Mouse over scrollbar |
10967 PlatformMouseEvent mouseMoveOverDivAndScrollbar( | 10984 WebMouseEvent mouseMoveOverDivAndScrollbar( |
10968 IntPoint(175, 1), IntPoint(175, 1), | 10985 WebInputEvent::MouseMove, WebFloatPoint(175, 1), WebFloatPoint(175, 1), |
10969 WebPointerProperties::Button::NoButton, PlatformEvent::MouseMoved, 0, | 10986 WebPointerProperties::Button::NoButton, 0, WebInputEvent::NoModifiers, |
10970 PlatformEvent::NoModifiers, TimeTicks::Now()); | 10987 TimeTicks::Now().InSeconds()); |
| 10988 mouseMoveOverDivAndScrollbar.setFrameScale(1); |
10971 document->frame()->eventHandler().handleMouseMoveEvent( | 10989 document->frame()->eventHandler().handleMouseMoveEvent( |
10972 mouseMoveOverDivAndScrollbar, Vector<PlatformMouseEvent>()); | 10990 mouseMoveOverDivAndScrollbar, Vector<WebMouseEvent>()); |
10973 | 10991 |
10974 // Custom not change the DIV :hover | 10992 // Custom not change the DIV :hover |
10975 EXPECT_EQ(document->hoverNode(), scrollbarDiv); | 10993 EXPECT_EQ(document->hoverNode(), scrollbarDiv); |
10976 EXPECT_EQ(hitTestResult.scrollbar()->hoveredPart(), ScrollbarPart::ThumbPart); | 10994 EXPECT_EQ(hitTestResult.scrollbar()->hoveredPart(), ScrollbarPart::ThumbPart); |
10977 } | 10995 } |
10978 | 10996 |
10979 TEST_F(WebFrameTest, MouseReleaseUpdatesScrollbarHoveredPart) { | 10997 TEST_F(WebFrameTest, MouseReleaseUpdatesScrollbarHoveredPart) { |
10980 registerMockedHttpURLLoad("custom-scrollbar-hover.html"); | 10998 registerMockedHttpURLLoad("custom-scrollbar-hover.html"); |
10981 FrameTestHelpers::WebViewHelper webViewHelper; | 10999 FrameTestHelpers::WebViewHelper webViewHelper; |
10982 WebViewImpl* webView = webViewHelper.initializeAndLoad( | 11000 WebViewImpl* webView = webViewHelper.initializeAndLoad( |
(...skipping 10 matching lines...) Expand all Loading... |
10993 | 11011 |
10994 ScrollableArea* scrollableArea = | 11012 ScrollableArea* scrollableArea = |
10995 toLayoutBox(scrollbarDiv->layoutObject())->getScrollableArea(); | 11013 toLayoutBox(scrollbarDiv->layoutObject())->getScrollableArea(); |
10996 | 11014 |
10997 EXPECT_TRUE(scrollableArea->verticalScrollbar()); | 11015 EXPECT_TRUE(scrollableArea->verticalScrollbar()); |
10998 Scrollbar* scrollbar = scrollableArea->verticalScrollbar(); | 11016 Scrollbar* scrollbar = scrollableArea->verticalScrollbar(); |
10999 EXPECT_EQ(scrollbar->pressedPart(), ScrollbarPart::NoPart); | 11017 EXPECT_EQ(scrollbar->pressedPart(), ScrollbarPart::NoPart); |
11000 EXPECT_EQ(scrollbar->hoveredPart(), ScrollbarPart::NoPart); | 11018 EXPECT_EQ(scrollbar->hoveredPart(), ScrollbarPart::NoPart); |
11001 | 11019 |
11002 // Mouse moved over the scrollbar. | 11020 // Mouse moved over the scrollbar. |
11003 PlatformMouseEvent mouseMoveOverScrollbar( | 11021 WebMouseEvent mouseMoveOverScrollbar( |
11004 IntPoint(175, 1), IntPoint(175, 1), | 11022 WebInputEvent::MouseMove, WebFloatPoint(175, 1), WebFloatPoint(175, 1), |
11005 WebPointerProperties::Button::NoButton, PlatformEvent::MouseMoved, 0, | 11023 WebPointerProperties::Button::NoButton, 0, WebInputEvent::NoModifiers, |
11006 PlatformEvent::NoModifiers, TimeTicks::Now()); | 11024 TimeTicks::Now().InSeconds()); |
| 11025 mouseMoveOverScrollbar.setFrameScale(1); |
11007 document->frame()->eventHandler().handleMouseMoveEvent( | 11026 document->frame()->eventHandler().handleMouseMoveEvent( |
11008 mouseMoveOverScrollbar, Vector<PlatformMouseEvent>()); | 11027 mouseMoveOverScrollbar, Vector<WebMouseEvent>()); |
11009 HitTestResult hitTestResult = webView->coreHitTestResultAt(WebPoint(175, 1)); | 11028 HitTestResult hitTestResult = webView->coreHitTestResultAt(WebPoint(175, 1)); |
11010 EXPECT_EQ(scrollbar->pressedPart(), ScrollbarPart::NoPart); | 11029 EXPECT_EQ(scrollbar->pressedPart(), ScrollbarPart::NoPart); |
11011 EXPECT_EQ(scrollbar->hoveredPart(), ScrollbarPart::ThumbPart); | 11030 EXPECT_EQ(scrollbar->hoveredPart(), ScrollbarPart::ThumbPart); |
11012 | 11031 |
11013 // Mouse pressed. | 11032 // Mouse pressed. |
11014 PlatformMouseEvent mousePressEvent( | 11033 WebMouseEvent mousePressEvent( |
11015 IntPoint(175, 1), IntPoint(175, 1), WebPointerProperties::Button::Left, | 11034 WebInputEvent::MouseDown, WebFloatPoint(175, 1), WebFloatPoint(175, 1), |
11016 PlatformEvent::MousePressed, 0, PlatformEvent::Modifiers::LeftButtonDown, | 11035 WebPointerProperties::Button::Left, 0, |
11017 TimeTicks::Now()); | 11036 WebInputEvent::Modifiers::LeftButtonDown, TimeTicks::Now().InSeconds()); |
| 11037 mousePressEvent.setFrameScale(1); |
11018 document->frame()->eventHandler().handleMousePressEvent(mousePressEvent); | 11038 document->frame()->eventHandler().handleMousePressEvent(mousePressEvent); |
11019 EXPECT_EQ(scrollbar->pressedPart(), ScrollbarPart::ThumbPart); | 11039 EXPECT_EQ(scrollbar->pressedPart(), ScrollbarPart::ThumbPart); |
11020 EXPECT_EQ(scrollbar->hoveredPart(), ScrollbarPart::ThumbPart); | 11040 EXPECT_EQ(scrollbar->hoveredPart(), ScrollbarPart::ThumbPart); |
11021 | 11041 |
11022 // Mouse moved off the scrollbar while still pressed. | 11042 // Mouse moved off the scrollbar while still pressed. |
11023 PlatformMouseEvent mouseMoveOffScrollbar( | 11043 WebMouseEvent mouseMoveOffScrollbar( |
11024 IntPoint(1, 1), IntPoint(1, 1), WebPointerProperties::Button::Left, | 11044 WebInputEvent::MouseMove, WebFloatPoint(1, 1), WebFloatPoint(1, 1), |
11025 PlatformEvent::MouseMoved, 0, PlatformEvent::Modifiers::LeftButtonDown, | 11045 WebPointerProperties::Button::Left, 0, |
11026 TimeTicks::Now()); | 11046 WebInputEvent::Modifiers::LeftButtonDown, TimeTicks::Now().InSeconds()); |
| 11047 mouseMoveOffScrollbar.setFrameScale(1); |
11027 document->frame()->eventHandler().handleMouseLeaveEvent( | 11048 document->frame()->eventHandler().handleMouseLeaveEvent( |
11028 mouseMoveOffScrollbar); | 11049 mouseMoveOffScrollbar); |
11029 EXPECT_EQ(scrollbar->pressedPart(), ScrollbarPart::ThumbPart); | 11050 EXPECT_EQ(scrollbar->pressedPart(), ScrollbarPart::ThumbPart); |
11030 EXPECT_EQ(scrollbar->hoveredPart(), ScrollbarPart::ThumbPart); | 11051 EXPECT_EQ(scrollbar->hoveredPart(), ScrollbarPart::ThumbPart); |
11031 | 11052 |
11032 // Mouse released. | 11053 // Mouse released. |
11033 PlatformMouseEvent MouseReleaseEvent( | 11054 WebMouseEvent mouseReleaseEvent( |
11034 IntPoint(1, 1), IntPoint(1, 1), WebPointerProperties::Button::Left, | 11055 WebInputEvent::MouseUp, WebFloatPoint(1, 1), WebFloatPoint(1, 1), |
11035 PlatformEvent::MouseReleased, 0, PlatformEvent::Modifiers::LeftButtonDown, | 11056 WebPointerProperties::Button::Left, 0, |
11036 TimeTicks::Now()); | 11057 WebInputEvent::Modifiers::LeftButtonDown, TimeTicks::Now().InSeconds()); |
11037 document->frame()->eventHandler().handleMouseReleaseEvent(MouseReleaseEvent); | 11058 mouseReleaseEvent.setFrameScale(1); |
| 11059 document->frame()->eventHandler().handleMouseReleaseEvent(mouseReleaseEvent); |
11038 EXPECT_EQ(scrollbar->pressedPart(), ScrollbarPart::NoPart); | 11060 EXPECT_EQ(scrollbar->pressedPart(), ScrollbarPart::NoPart); |
11039 EXPECT_EQ(scrollbar->hoveredPart(), ScrollbarPart::NoPart); | 11061 EXPECT_EQ(scrollbar->hoveredPart(), ScrollbarPart::NoPart); |
11040 } | 11062 } |
11041 | 11063 |
11042 static void disableCompositing(WebSettings* settings) { | 11064 static void disableCompositing(WebSettings* settings) { |
11043 settings->setAcceleratedCompositingEnabled(false); | 11065 settings->setAcceleratedCompositingEnabled(false); |
11044 settings->setPreferCompositingToLCDTextEnabled(false); | 11066 settings->setPreferCompositingToLCDTextEnabled(false); |
11045 } | 11067 } |
11046 | 11068 |
11047 // Make sure overlay scrollbars on non-composited scrollers fade out and set | 11069 // 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... |
11234 | 11256 |
11235 EXPECT_TRUE(mainFrameClient.childClient().didCallFrameDetached()); | 11257 EXPECT_TRUE(mainFrameClient.childClient().didCallFrameDetached()); |
11236 EXPECT_TRUE(mainFrameClient.childClient().didCallDidStopLoading()); | 11258 EXPECT_TRUE(mainFrameClient.childClient().didCallDidStopLoading()); |
11237 EXPECT_TRUE(mainFrameClient.childClient().didCallDidFinishDocumentLoad()); | 11259 EXPECT_TRUE(mainFrameClient.childClient().didCallDidFinishDocumentLoad()); |
11238 EXPECT_TRUE(mainFrameClient.childClient().didCallDidHandleOnloadEvents()); | 11260 EXPECT_TRUE(mainFrameClient.childClient().didCallDidHandleOnloadEvents()); |
11239 | 11261 |
11240 webViewHelper.reset(); | 11262 webViewHelper.reset(); |
11241 } | 11263 } |
11242 | 11264 |
11243 } // namespace blink | 11265 } // namespace blink |
OLD | NEW |