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

Side by Side Diff: third_party/WebKit/Source/core/exported/WebFrameTest.cpp

Issue 2884423003: Use scroll-boundary-behavior to control overscroll-refresh/glow on android. (Closed)
Patch Set: Fix nits and rebase Created 3 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2010 Google Inc. All rights reserved. 2 * Copyright (C) 2010 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 10044 matching lines...) Expand 10 before | Expand all | Expand 10 after
10055 EXPECT_TRUE( 10055 EXPECT_TRUE(
10056 local_child->GetDocument()->Fetcher()->Context().DefersLoading()); 10056 local_child->GetDocument()->Fetcher()->Context().DefersLoading());
10057 } 10057 }
10058 EXPECT_FALSE(page->Paused()); 10058 EXPECT_FALSE(page->Paused());
10059 EXPECT_FALSE( 10059 EXPECT_FALSE(
10060 local_child->GetDocument()->Fetcher()->Context().DefersLoading()); 10060 local_child->GetDocument()->Fetcher()->Context().DefersLoading());
10061 } 10061 }
10062 10062
10063 class OverscrollWebViewClient : public FrameTestHelpers::TestWebViewClient { 10063 class OverscrollWebViewClient : public FrameTestHelpers::TestWebViewClient {
10064 public: 10064 public:
10065 MOCK_METHOD4(DidOverscroll, 10065 MOCK_METHOD5(DidOverscroll,
10066 void(const WebFloatSize&, 10066 void(const WebFloatSize&,
10067 const WebFloatSize&, 10067 const WebFloatSize&,
10068 const WebFloatPoint&, 10068 const WebFloatPoint&,
10069 const WebFloatSize&)); 10069 const WebFloatSize&,
10070 const WebScrollBoundaryBehavior&));
10070 }; 10071 };
10071 10072
10072 typedef std::pair<bool, blink::WebGestureDevice> WebFrameOverscrollTestParam; 10073 typedef std::pair<bool, blink::WebGestureDevice> WebFrameOverscrollTestParam;
10073 class WebFrameOverscrollTest 10074 class WebFrameOverscrollTest
10074 : public WebFrameTest, 10075 : public WebFrameTest,
10075 public ::testing::WithParamInterface<WebFrameOverscrollTestParam>, 10076 public ::testing::WithParamInterface<WebFrameOverscrollTestParam>,
10076 private ScopedRootLayerScrollingForTest { 10077 private ScopedRootLayerScrollingForTest {
10077 public: 10078 public:
10078 WebFrameOverscrollTest() 10079 WebFrameOverscrollTest()
10079 : ScopedRootLayerScrollingForTest(GetParam().first) {} 10080 : ScopedRootLayerScrollingForTest(GetParam().first) {}
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
10136 FrameTestHelpers::WebViewHelper web_view_helper; 10137 FrameTestHelpers::WebViewHelper web_view_helper;
10137 web_view_helper.InitializeAndLoad(base_url_ + "overscroll/overscroll.html", 10138 web_view_helper.InitializeAndLoad(base_url_ + "overscroll/overscroll.html",
10138 nullptr, &client, nullptr, 10139 nullptr, &client, nullptr,
10139 ConfigureAndroid); 10140 ConfigureAndroid);
10140 web_view_helper.Resize(WebSize(200, 200)); 10141 web_view_helper.Resize(WebSize(200, 200));
10141 10142
10142 // Calculation of accumulatedRootOverscroll and unusedDelta on multiple 10143 // Calculation of accumulatedRootOverscroll and unusedDelta on multiple
10143 // scrollUpdate. 10144 // scrollUpdate.
10144 ScrollBegin(&web_view_helper, -300, -316); 10145 ScrollBegin(&web_view_helper, -300, -316);
10145 EXPECT_CALL(client, DidOverscroll(WebFloatSize(8, 16), WebFloatSize(8, 16), 10146 EXPECT_CALL(client, DidOverscroll(WebFloatSize(8, 16), WebFloatSize(8, 16),
10146 WebFloatPoint(100, 100), WebFloatSize())); 10147 WebFloatPoint(100, 100), WebFloatSize(),
10148 WebScrollBoundaryBehavior()));
10147 ScrollUpdate(&web_view_helper, -308, -316); 10149 ScrollUpdate(&web_view_helper, -308, -316);
10148 Mock::VerifyAndClearExpectations(&client); 10150 Mock::VerifyAndClearExpectations(&client);
10149 10151
10150 EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, 13), WebFloatSize(8, 29), 10152 EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, 13), WebFloatSize(8, 29),
10151 WebFloatPoint(100, 100), WebFloatSize())); 10153 WebFloatPoint(100, 100), WebFloatSize(),
10154 WebScrollBoundaryBehavior()));
10152 ScrollUpdate(&web_view_helper, 0, -13); 10155 ScrollUpdate(&web_view_helper, 0, -13);
10153 Mock::VerifyAndClearExpectations(&client); 10156 Mock::VerifyAndClearExpectations(&client);
10154 10157
10155 EXPECT_CALL(client, DidOverscroll(WebFloatSize(20, 13), WebFloatSize(28, 42), 10158 EXPECT_CALL(client, DidOverscroll(WebFloatSize(20, 13), WebFloatSize(28, 42),
10156 WebFloatPoint(100, 100), WebFloatSize())); 10159 WebFloatPoint(100, 100), WebFloatSize(),
10160 WebScrollBoundaryBehavior()));
10157 ScrollUpdate(&web_view_helper, -20, -13); 10161 ScrollUpdate(&web_view_helper, -20, -13);
10158 Mock::VerifyAndClearExpectations(&client); 10162 Mock::VerifyAndClearExpectations(&client);
10159 10163
10160 // Overscroll is not reported. 10164 // Overscroll is not reported.
10161 EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); 10165 EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0);
10162 ScrollUpdate(&web_view_helper, 0, 1); 10166 ScrollUpdate(&web_view_helper, 0, 1);
10163 Mock::VerifyAndClearExpectations(&client); 10167 Mock::VerifyAndClearExpectations(&client);
10164 10168
10165 EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); 10169 EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0);
10166 ScrollUpdate(&web_view_helper, 1, 0); 10170 ScrollUpdate(&web_view_helper, 1, 0);
10167 Mock::VerifyAndClearExpectations(&client); 10171 Mock::VerifyAndClearExpectations(&client);
10168 10172
10169 // Overscroll is reported. 10173 // Overscroll is reported.
10170 EXPECT_CALL(client, 10174 EXPECT_CALL(client,
10171 DidOverscroll(WebFloatSize(0, -701), WebFloatSize(0, -701), 10175 DidOverscroll(WebFloatSize(0, -701), WebFloatSize(0, -701),
10172 WebFloatPoint(100, 100), WebFloatSize())); 10176 WebFloatPoint(100, 100), WebFloatSize(),
10177 WebScrollBoundaryBehavior()));
10173 ScrollUpdate(&web_view_helper, 0, 1000); 10178 ScrollUpdate(&web_view_helper, 0, 1000);
10174 Mock::VerifyAndClearExpectations(&client); 10179 Mock::VerifyAndClearExpectations(&client);
10175 10180
10176 // Overscroll is not reported. 10181 // Overscroll is not reported.
10177 EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); 10182 EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0);
10178 ScrollEnd(&web_view_helper); 10183 ScrollEnd(&web_view_helper);
10179 Mock::VerifyAndClearExpectations(&client); 10184 Mock::VerifyAndClearExpectations(&client);
10180 } 10185 }
10181 10186
10182 TEST_P(WebFrameOverscrollTest, 10187 TEST_P(WebFrameOverscrollTest,
10183 AccumulatedOverscrollAndUnusedDeltaValuesOnDifferentAxesOverscroll) { 10188 AccumulatedOverscrollAndUnusedDeltaValuesOnDifferentAxesOverscroll) {
10184 OverscrollWebViewClient client; 10189 OverscrollWebViewClient client;
10185 RegisterMockedHttpURLLoad("overscroll/div-overscroll.html"); 10190 RegisterMockedHttpURLLoad("overscroll/div-overscroll.html");
10186 FrameTestHelpers::WebViewHelper web_view_helper; 10191 FrameTestHelpers::WebViewHelper web_view_helper;
10187 web_view_helper.InitializeAndLoad( 10192 web_view_helper.InitializeAndLoad(
10188 base_url_ + "overscroll/div-overscroll.html", nullptr, &client, nullptr, 10193 base_url_ + "overscroll/div-overscroll.html", nullptr, &client, nullptr,
10189 ConfigureAndroid); 10194 ConfigureAndroid);
10190 web_view_helper.Resize(WebSize(200, 200)); 10195 web_view_helper.Resize(WebSize(200, 200));
10191 10196
10192 ScrollBegin(&web_view_helper, 0, -316); 10197 ScrollBegin(&web_view_helper, 0, -316);
10193 10198
10194 // Scroll the Div to the end. 10199 // Scroll the Div to the end.
10195 EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); 10200 EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0);
10196 ScrollUpdate(&web_view_helper, 0, -316); 10201 ScrollUpdate(&web_view_helper, 0, -316);
10197 Mock::VerifyAndClearExpectations(&client); 10202 Mock::VerifyAndClearExpectations(&client);
10198 10203
10199 ScrollEnd(&web_view_helper); 10204 ScrollEnd(&web_view_helper);
10200 ScrollBegin(&web_view_helper, 0, -100); 10205 ScrollBegin(&web_view_helper, 0, -100);
10201 10206
10202 // Now On Scrolling DIV, scroll is bubbled and root layer is over-scrolled. 10207 // Now On Scrolling DIV, scroll is bubbled and root layer is over-scrolled.
10203 EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, 100), WebFloatSize(0, 100), 10208 EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, 100), WebFloatSize(0, 100),
10204 WebFloatPoint(100, 100), WebFloatSize())); 10209 WebFloatPoint(100, 100), WebFloatSize(),
10210 WebScrollBoundaryBehavior()));
10205 ScrollUpdate(&web_view_helper, 0, -100); 10211 ScrollUpdate(&web_view_helper, 0, -100);
10206 ScrollUpdate(&web_view_helper, 0, -100); 10212 ScrollUpdate(&web_view_helper, 0, -100);
10207 Mock::VerifyAndClearExpectations(&client); 10213 Mock::VerifyAndClearExpectations(&client);
10208 10214
10209 // TODO(bokan): This has never worked but by the accident that this test was 10215 // TODO(bokan): This has never worked but by the accident that this test was
10210 // being run in a WebView without a size. This test should be fixed along with 10216 // being run in a WebView without a size. This test should be fixed along with
10211 // the bug, crbug.com/589320. 10217 // the bug, crbug.com/589320.
10212 // Page scrolls vertically, but over-scrolls horizontally. 10218 // Page scrolls vertically, but over-scrolls horizontally.
10213 // EXPECT_CALL(client, didOverscroll(WebFloatSize(-100, 0), WebFloatSize(-100, 10219 // EXPECT_CALL(client, didOverscroll(WebFloatSize(-100, 0), WebFloatSize(-100,
10214 // 0), WebFloatPoint(100, 100), WebFloatSize())); 10220 // 0), WebFloatPoint(100, 100), WebFloatSize(), WebScrollBoundaryBehavior()));
10215 // ScrollUpdate(&webViewHelper, 100, 50); 10221 // ScrollUpdate(&webViewHelper, 100, 50);
10216 // Mock::VerifyAndClearExpectations(&client); 10222 // Mock::VerifyAndClearExpectations(&client);
10217 10223
10218 // Scrolling up, Overscroll is not reported. 10224 // Scrolling up, Overscroll is not reported.
10219 // EXPECT_CALL(client, didOverscroll(_, _, _, _)).Times(0); 10225 // EXPECT_CALL(client, didOverscroll(_, _, _, _, _)).Times(0);
10220 // ScrollUpdate(&webViewHelper, 0, -50); 10226 // ScrollUpdate(&webViewHelper, 0, -50);
10221 // Mock::VerifyAndClearExpectations(&client); 10227 // Mock::VerifyAndClearExpectations(&client);
10222 10228
10223 // Page scrolls horizontally, but over-scrolls vertically. 10229 // Page scrolls horizontally, but over-scrolls vertically.
10224 // EXPECT_CALL(client, didOverscroll(WebFloatSize(0, 100), WebFloatSize(0, 10230 // EXPECT_CALL(client, didOverscroll(WebFloatSize(0, 100), WebFloatSize(0,
10225 // 100), WebFloatPoint(100, 100), WebFloatSize())); 10231 // 100), WebFloatPoint(100, 100), WebFloatSize(),
10232 // WebScrollBoundaryBehavior()));
10226 // ScrollUpdate(&webViewHelper, -100, -100); 10233 // ScrollUpdate(&webViewHelper, -100, -100);
10227 // Mock::VerifyAndClearExpectations(&client); 10234 // Mock::VerifyAndClearExpectations(&client);
10228 } 10235 }
10229 10236
10230 TEST_P(WebFrameOverscrollTest, RootLayerOverscrolledOnInnerDivOverScroll) { 10237 TEST_P(WebFrameOverscrollTest, RootLayerOverscrolledOnInnerDivOverScroll) {
10231 OverscrollWebViewClient client; 10238 OverscrollWebViewClient client;
10232 RegisterMockedHttpURLLoad("overscroll/div-overscroll.html"); 10239 RegisterMockedHttpURLLoad("overscroll/div-overscroll.html");
10233 FrameTestHelpers::WebViewHelper web_view_helper; 10240 FrameTestHelpers::WebViewHelper web_view_helper;
10234 web_view_helper.InitializeAndLoad( 10241 web_view_helper.InitializeAndLoad(
10235 base_url_ + "overscroll/div-overscroll.html", nullptr, &client, nullptr, 10242 base_url_ + "overscroll/div-overscroll.html", nullptr, &client, nullptr,
10236 ConfigureAndroid); 10243 ConfigureAndroid);
10237 web_view_helper.Resize(WebSize(200, 200)); 10244 web_view_helper.Resize(WebSize(200, 200));
10238 10245
10239 ScrollBegin(&web_view_helper, 0, -316); 10246 ScrollBegin(&web_view_helper, 0, -316);
10240 10247
10241 // Scroll the Div to the end. 10248 // Scroll the Div to the end.
10242 EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); 10249 EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0);
10243 ScrollUpdate(&web_view_helper, 0, -316); 10250 ScrollUpdate(&web_view_helper, 0, -316);
10244 Mock::VerifyAndClearExpectations(&client); 10251 Mock::VerifyAndClearExpectations(&client);
10245 10252
10246 ScrollEnd(&web_view_helper); 10253 ScrollEnd(&web_view_helper);
10247 ScrollBegin(&web_view_helper, 0, -150); 10254 ScrollBegin(&web_view_helper, 0, -150);
10248 10255
10249 // Now On Scrolling DIV, scroll is bubbled and root layer is over-scrolled. 10256 // Now On Scrolling DIV, scroll is bubbled and root layer is over-scrolled.
10250 EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, 50), WebFloatSize(0, 50), 10257 EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, 50), WebFloatSize(0, 50),
10251 WebFloatPoint(100, 100), WebFloatSize())); 10258 WebFloatPoint(100, 100), WebFloatSize(),
10259 WebScrollBoundaryBehavior()));
10252 ScrollUpdate(&web_view_helper, 0, -150); 10260 ScrollUpdate(&web_view_helper, 0, -150);
10253 Mock::VerifyAndClearExpectations(&client); 10261 Mock::VerifyAndClearExpectations(&client);
10254 } 10262 }
10255 10263
10256 TEST_P(WebFrameOverscrollTest, RootLayerOverscrolledOnInnerIFrameOverScroll) { 10264 TEST_P(WebFrameOverscrollTest, RootLayerOverscrolledOnInnerIFrameOverScroll) {
10257 OverscrollWebViewClient client; 10265 OverscrollWebViewClient client;
10258 RegisterMockedHttpURLLoad("overscroll/iframe-overscroll.html"); 10266 RegisterMockedHttpURLLoad("overscroll/iframe-overscroll.html");
10259 RegisterMockedHttpURLLoad("overscroll/scrollable-iframe.html"); 10267 RegisterMockedHttpURLLoad("overscroll/scrollable-iframe.html");
10260 FrameTestHelpers::WebViewHelper web_view_helper; 10268 FrameTestHelpers::WebViewHelper web_view_helper;
10261 web_view_helper.InitializeAndLoad( 10269 web_view_helper.InitializeAndLoad(
10262 base_url_ + "overscroll/iframe-overscroll.html", nullptr, &client, 10270 base_url_ + "overscroll/iframe-overscroll.html", nullptr, &client,
10263 nullptr, ConfigureAndroid); 10271 nullptr, ConfigureAndroid);
10264 web_view_helper.Resize(WebSize(200, 200)); 10272 web_view_helper.Resize(WebSize(200, 200));
10265 10273
10266 ScrollBegin(&web_view_helper, 0, -320); 10274 ScrollBegin(&web_view_helper, 0, -320);
10267 // Scroll the IFrame to the end. 10275 // Scroll the IFrame to the end.
10268 EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); 10276 EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0);
10269 10277
10270 // This scroll will fully scroll the iframe but will be consumed before being 10278 // This scroll will fully scroll the iframe but will be consumed before being
10271 // counted as overscroll. 10279 // counted as overscroll.
10272 ScrollUpdate(&web_view_helper, 0, -320); 10280 ScrollUpdate(&web_view_helper, 0, -320);
10273 10281
10274 // This scroll will again target the iframe but wont bubble further up. Make 10282 // This scroll will again target the iframe but wont bubble further up. Make
10275 // sure that the unused scroll isn't handled as overscroll. 10283 // sure that the unused scroll isn't handled as overscroll.
10276 ScrollUpdate(&web_view_helper, 0, -50); 10284 ScrollUpdate(&web_view_helper, 0, -50);
10277 Mock::VerifyAndClearExpectations(&client); 10285 Mock::VerifyAndClearExpectations(&client);
10278 10286
10279 ScrollEnd(&web_view_helper); 10287 ScrollEnd(&web_view_helper);
10280 ScrollBegin(&web_view_helper, 0, -150); 10288 ScrollBegin(&web_view_helper, 0, -150);
10281 10289
10282 // Now On Scrolling IFrame, scroll is bubbled and root layer is over-scrolled. 10290 // Now On Scrolling IFrame, scroll is bubbled and root layer is over-scrolled.
10283 EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, 50), WebFloatSize(0, 50), 10291 EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, 50), WebFloatSize(0, 50),
10284 WebFloatPoint(100, 100), WebFloatSize())); 10292 WebFloatPoint(100, 100), WebFloatSize(),
10293 WebScrollBoundaryBehavior()));
10285 ScrollUpdate(&web_view_helper, 0, -150); 10294 ScrollUpdate(&web_view_helper, 0, -150);
10286 Mock::VerifyAndClearExpectations(&client); 10295 Mock::VerifyAndClearExpectations(&client);
10287 10296
10288 ScrollEnd(&web_view_helper); 10297 ScrollEnd(&web_view_helper);
10289 } 10298 }
10290 10299
10291 TEST_P(WebFrameOverscrollTest, ScaledPageRootLayerOverscrolled) { 10300 TEST_P(WebFrameOverscrollTest, ScaledPageRootLayerOverscrolled) {
10292 OverscrollWebViewClient client; 10301 OverscrollWebViewClient client;
10293 RegisterMockedHttpURLLoad("overscroll/overscroll.html"); 10302 RegisterMockedHttpURLLoad("overscroll/overscroll.html");
10294 FrameTestHelpers::WebViewHelper web_view_helper; 10303 FrameTestHelpers::WebViewHelper web_view_helper;
10295 WebViewImpl* web_view_impl = web_view_helper.InitializeAndLoad( 10304 WebViewImpl* web_view_impl = web_view_helper.InitializeAndLoad(
10296 base_url_ + "overscroll/overscroll.html", nullptr, &client, nullptr, 10305 base_url_ + "overscroll/overscroll.html", nullptr, &client, nullptr,
10297 ConfigureAndroid); 10306 ConfigureAndroid);
10298 web_view_helper.Resize(WebSize(200, 200)); 10307 web_view_helper.Resize(WebSize(200, 200));
10299 web_view_impl->SetPageScaleFactor(3.0); 10308 web_view_impl->SetPageScaleFactor(3.0);
10300 10309
10301 // Calculation of accumulatedRootOverscroll and unusedDelta on scaled page. 10310 // Calculation of accumulatedRootOverscroll and unusedDelta on scaled page.
10302 // The point is (99, 99) because we clamp in the division by 3 to 33 so when 10311 // The point is (99, 99) because we clamp in the division by 3 to 33 so when
10303 // we go back to viewport coordinates it becomes (99, 99). 10312 // we go back to viewport coordinates it becomes (99, 99).
10304 ScrollBegin(&web_view_helper, 0, 30); 10313 ScrollBegin(&web_view_helper, 0, 30);
10305 EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, -30), WebFloatSize(0, -30), 10314 EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, -30), WebFloatSize(0, -30),
10306 WebFloatPoint(99, 99), WebFloatSize())); 10315 WebFloatPoint(99, 99), WebFloatSize(),
10316 WebScrollBoundaryBehavior()));
10307 ScrollUpdate(&web_view_helper, 0, 30); 10317 ScrollUpdate(&web_view_helper, 0, 30);
10308 Mock::VerifyAndClearExpectations(&client); 10318 Mock::VerifyAndClearExpectations(&client);
10309 10319
10310 EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, -30), WebFloatSize(0, -60), 10320 EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, -30), WebFloatSize(0, -60),
10311 WebFloatPoint(99, 99), WebFloatSize())); 10321 WebFloatPoint(99, 99), WebFloatSize(),
10322 WebScrollBoundaryBehavior()));
10312 ScrollUpdate(&web_view_helper, 0, 30); 10323 ScrollUpdate(&web_view_helper, 0, 30);
10313 Mock::VerifyAndClearExpectations(&client); 10324 Mock::VerifyAndClearExpectations(&client);
10314 10325
10315 EXPECT_CALL(client, 10326 EXPECT_CALL(client,
10316 DidOverscroll(WebFloatSize(-30, -30), WebFloatSize(-30, -90), 10327 DidOverscroll(WebFloatSize(-30, -30), WebFloatSize(-30, -90),
10317 WebFloatPoint(99, 99), WebFloatSize())); 10328 WebFloatPoint(99, 99), WebFloatSize(),
10329 WebScrollBoundaryBehavior()));
10318 ScrollUpdate(&web_view_helper, 30, 30); 10330 ScrollUpdate(&web_view_helper, 30, 30);
10319 Mock::VerifyAndClearExpectations(&client); 10331 Mock::VerifyAndClearExpectations(&client);
10320 10332
10321 EXPECT_CALL(client, 10333 EXPECT_CALL(client,
10322 DidOverscroll(WebFloatSize(-30, 0), WebFloatSize(-60, -90), 10334 DidOverscroll(WebFloatSize(-30, 0), WebFloatSize(-60, -90),
10323 WebFloatPoint(99, 99), WebFloatSize())); 10335 WebFloatPoint(99, 99), WebFloatSize(),
10336 WebScrollBoundaryBehavior()));
10324 ScrollUpdate(&web_view_helper, 30, 0); 10337 ScrollUpdate(&web_view_helper, 30, 0);
10325 Mock::VerifyAndClearExpectations(&client); 10338 Mock::VerifyAndClearExpectations(&client);
10326 10339
10327 // Overscroll is not reported. 10340 // Overscroll is not reported.
10328 EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); 10341 EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0);
10329 ScrollEnd(&web_view_helper); 10342 ScrollEnd(&web_view_helper);
10330 Mock::VerifyAndClearExpectations(&client); 10343 Mock::VerifyAndClearExpectations(&client);
10331 } 10344 }
10332 10345
10333 TEST_P(WebFrameOverscrollTest, NoOverscrollForSmallvalues) { 10346 TEST_P(WebFrameOverscrollTest, NoOverscrollForSmallvalues) {
10334 OverscrollWebViewClient client; 10347 OverscrollWebViewClient client;
10335 RegisterMockedHttpURLLoad("overscroll/overscroll.html"); 10348 RegisterMockedHttpURLLoad("overscroll/overscroll.html");
10336 FrameTestHelpers::WebViewHelper web_view_helper; 10349 FrameTestHelpers::WebViewHelper web_view_helper;
10337 web_view_helper.InitializeAndLoad(base_url_ + "overscroll/overscroll.html", 10350 web_view_helper.InitializeAndLoad(base_url_ + "overscroll/overscroll.html",
10338 nullptr, &client, nullptr, 10351 nullptr, &client, nullptr,
10339 ConfigureAndroid); 10352 ConfigureAndroid);
10340 web_view_helper.Resize(WebSize(200, 200)); 10353 web_view_helper.Resize(WebSize(200, 200));
10341 10354
10342 ScrollBegin(&web_view_helper, 10, 10); 10355 ScrollBegin(&web_view_helper, 10, 10);
10343 EXPECT_CALL(client, 10356 EXPECT_CALL(client,
10344 DidOverscroll(WebFloatSize(-10, -10), WebFloatSize(-10, -10), 10357 DidOverscroll(WebFloatSize(-10, -10), WebFloatSize(-10, -10),
10345 WebFloatPoint(100, 100), WebFloatSize())); 10358 WebFloatPoint(100, 100), WebFloatSize(),
10359 WebScrollBoundaryBehavior()));
10346 ScrollUpdate(&web_view_helper, 10, 10); 10360 ScrollUpdate(&web_view_helper, 10, 10);
10347 Mock::VerifyAndClearExpectations(&client); 10361 Mock::VerifyAndClearExpectations(&client);
10348 10362
10349 EXPECT_CALL(client, 10363 EXPECT_CALL(client,
10350 DidOverscroll(WebFloatSize(0, -0.10), WebFloatSize(-10, -10.10), 10364 DidOverscroll(WebFloatSize(0, -0.10), WebFloatSize(-10, -10.10),
10351 WebFloatPoint(100, 100), WebFloatSize())); 10365 WebFloatPoint(100, 100), WebFloatSize(),
10366 WebScrollBoundaryBehavior()));
10352 ScrollUpdate(&web_view_helper, 0, 0.10); 10367 ScrollUpdate(&web_view_helper, 0, 0.10);
10353 Mock::VerifyAndClearExpectations(&client); 10368 Mock::VerifyAndClearExpectations(&client);
10354 10369
10355 EXPECT_CALL(client, DidOverscroll(WebFloatSize(-0.10, 0), 10370 EXPECT_CALL(client, DidOverscroll(WebFloatSize(-0.10, 0),
10356 WebFloatSize(-10.10, -10.10), 10371 WebFloatSize(-10.10, -10.10),
10357 WebFloatPoint(100, 100), WebFloatSize())); 10372 WebFloatPoint(100, 100), WebFloatSize(),
10373 WebScrollBoundaryBehavior()));
10358 ScrollUpdate(&web_view_helper, 0.10, 0); 10374 ScrollUpdate(&web_view_helper, 0.10, 0);
10359 Mock::VerifyAndClearExpectations(&client); 10375 Mock::VerifyAndClearExpectations(&client);
10360 10376
10361 // For residual values overscrollDelta should be reset and didOverscroll 10377 // For residual values overscrollDelta should be reset and didOverscroll
10362 // shouldn't be called. 10378 // shouldn't be called.
10363 EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); 10379 EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0);
10364 ScrollUpdate(&web_view_helper, 0, 0.09); 10380 ScrollUpdate(&web_view_helper, 0, 0.09);
10365 Mock::VerifyAndClearExpectations(&client); 10381 Mock::VerifyAndClearExpectations(&client);
10366 10382
10367 EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); 10383 EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0);
10368 ScrollUpdate(&web_view_helper, 0.09, 0.09); 10384 ScrollUpdate(&web_view_helper, 0.09, 0.09);
10369 Mock::VerifyAndClearExpectations(&client); 10385 Mock::VerifyAndClearExpectations(&client);
10370 10386
10371 EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); 10387 EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0);
10372 ScrollUpdate(&web_view_helper, 0.09, 0); 10388 ScrollUpdate(&web_view_helper, 0.09, 0);
10373 Mock::VerifyAndClearExpectations(&client); 10389 Mock::VerifyAndClearExpectations(&client);
10374 10390
10375 EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); 10391 EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0);
10376 ScrollUpdate(&web_view_helper, 0, -0.09); 10392 ScrollUpdate(&web_view_helper, 0, -0.09);
10377 Mock::VerifyAndClearExpectations(&client); 10393 Mock::VerifyAndClearExpectations(&client);
10378 10394
10379 EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); 10395 EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0);
10380 ScrollUpdate(&web_view_helper, -0.09, -0.09); 10396 ScrollUpdate(&web_view_helper, -0.09, -0.09);
10381 Mock::VerifyAndClearExpectations(&client); 10397 Mock::VerifyAndClearExpectations(&client);
10382 10398
10383 EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); 10399 EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0);
10384 ScrollUpdate(&web_view_helper, -0.09, 0); 10400 ScrollUpdate(&web_view_helper, -0.09, 0);
10385 Mock::VerifyAndClearExpectations(&client); 10401 Mock::VerifyAndClearExpectations(&client);
10386 10402
10387 EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); 10403 EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0);
10388 ScrollEnd(&web_view_helper); 10404 ScrollEnd(&web_view_helper);
10389 Mock::VerifyAndClearExpectations(&client); 10405 Mock::VerifyAndClearExpectations(&client);
10390 } 10406 }
10391 10407
10408 TEST_P(WebFrameOverscrollTest, ScrollBoundaryBehaviorAffectsDidOverscroll) {
10409 OverscrollWebViewClient client;
10410 RegisterMockedHttpURLLoad("overscroll/overscroll.html");
10411 FrameTestHelpers::WebViewHelper web_view_helper;
10412 web_view_helper.InitializeAndLoad(base_url_ + "overscroll/overscroll.html",
10413 nullptr, &client, nullptr,
10414 ConfigureAndroid);
10415 web_view_helper.Resize(WebSize(200, 200));
10416
10417 WebLocalFrame* mainFrame =
10418 web_view_helper.WebView()->MainFrame()->ToWebLocalFrame();
10419 mainFrame->ExecuteScript(
10420 WebScriptSource(WebString("document.body.style="
10421 "'scroll-boundary-behavior: auto;'")));
10422
10423 ScrollBegin(&web_view_helper, 100, 116);
10424 EXPECT_CALL(
10425 client,
10426 DidOverscroll(WebFloatSize(-100, -100), WebFloatSize(-100, -100),
10427 WebFloatPoint(100, 100), WebFloatSize(),
10428 WebScrollBoundaryBehavior(
10429 WebScrollBoundaryBehavior::ScrollBoundaryBehaviorType::
10430 kScrollBoundaryBehaviorTypeAuto)));
10431 ScrollUpdate(&web_view_helper, 100, 100);
10432 Mock::VerifyAndClearExpectations(&client);
10433
10434 mainFrame->ExecuteScript(
10435 WebScriptSource(WebString("document.body.style="
10436 "'scroll-boundary-behavior: contain;'")));
10437
10438 ScrollBegin(&web_view_helper, 100, 116);
10439 EXPECT_CALL(
10440 client,
10441 DidOverscroll(WebFloatSize(-100, -100), WebFloatSize(-200, -200),
10442 WebFloatPoint(100, 100), WebFloatSize(),
10443 WebScrollBoundaryBehavior(
10444 WebScrollBoundaryBehavior::ScrollBoundaryBehaviorType::
10445 kScrollBoundaryBehaviorTypeContain)));
10446 ScrollUpdate(&web_view_helper, 100, 100);
10447 Mock::VerifyAndClearExpectations(&client);
10448
10449 mainFrame->ExecuteScript(
10450 WebScriptSource(WebString("document.body.style="
10451 "'scroll-boundary-behavior: none;'")));
10452
10453 ScrollBegin(&web_view_helper, 100, 116);
10454 EXPECT_CALL(
10455 client,
10456 DidOverscroll(WebFloatSize(-100, -100), WebFloatSize(-300, -300),
10457 WebFloatPoint(100, 100), WebFloatSize(),
10458 WebScrollBoundaryBehavior(
10459 WebScrollBoundaryBehavior::ScrollBoundaryBehaviorType::
10460 kScrollBoundaryBehaviorTypeNone)));
10461 ScrollUpdate(&web_view_helper, 100, 100);
10462 Mock::VerifyAndClearExpectations(&client);
10463 }
10464
10465 TEST_P(WebFrameOverscrollTest, OnlyMainFrameScrollBoundaryBehaviorHasEffect) {
10466 OverscrollWebViewClient client;
10467 RegisterMockedHttpURLLoad("overscroll/iframe-overscroll.html");
10468 RegisterMockedHttpURLLoad("overscroll/scrollable-iframe.html");
10469 FrameTestHelpers::WebViewHelper web_view_helper;
10470 web_view_helper.InitializeAndLoad(
10471 base_url_ + "overscroll/iframe-overscroll.html", nullptr, &client,
10472 nullptr, ConfigureAndroid);
10473 web_view_helper.Resize(WebSize(200, 200));
10474
10475 WebLocalFrame* mainFrame =
10476 web_view_helper.WebView()->MainFrame()->ToWebLocalFrame();
10477 mainFrame->ExecuteScript(
10478 WebScriptSource(WebString("document.body.style="
10479 "'scroll-boundary-behavior: auto;'")));
10480 WebLocalFrame* subframe =
10481 web_view_helper.WebView()->MainFrame()->FirstChild()->ToWebLocalFrame();
10482 subframe->ExecuteScript(
10483 WebScriptSource(WebString("document.body.style="
10484 "'scroll-boundary-behavior: none;'")));
10485
10486 ScrollBegin(&web_view_helper, 100, 116);
10487 EXPECT_CALL(
10488 client,
10489 DidOverscroll(WebFloatSize(-100, -100), WebFloatSize(-100, -100),
10490 WebFloatPoint(100, 100), WebFloatSize(),
10491 WebScrollBoundaryBehavior(
10492 WebScrollBoundaryBehavior::ScrollBoundaryBehaviorType::
10493 kScrollBoundaryBehaviorTypeAuto)));
10494 ScrollUpdate(&web_view_helper, 100, 100);
10495 Mock::VerifyAndClearExpectations(&client);
10496
10497 mainFrame->ExecuteScript(
10498 WebScriptSource(WebString("document.body.style="
10499 "'scroll-boundary-behavior: contain;'")));
10500
10501 EXPECT_CALL(
10502 client,
10503 DidOverscroll(WebFloatSize(-100, -100), WebFloatSize(-200, -200),
10504 WebFloatPoint(100, 100), WebFloatSize(),
10505 WebScrollBoundaryBehavior(
10506 WebScrollBoundaryBehavior::ScrollBoundaryBehaviorType::
10507 kScrollBoundaryBehaviorTypeContain)));
10508 ScrollUpdate(&web_view_helper, 100, 100);
10509 Mock::VerifyAndClearExpectations(&client);
10510 }
10511
10392 TEST_P(ParameterizedWebFrameTest, OrientationFrameDetach) { 10512 TEST_P(ParameterizedWebFrameTest, OrientationFrameDetach) {
10393 RuntimeEnabledFeatures::SetOrientationEventEnabled(true); 10513 RuntimeEnabledFeatures::SetOrientationEventEnabled(true);
10394 RegisterMockedHttpURLLoad("orientation-frame-detach.html"); 10514 RegisterMockedHttpURLLoad("orientation-frame-detach.html");
10395 FrameTestHelpers::WebViewHelper web_view_helper; 10515 FrameTestHelpers::WebViewHelper web_view_helper;
10396 WebViewImpl* web_view_impl = web_view_helper.InitializeAndLoad( 10516 WebViewImpl* web_view_impl = web_view_helper.InitializeAndLoad(
10397 base_url_ + "orientation-frame-detach.html"); 10517 base_url_ + "orientation-frame-detach.html");
10398 web_view_impl->MainFrameImpl()->SendOrientationChangeEvent(); 10518 web_view_impl->MainFrameImpl()->SendOrientationChangeEvent();
10399 } 10519 }
10400 10520
10401 TEST_P(ParameterizedWebFrameTest, DISABLE_ON_TSAN(MaxFramesDetach)) { 10521 TEST_P(ParameterizedWebFrameTest, DISABLE_ON_TSAN(MaxFramesDetach)) {
(...skipping 2161 matching lines...) Expand 10 before | Expand all | Expand 10 after
12563 tester.ExpectBucketCount(histogramName, kSPANavTypeOtherFragmentNavigation, 12683 tester.ExpectBucketCount(histogramName, kSPANavTypeOtherFragmentNavigation,
12564 1); 12684 1);
12565 // kSameDocumentNavigationHistoryApi and kFrameLoadTypeBackForward is an 12685 // kSameDocumentNavigationHistoryApi and kFrameLoadTypeBackForward is an
12566 // illegal combination, which has been caught by DCHECK in 12686 // illegal combination, which has been caught by DCHECK in
12567 // UpdateForSameDocumentNavigation(). 12687 // UpdateForSameDocumentNavigation().
12568 12688
12569 tester.ExpectTotalCount(histogramName, 3); 12689 tester.ExpectTotalCount(histogramName, 3);
12570 } 12690 }
12571 12691
12572 } // namespace blink 12692 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698