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

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

Issue 2884423003: Use scroll-boundary-behavior to control overscroll-refresh/glow on android. (Closed)
Patch Set: rebase Created 3 years, 4 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
« no previous file with comments | « third_party/WebKit/Source/web/WebViewImpl.cpp ('k') | third_party/WebKit/public/BUILD.gn » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 9858 matching lines...) Expand 10 before | Expand all | Expand 10 after
9869 EXPECT_TRUE( 9869 EXPECT_TRUE(
9870 local_child->GetDocument()->Fetcher()->Context().DefersLoading()); 9870 local_child->GetDocument()->Fetcher()->Context().DefersLoading());
9871 } 9871 }
9872 EXPECT_FALSE(page->Suspended()); 9872 EXPECT_FALSE(page->Suspended());
9873 EXPECT_FALSE( 9873 EXPECT_FALSE(
9874 local_child->GetDocument()->Fetcher()->Context().DefersLoading()); 9874 local_child->GetDocument()->Fetcher()->Context().DefersLoading());
9875 } 9875 }
9876 9876
9877 class OverscrollWebViewClient : public FrameTestHelpers::TestWebViewClient { 9877 class OverscrollWebViewClient : public FrameTestHelpers::TestWebViewClient {
9878 public: 9878 public:
9879 MOCK_METHOD4(DidOverscroll, 9879 MOCK_METHOD5(DidOverscroll,
9880 void(const WebFloatSize&, 9880 void(const WebFloatSize&,
9881 const WebFloatSize&, 9881 const WebFloatSize&,
9882 const WebFloatPoint&, 9882 const WebFloatPoint&,
9883 const WebFloatSize&)); 9883 const WebFloatSize&,
9884 const WebScrollBoundaryBehavior&));
9884 }; 9885 };
9885 9886
9886 typedef std::pair<bool, blink::WebGestureDevice> WebFrameOverscrollTestParam; 9887 typedef std::pair<bool, blink::WebGestureDevice> WebFrameOverscrollTestParam;
9887 class WebFrameOverscrollTest 9888 class WebFrameOverscrollTest
9888 : public WebFrameTest, 9889 : public WebFrameTest,
9889 public ::testing::WithParamInterface<WebFrameOverscrollTestParam>, 9890 public ::testing::WithParamInterface<WebFrameOverscrollTestParam>,
9890 private ScopedRootLayerScrollingForTest { 9891 private ScopedRootLayerScrollingForTest {
9891 public: 9892 public:
9892 WebFrameOverscrollTest() 9893 WebFrameOverscrollTest()
9893 : ScopedRootLayerScrollingForTest(GetParam().first) {} 9894 : ScopedRootLayerScrollingForTest(GetParam().first) {}
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
9950 FrameTestHelpers::WebViewHelper web_view_helper; 9951 FrameTestHelpers::WebViewHelper web_view_helper;
9951 web_view_helper.InitializeAndLoad(base_url_ + "overscroll/overscroll.html", 9952 web_view_helper.InitializeAndLoad(base_url_ + "overscroll/overscroll.html",
9952 nullptr, &client, nullptr, 9953 nullptr, &client, nullptr,
9953 ConfigureAndroid); 9954 ConfigureAndroid);
9954 web_view_helper.Resize(WebSize(200, 200)); 9955 web_view_helper.Resize(WebSize(200, 200));
9955 9956
9956 // Calculation of accumulatedRootOverscroll and unusedDelta on multiple 9957 // Calculation of accumulatedRootOverscroll and unusedDelta on multiple
9957 // scrollUpdate. 9958 // scrollUpdate.
9958 ScrollBegin(&web_view_helper, -300, -316); 9959 ScrollBegin(&web_view_helper, -300, -316);
9959 EXPECT_CALL(client, DidOverscroll(WebFloatSize(8, 16), WebFloatSize(8, 16), 9960 EXPECT_CALL(client, DidOverscroll(WebFloatSize(8, 16), WebFloatSize(8, 16),
9960 WebFloatPoint(100, 100), WebFloatSize())); 9961 WebFloatPoint(100, 100), WebFloatSize(),
9962 WebScrollBoundaryBehavior()));
9961 ScrollUpdate(&web_view_helper, -308, -316); 9963 ScrollUpdate(&web_view_helper, -308, -316);
9962 Mock::VerifyAndClearExpectations(&client); 9964 Mock::VerifyAndClearExpectations(&client);
9963 9965
9964 EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, 13), WebFloatSize(8, 29), 9966 EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, 13), WebFloatSize(8, 29),
9965 WebFloatPoint(100, 100), WebFloatSize())); 9967 WebFloatPoint(100, 100), WebFloatSize(),
9968 WebScrollBoundaryBehavior()));
9966 ScrollUpdate(&web_view_helper, 0, -13); 9969 ScrollUpdate(&web_view_helper, 0, -13);
9967 Mock::VerifyAndClearExpectations(&client); 9970 Mock::VerifyAndClearExpectations(&client);
9968 9971
9969 EXPECT_CALL(client, DidOverscroll(WebFloatSize(20, 13), WebFloatSize(28, 42), 9972 EXPECT_CALL(client, DidOverscroll(WebFloatSize(20, 13), WebFloatSize(28, 42),
9970 WebFloatPoint(100, 100), WebFloatSize())); 9973 WebFloatPoint(100, 100), WebFloatSize(),
9974 WebScrollBoundaryBehavior()));
9971 ScrollUpdate(&web_view_helper, -20, -13); 9975 ScrollUpdate(&web_view_helper, -20, -13);
9972 Mock::VerifyAndClearExpectations(&client); 9976 Mock::VerifyAndClearExpectations(&client);
9973 9977
9974 // Overscroll is not reported. 9978 // Overscroll is not reported.
9975 EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); 9979 EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0);
9976 ScrollUpdate(&web_view_helper, 0, 1); 9980 ScrollUpdate(&web_view_helper, 0, 1);
9977 Mock::VerifyAndClearExpectations(&client); 9981 Mock::VerifyAndClearExpectations(&client);
9978 9982
9979 EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); 9983 EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0);
9980 ScrollUpdate(&web_view_helper, 1, 0); 9984 ScrollUpdate(&web_view_helper, 1, 0);
9981 Mock::VerifyAndClearExpectations(&client); 9985 Mock::VerifyAndClearExpectations(&client);
9982 9986
9983 // Overscroll is reported. 9987 // Overscroll is reported.
9984 EXPECT_CALL(client, 9988 EXPECT_CALL(client,
9985 DidOverscroll(WebFloatSize(0, -701), WebFloatSize(0, -701), 9989 DidOverscroll(WebFloatSize(0, -701), WebFloatSize(0, -701),
9986 WebFloatPoint(100, 100), WebFloatSize())); 9990 WebFloatPoint(100, 100), WebFloatSize(),
9991 WebScrollBoundaryBehavior()));
9987 ScrollUpdate(&web_view_helper, 0, 1000); 9992 ScrollUpdate(&web_view_helper, 0, 1000);
9988 Mock::VerifyAndClearExpectations(&client); 9993 Mock::VerifyAndClearExpectations(&client);
9989 9994
9990 // Overscroll is not reported. 9995 // Overscroll is not reported.
9991 EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); 9996 EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0);
9992 ScrollEnd(&web_view_helper); 9997 ScrollEnd(&web_view_helper);
9993 Mock::VerifyAndClearExpectations(&client); 9998 Mock::VerifyAndClearExpectations(&client);
9994 } 9999 }
9995 10000
9996 TEST_P(WebFrameOverscrollTest, 10001 TEST_P(WebFrameOverscrollTest,
9997 AccumulatedOverscrollAndUnusedDeltaValuesOnDifferentAxesOverscroll) { 10002 AccumulatedOverscrollAndUnusedDeltaValuesOnDifferentAxesOverscroll) {
9998 OverscrollWebViewClient client; 10003 OverscrollWebViewClient client;
9999 RegisterMockedHttpURLLoad("overscroll/div-overscroll.html"); 10004 RegisterMockedHttpURLLoad("overscroll/div-overscroll.html");
10000 FrameTestHelpers::WebViewHelper web_view_helper; 10005 FrameTestHelpers::WebViewHelper web_view_helper;
10001 web_view_helper.InitializeAndLoad( 10006 web_view_helper.InitializeAndLoad(
10002 base_url_ + "overscroll/div-overscroll.html", nullptr, &client, nullptr, 10007 base_url_ + "overscroll/div-overscroll.html", nullptr, &client, nullptr,
10003 ConfigureAndroid); 10008 ConfigureAndroid);
10004 web_view_helper.Resize(WebSize(200, 200)); 10009 web_view_helper.Resize(WebSize(200, 200));
10005 10010
10006 ScrollBegin(&web_view_helper, 0, -316); 10011 ScrollBegin(&web_view_helper, 0, -316);
10007 10012
10008 // Scroll the Div to the end. 10013 // Scroll the Div to the end.
10009 EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); 10014 EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0);
10010 ScrollUpdate(&web_view_helper, 0, -316); 10015 ScrollUpdate(&web_view_helper, 0, -316);
10011 Mock::VerifyAndClearExpectations(&client); 10016 Mock::VerifyAndClearExpectations(&client);
10012 10017
10013 ScrollEnd(&web_view_helper); 10018 ScrollEnd(&web_view_helper);
10014 ScrollBegin(&web_view_helper, 0, -100); 10019 ScrollBegin(&web_view_helper, 0, -100);
10015 10020
10016 // Now On Scrolling DIV, scroll is bubbled and root layer is over-scrolled. 10021 // Now On Scrolling DIV, scroll is bubbled and root layer is over-scrolled.
10017 EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, 100), WebFloatSize(0, 100), 10022 EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, 100), WebFloatSize(0, 100),
10018 WebFloatPoint(100, 100), WebFloatSize())); 10023 WebFloatPoint(100, 100), WebFloatSize(),
10024 WebScrollBoundaryBehavior()));
10019 ScrollUpdate(&web_view_helper, 0, -100); 10025 ScrollUpdate(&web_view_helper, 0, -100);
10020 ScrollUpdate(&web_view_helper, 0, -100); 10026 ScrollUpdate(&web_view_helper, 0, -100);
10021 Mock::VerifyAndClearExpectations(&client); 10027 Mock::VerifyAndClearExpectations(&client);
10022 10028
10023 // TODO(bokan): This has never worked but by the accident that this test was 10029 // TODO(bokan): This has never worked but by the accident that this test was
10024 // being run in a WebView without a size. This test should be fixed along with 10030 // being run in a WebView without a size. This test should be fixed along with
10025 // the bug, crbug.com/589320. 10031 // the bug, crbug.com/589320.
10026 // Page scrolls vertically, but over-scrolls horizontally. 10032 // Page scrolls vertically, but over-scrolls horizontally.
10027 // EXPECT_CALL(client, didOverscroll(WebFloatSize(-100, 0), WebFloatSize(-100, 10033 // EXPECT_CALL(client, didOverscroll(WebFloatSize(-100, 0), WebFloatSize(-100,
10028 // 0), WebFloatPoint(100, 100), WebFloatSize())); 10034 // 0), WebFloatPoint(100, 100), WebFloatSize(), WebScrollBoundaryBehavior()));
10029 // ScrollUpdate(&webViewHelper, 100, 50); 10035 // ScrollUpdate(&webViewHelper, 100, 50);
10030 // Mock::VerifyAndClearExpectations(&client); 10036 // Mock::VerifyAndClearExpectations(&client);
10031 10037
10032 // Scrolling up, Overscroll is not reported. 10038 // Scrolling up, Overscroll is not reported.
10033 // EXPECT_CALL(client, didOverscroll(_, _, _, _)).Times(0); 10039 // EXPECT_CALL(client, didOverscroll(_, _, _, _, _)).Times(0);
10034 // ScrollUpdate(&webViewHelper, 0, -50); 10040 // ScrollUpdate(&webViewHelper, 0, -50);
10035 // Mock::VerifyAndClearExpectations(&client); 10041 // Mock::VerifyAndClearExpectations(&client);
10036 10042
10037 // Page scrolls horizontally, but over-scrolls vertically. 10043 // Page scrolls horizontally, but over-scrolls vertically.
10038 // EXPECT_CALL(client, didOverscroll(WebFloatSize(0, 100), WebFloatSize(0, 10044 // EXPECT_CALL(client, didOverscroll(WebFloatSize(0, 100), WebFloatSize(0,
10039 // 100), WebFloatPoint(100, 100), WebFloatSize())); 10045 // 100), WebFloatPoint(100, 100), WebFloatSize(),
10046 // WebScrollBoundaryBehavior()));
10040 // ScrollUpdate(&webViewHelper, -100, -100); 10047 // ScrollUpdate(&webViewHelper, -100, -100);
10041 // Mock::VerifyAndClearExpectations(&client); 10048 // Mock::VerifyAndClearExpectations(&client);
10042 } 10049 }
10043 10050
10044 TEST_P(WebFrameOverscrollTest, RootLayerOverscrolledOnInnerDivOverScroll) { 10051 TEST_P(WebFrameOverscrollTest, RootLayerOverscrolledOnInnerDivOverScroll) {
10045 OverscrollWebViewClient client; 10052 OverscrollWebViewClient client;
10046 RegisterMockedHttpURLLoad("overscroll/div-overscroll.html"); 10053 RegisterMockedHttpURLLoad("overscroll/div-overscroll.html");
10047 FrameTestHelpers::WebViewHelper web_view_helper; 10054 FrameTestHelpers::WebViewHelper web_view_helper;
10048 web_view_helper.InitializeAndLoad( 10055 web_view_helper.InitializeAndLoad(
10049 base_url_ + "overscroll/div-overscroll.html", nullptr, &client, nullptr, 10056 base_url_ + "overscroll/div-overscroll.html", nullptr, &client, nullptr,
10050 ConfigureAndroid); 10057 ConfigureAndroid);
10051 web_view_helper.Resize(WebSize(200, 200)); 10058 web_view_helper.Resize(WebSize(200, 200));
10052 10059
10053 ScrollBegin(&web_view_helper, 0, -316); 10060 ScrollBegin(&web_view_helper, 0, -316);
10054 10061
10055 // Scroll the Div to the end. 10062 // Scroll the Div to the end.
10056 EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); 10063 EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0);
10057 ScrollUpdate(&web_view_helper, 0, -316); 10064 ScrollUpdate(&web_view_helper, 0, -316);
10058 Mock::VerifyAndClearExpectations(&client); 10065 Mock::VerifyAndClearExpectations(&client);
10059 10066
10060 ScrollEnd(&web_view_helper); 10067 ScrollEnd(&web_view_helper);
10061 ScrollBegin(&web_view_helper, 0, -150); 10068 ScrollBegin(&web_view_helper, 0, -150);
10062 10069
10063 // Now On Scrolling DIV, scroll is bubbled and root layer is over-scrolled. 10070 // Now On Scrolling DIV, scroll is bubbled and root layer is over-scrolled.
10064 EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, 50), WebFloatSize(0, 50), 10071 EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, 50), WebFloatSize(0, 50),
10065 WebFloatPoint(100, 100), WebFloatSize())); 10072 WebFloatPoint(100, 100), WebFloatSize(),
10073 WebScrollBoundaryBehavior()));
10066 ScrollUpdate(&web_view_helper, 0, -150); 10074 ScrollUpdate(&web_view_helper, 0, -150);
10067 Mock::VerifyAndClearExpectations(&client); 10075 Mock::VerifyAndClearExpectations(&client);
10068 } 10076 }
10069 10077
10070 TEST_P(WebFrameOverscrollTest, RootLayerOverscrolledOnInnerIFrameOverScroll) { 10078 TEST_P(WebFrameOverscrollTest, RootLayerOverscrolledOnInnerIFrameOverScroll) {
10071 OverscrollWebViewClient client; 10079 OverscrollWebViewClient client;
10072 RegisterMockedHttpURLLoad("overscroll/iframe-overscroll.html"); 10080 RegisterMockedHttpURLLoad("overscroll/iframe-overscroll.html");
10073 RegisterMockedHttpURLLoad("overscroll/scrollable-iframe.html"); 10081 RegisterMockedHttpURLLoad("overscroll/scrollable-iframe.html");
10074 FrameTestHelpers::WebViewHelper web_view_helper; 10082 FrameTestHelpers::WebViewHelper web_view_helper;
10075 web_view_helper.InitializeAndLoad( 10083 web_view_helper.InitializeAndLoad(
10076 base_url_ + "overscroll/iframe-overscroll.html", nullptr, &client, 10084 base_url_ + "overscroll/iframe-overscroll.html", nullptr, &client,
10077 nullptr, ConfigureAndroid); 10085 nullptr, ConfigureAndroid);
10078 web_view_helper.Resize(WebSize(200, 200)); 10086 web_view_helper.Resize(WebSize(200, 200));
10079 10087
10080 ScrollBegin(&web_view_helper, 0, -320); 10088 ScrollBegin(&web_view_helper, 0, -320);
10081 // Scroll the IFrame to the end. 10089 // Scroll the IFrame to the end.
10082 EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); 10090 EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0);
10083 10091
10084 // This scroll will fully scroll the iframe but will be consumed before being 10092 // This scroll will fully scroll the iframe but will be consumed before being
10085 // counted as overscroll. 10093 // counted as overscroll.
10086 ScrollUpdate(&web_view_helper, 0, -320); 10094 ScrollUpdate(&web_view_helper, 0, -320);
10087 10095
10088 // This scroll will again target the iframe but wont bubble further up. Make 10096 // This scroll will again target the iframe but wont bubble further up. Make
10089 // sure that the unused scroll isn't handled as overscroll. 10097 // sure that the unused scroll isn't handled as overscroll.
10090 ScrollUpdate(&web_view_helper, 0, -50); 10098 ScrollUpdate(&web_view_helper, 0, -50);
10091 Mock::VerifyAndClearExpectations(&client); 10099 Mock::VerifyAndClearExpectations(&client);
10092 10100
10093 ScrollEnd(&web_view_helper); 10101 ScrollEnd(&web_view_helper);
10094 ScrollBegin(&web_view_helper, 0, -150); 10102 ScrollBegin(&web_view_helper, 0, -150);
10095 10103
10096 // Now On Scrolling IFrame, scroll is bubbled and root layer is over-scrolled. 10104 // Now On Scrolling IFrame, scroll is bubbled and root layer is over-scrolled.
10097 EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, 50), WebFloatSize(0, 50), 10105 EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, 50), WebFloatSize(0, 50),
10098 WebFloatPoint(100, 100), WebFloatSize())); 10106 WebFloatPoint(100, 100), WebFloatSize(),
10107 WebScrollBoundaryBehavior()));
10099 ScrollUpdate(&web_view_helper, 0, -150); 10108 ScrollUpdate(&web_view_helper, 0, -150);
10100 Mock::VerifyAndClearExpectations(&client); 10109 Mock::VerifyAndClearExpectations(&client);
10101 10110
10102 ScrollEnd(&web_view_helper); 10111 ScrollEnd(&web_view_helper);
10103 } 10112 }
10104 10113
10105 TEST_P(WebFrameOverscrollTest, ScaledPageRootLayerOverscrolled) { 10114 TEST_P(WebFrameOverscrollTest, ScaledPageRootLayerOverscrolled) {
10106 OverscrollWebViewClient client; 10115 OverscrollWebViewClient client;
10107 RegisterMockedHttpURLLoad("overscroll/overscroll.html"); 10116 RegisterMockedHttpURLLoad("overscroll/overscroll.html");
10108 FrameTestHelpers::WebViewHelper web_view_helper; 10117 FrameTestHelpers::WebViewHelper web_view_helper;
10109 WebViewBase* web_view_impl = web_view_helper.InitializeAndLoad( 10118 WebViewBase* web_view_impl = web_view_helper.InitializeAndLoad(
10110 base_url_ + "overscroll/overscroll.html", nullptr, &client, nullptr, 10119 base_url_ + "overscroll/overscroll.html", nullptr, &client, nullptr,
10111 ConfigureAndroid); 10120 ConfigureAndroid);
10112 web_view_helper.Resize(WebSize(200, 200)); 10121 web_view_helper.Resize(WebSize(200, 200));
10113 web_view_impl->SetPageScaleFactor(3.0); 10122 web_view_impl->SetPageScaleFactor(3.0);
10114 10123
10115 // Calculation of accumulatedRootOverscroll and unusedDelta on scaled page. 10124 // Calculation of accumulatedRootOverscroll and unusedDelta on scaled page.
10116 // The point is (99, 99) because we clamp in the division by 3 to 33 so when 10125 // The point is (99, 99) because we clamp in the division by 3 to 33 so when
10117 // we go back to viewport coordinates it becomes (99, 99). 10126 // we go back to viewport coordinates it becomes (99, 99).
10118 ScrollBegin(&web_view_helper, 0, 30); 10127 ScrollBegin(&web_view_helper, 0, 30);
10119 EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, -30), WebFloatSize(0, -30), 10128 EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, -30), WebFloatSize(0, -30),
10120 WebFloatPoint(99, 99), WebFloatSize())); 10129 WebFloatPoint(99, 99), WebFloatSize(),
10130 WebScrollBoundaryBehavior()));
10121 ScrollUpdate(&web_view_helper, 0, 30); 10131 ScrollUpdate(&web_view_helper, 0, 30);
10122 Mock::VerifyAndClearExpectations(&client); 10132 Mock::VerifyAndClearExpectations(&client);
10123 10133
10124 EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, -30), WebFloatSize(0, -60), 10134 EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, -30), WebFloatSize(0, -60),
10125 WebFloatPoint(99, 99), WebFloatSize())); 10135 WebFloatPoint(99, 99), WebFloatSize(),
10136 WebScrollBoundaryBehavior()));
10126 ScrollUpdate(&web_view_helper, 0, 30); 10137 ScrollUpdate(&web_view_helper, 0, 30);
10127 Mock::VerifyAndClearExpectations(&client); 10138 Mock::VerifyAndClearExpectations(&client);
10128 10139
10129 EXPECT_CALL(client, 10140 EXPECT_CALL(client,
10130 DidOverscroll(WebFloatSize(-30, -30), WebFloatSize(-30, -90), 10141 DidOverscroll(WebFloatSize(-30, -30), WebFloatSize(-30, -90),
10131 WebFloatPoint(99, 99), WebFloatSize())); 10142 WebFloatPoint(99, 99), WebFloatSize(),
10143 WebScrollBoundaryBehavior()));
10132 ScrollUpdate(&web_view_helper, 30, 30); 10144 ScrollUpdate(&web_view_helper, 30, 30);
10133 Mock::VerifyAndClearExpectations(&client); 10145 Mock::VerifyAndClearExpectations(&client);
10134 10146
10135 EXPECT_CALL(client, 10147 EXPECT_CALL(client,
10136 DidOverscroll(WebFloatSize(-30, 0), WebFloatSize(-60, -90), 10148 DidOverscroll(WebFloatSize(-30, 0), WebFloatSize(-60, -90),
10137 WebFloatPoint(99, 99), WebFloatSize())); 10149 WebFloatPoint(99, 99), WebFloatSize(),
10150 WebScrollBoundaryBehavior()));
10138 ScrollUpdate(&web_view_helper, 30, 0); 10151 ScrollUpdate(&web_view_helper, 30, 0);
10139 Mock::VerifyAndClearExpectations(&client); 10152 Mock::VerifyAndClearExpectations(&client);
10140 10153
10141 // Overscroll is not reported. 10154 // Overscroll is not reported.
10142 EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); 10155 EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0);
10143 ScrollEnd(&web_view_helper); 10156 ScrollEnd(&web_view_helper);
10144 Mock::VerifyAndClearExpectations(&client); 10157 Mock::VerifyAndClearExpectations(&client);
10145 } 10158 }
10146 10159
10147 TEST_P(WebFrameOverscrollTest, NoOverscrollForSmallvalues) { 10160 TEST_P(WebFrameOverscrollTest, NoOverscrollForSmallvalues) {
10148 OverscrollWebViewClient client; 10161 OverscrollWebViewClient client;
10149 RegisterMockedHttpURLLoad("overscroll/overscroll.html"); 10162 RegisterMockedHttpURLLoad("overscroll/overscroll.html");
10150 FrameTestHelpers::WebViewHelper web_view_helper; 10163 FrameTestHelpers::WebViewHelper web_view_helper;
10151 web_view_helper.InitializeAndLoad(base_url_ + "overscroll/overscroll.html", 10164 web_view_helper.InitializeAndLoad(base_url_ + "overscroll/overscroll.html",
10152 nullptr, &client, nullptr, 10165 nullptr, &client, nullptr,
10153 ConfigureAndroid); 10166 ConfigureAndroid);
10154 web_view_helper.Resize(WebSize(200, 200)); 10167 web_view_helper.Resize(WebSize(200, 200));
10155 10168
10156 ScrollBegin(&web_view_helper, 10, 10); 10169 ScrollBegin(&web_view_helper, 10, 10);
10157 EXPECT_CALL(client, 10170 EXPECT_CALL(client,
10158 DidOverscroll(WebFloatSize(-10, -10), WebFloatSize(-10, -10), 10171 DidOverscroll(WebFloatSize(-10, -10), WebFloatSize(-10, -10),
10159 WebFloatPoint(100, 100), WebFloatSize())); 10172 WebFloatPoint(100, 100), WebFloatSize(),
10173 WebScrollBoundaryBehavior()));
10160 ScrollUpdate(&web_view_helper, 10, 10); 10174 ScrollUpdate(&web_view_helper, 10, 10);
10161 Mock::VerifyAndClearExpectations(&client); 10175 Mock::VerifyAndClearExpectations(&client);
10162 10176
10163 EXPECT_CALL(client, 10177 EXPECT_CALL(client,
10164 DidOverscroll(WebFloatSize(0, -0.10), WebFloatSize(-10, -10.10), 10178 DidOverscroll(WebFloatSize(0, -0.10), WebFloatSize(-10, -10.10),
10165 WebFloatPoint(100, 100), WebFloatSize())); 10179 WebFloatPoint(100, 100), WebFloatSize(),
10180 WebScrollBoundaryBehavior()));
10166 ScrollUpdate(&web_view_helper, 0, 0.10); 10181 ScrollUpdate(&web_view_helper, 0, 0.10);
10167 Mock::VerifyAndClearExpectations(&client); 10182 Mock::VerifyAndClearExpectations(&client);
10168 10183
10169 EXPECT_CALL(client, DidOverscroll(WebFloatSize(-0.10, 0), 10184 EXPECT_CALL(client, DidOverscroll(WebFloatSize(-0.10, 0),
10170 WebFloatSize(-10.10, -10.10), 10185 WebFloatSize(-10.10, -10.10),
10171 WebFloatPoint(100, 100), WebFloatSize())); 10186 WebFloatPoint(100, 100), WebFloatSize(),
10187 WebScrollBoundaryBehavior()));
10172 ScrollUpdate(&web_view_helper, 0.10, 0); 10188 ScrollUpdate(&web_view_helper, 0.10, 0);
10173 Mock::VerifyAndClearExpectations(&client); 10189 Mock::VerifyAndClearExpectations(&client);
10174 10190
10175 // For residual values overscrollDelta should be reset and didOverscroll 10191 // For residual values overscrollDelta should be reset and didOverscroll
10176 // shouldn't be called. 10192 // shouldn't be called.
10177 EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); 10193 EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0);
10178 ScrollUpdate(&web_view_helper, 0, 0.09); 10194 ScrollUpdate(&web_view_helper, 0, 0.09);
10179 Mock::VerifyAndClearExpectations(&client); 10195 Mock::VerifyAndClearExpectations(&client);
10180 10196
10181 EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); 10197 EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0);
10182 ScrollUpdate(&web_view_helper, 0.09, 0.09); 10198 ScrollUpdate(&web_view_helper, 0.09, 0.09);
10183 Mock::VerifyAndClearExpectations(&client); 10199 Mock::VerifyAndClearExpectations(&client);
10184 10200
10185 EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); 10201 EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0);
10186 ScrollUpdate(&web_view_helper, 0.09, 0); 10202 ScrollUpdate(&web_view_helper, 0.09, 0);
10187 Mock::VerifyAndClearExpectations(&client); 10203 Mock::VerifyAndClearExpectations(&client);
10188 10204
10189 EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); 10205 EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0);
10190 ScrollUpdate(&web_view_helper, 0, -0.09); 10206 ScrollUpdate(&web_view_helper, 0, -0.09);
10191 Mock::VerifyAndClearExpectations(&client); 10207 Mock::VerifyAndClearExpectations(&client);
10192 10208
10193 EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); 10209 EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0);
10194 ScrollUpdate(&web_view_helper, -0.09, -0.09); 10210 ScrollUpdate(&web_view_helper, -0.09, -0.09);
10195 Mock::VerifyAndClearExpectations(&client); 10211 Mock::VerifyAndClearExpectations(&client);
10196 10212
10197 EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); 10213 EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0);
10198 ScrollUpdate(&web_view_helper, -0.09, 0); 10214 ScrollUpdate(&web_view_helper, -0.09, 0);
10199 Mock::VerifyAndClearExpectations(&client); 10215 Mock::VerifyAndClearExpectations(&client);
10200 10216
10201 EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); 10217 EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0);
10202 ScrollEnd(&web_view_helper); 10218 ScrollEnd(&web_view_helper);
10203 Mock::VerifyAndClearExpectations(&client); 10219 Mock::VerifyAndClearExpectations(&client);
10204 } 10220 }
10205 10221
10222 TEST_P(WebFrameOverscrollTest, OnlyMainFrameScrollBoundaryBehaviorHasEffect) {
majidvp 2017/07/25 20:38:29 Please also add a test to ensure that updating mai
sunyunjia 2017/08/03 14:54:34 Done.
10223 OverscrollWebViewClient client;
10224 RegisterMockedHttpURLLoad("single_iframe.html");
10225 RegisterMockedHttpURLLoad("visible_iframe.html");
10226 FrameTestHelpers::WebViewHelper web_view_helper;
10227 web_view_helper.InitializeAndLoad(base_url_ + "single_iframe.html", nullptr,
10228 &client, nullptr, ConfigureAndroid);
10229 web_view_helper.Resize(WebSize(200, 200));
10230
10231 WebLocalFrame* mainFrame =
10232 web_view_helper.WebView()->MainFrame()->ToWebLocalFrame();
10233 mainFrame->ExecuteScript(
10234 WebScriptSource(WebString("document.body.style="
10235 "'height: 400px;"
10236 "width: 400px;"
10237 "scroll-boundary-behavior: auto;'")));
majidvp 2017/07/25 20:38:29 If I understand it correctly, the height and width
sunyunjia 2017/08/03 14:54:34 Done.
10238 WebLocalFrame* subframe =
10239 web_view_helper.WebView()->MainFrame()->FirstChild()->ToWebLocalFrame();
10240 subframe->ExecuteScript(
10241 WebScriptSource(WebString("document.body.style="
10242 "'scroll-boundary-behavior: none;"
10243 "height: 50px;"
10244 "width: 50px'")));
10245
10246 ScrollBegin(&web_view_helper, 100, 116);
10247 EXPECT_CALL(
10248 client,
10249 DidOverscroll(WebFloatSize(-100, -100), WebFloatSize(-100, -100),
10250 WebFloatPoint(100, 100), WebFloatSize(),
10251 WebScrollBoundaryBehavior(
10252 WebScrollBoundaryBehavior::ScrollBoundaryBehaviorType::
10253 kScrollBoundaryBehaviorTypeAuto)));
10254 ScrollUpdate(&web_view_helper, 100, 100);
10255 Mock::VerifyAndClearExpectations(&client);
10256 }
10257
10206 TEST_P(ParameterizedWebFrameTest, OrientationFrameDetach) { 10258 TEST_P(ParameterizedWebFrameTest, OrientationFrameDetach) {
10207 RuntimeEnabledFeatures::SetOrientationEventEnabled(true); 10259 RuntimeEnabledFeatures::SetOrientationEventEnabled(true);
10208 RegisterMockedHttpURLLoad("orientation-frame-detach.html"); 10260 RegisterMockedHttpURLLoad("orientation-frame-detach.html");
10209 FrameTestHelpers::WebViewHelper web_view_helper; 10261 FrameTestHelpers::WebViewHelper web_view_helper;
10210 WebViewBase* web_view_impl = web_view_helper.InitializeAndLoad( 10262 WebViewBase* web_view_impl = web_view_helper.InitializeAndLoad(
10211 base_url_ + "orientation-frame-detach.html"); 10263 base_url_ + "orientation-frame-detach.html");
10212 web_view_impl->MainFrameImpl()->SendOrientationChangeEvent(); 10264 web_view_impl->MainFrameImpl()->SendOrientationChangeEvent();
10213 } 10265 }
10214 10266
10215 TEST_P(ParameterizedWebFrameTest, DISABLE_ON_TSAN(MaxFramesDetach)) { 10267 TEST_P(ParameterizedWebFrameTest, DISABLE_ON_TSAN(MaxFramesDetach)) {
(...skipping 1914 matching lines...) Expand 10 before | Expand all | Expand 10 after
12130 tester.ExpectBucketCount(histogramName, kSPANavTypeOtherFragmentNavigation, 12182 tester.ExpectBucketCount(histogramName, kSPANavTypeOtherFragmentNavigation,
12131 1); 12183 1);
12132 // kSameDocumentNavigationHistoryApi and kFrameLoadTypeBackForward is an 12184 // kSameDocumentNavigationHistoryApi and kFrameLoadTypeBackForward is an
12133 // illegal combination, which has been caught by DCHECK in 12185 // illegal combination, which has been caught by DCHECK in
12134 // UpdateForSameDocumentNavigation(). 12186 // UpdateForSameDocumentNavigation().
12135 12187
12136 tester.ExpectTotalCount(histogramName, 3); 12188 tester.ExpectTotalCount(histogramName, 3);
12137 } 12189 }
12138 12190
12139 } // namespace blink 12191 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/web/WebViewImpl.cpp ('k') | third_party/WebKit/public/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698