| 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 10003 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 10014     EXPECT_TRUE( | 10014     EXPECT_TRUE( | 
| 10015         local_child->GetDocument()->Fetcher()->Context().DefersLoading()); | 10015         local_child->GetDocument()->Fetcher()->Context().DefersLoading()); | 
| 10016   } | 10016   } | 
| 10017   EXPECT_FALSE(page->Paused()); | 10017   EXPECT_FALSE(page->Paused()); | 
| 10018   EXPECT_FALSE( | 10018   EXPECT_FALSE( | 
| 10019       local_child->GetDocument()->Fetcher()->Context().DefersLoading()); | 10019       local_child->GetDocument()->Fetcher()->Context().DefersLoading()); | 
| 10020 } | 10020 } | 
| 10021 | 10021 | 
| 10022 class OverscrollWebViewClient : public FrameTestHelpers::TestWebViewClient { | 10022 class OverscrollWebViewClient : public FrameTestHelpers::TestWebViewClient { | 
| 10023  public: | 10023  public: | 
| 10024   MOCK_METHOD4(DidOverscroll, | 10024   MOCK_METHOD5(DidOverscroll, | 
| 10025                void(const WebFloatSize&, | 10025                void(const WebFloatSize&, | 
| 10026                     const WebFloatSize&, | 10026                     const WebFloatSize&, | 
| 10027                     const WebFloatPoint&, | 10027                     const WebFloatPoint&, | 
| 10028                     const WebFloatSize&)); | 10028                     const WebFloatSize&, | 
|  | 10029                     const WebScrollBoundaryBehavior&)); | 
| 10029 }; | 10030 }; | 
| 10030 | 10031 | 
| 10031 typedef std::pair<bool, blink::WebGestureDevice> WebFrameOverscrollTestParam; | 10032 typedef std::pair<bool, blink::WebGestureDevice> WebFrameOverscrollTestParam; | 
| 10032 class WebFrameOverscrollTest | 10033 class WebFrameOverscrollTest | 
| 10033     : public WebFrameTest, | 10034     : public WebFrameTest, | 
| 10034       public ::testing::WithParamInterface<WebFrameOverscrollTestParam>, | 10035       public ::testing::WithParamInterface<WebFrameOverscrollTestParam>, | 
| 10035       private ScopedRootLayerScrollingForTest { | 10036       private ScopedRootLayerScrollingForTest { | 
| 10036  public: | 10037  public: | 
| 10037   WebFrameOverscrollTest() | 10038   WebFrameOverscrollTest() | 
| 10038       : ScopedRootLayerScrollingForTest(GetParam().first) {} | 10039       : ScopedRootLayerScrollingForTest(GetParam().first) {} | 
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 10095   FrameTestHelpers::WebViewHelper web_view_helper; | 10096   FrameTestHelpers::WebViewHelper web_view_helper; | 
| 10096   web_view_helper.InitializeAndLoad(base_url_ + "overscroll/overscroll.html", | 10097   web_view_helper.InitializeAndLoad(base_url_ + "overscroll/overscroll.html", | 
| 10097                                     nullptr, &client, nullptr, | 10098                                     nullptr, &client, nullptr, | 
| 10098                                     ConfigureAndroid); | 10099                                     ConfigureAndroid); | 
| 10099   web_view_helper.Resize(WebSize(200, 200)); | 10100   web_view_helper.Resize(WebSize(200, 200)); | 
| 10100 | 10101 | 
| 10101   // Calculation of accumulatedRootOverscroll and unusedDelta on multiple | 10102   // Calculation of accumulatedRootOverscroll and unusedDelta on multiple | 
| 10102   // scrollUpdate. | 10103   // scrollUpdate. | 
| 10103   ScrollBegin(&web_view_helper, -300, -316); | 10104   ScrollBegin(&web_view_helper, -300, -316); | 
| 10104   EXPECT_CALL(client, DidOverscroll(WebFloatSize(8, 16), WebFloatSize(8, 16), | 10105   EXPECT_CALL(client, DidOverscroll(WebFloatSize(8, 16), WebFloatSize(8, 16), | 
| 10105                                     WebFloatPoint(100, 100), WebFloatSize())); | 10106                                     WebFloatPoint(100, 100), WebFloatSize(), | 
|  | 10107                                     WebScrollBoundaryBehavior())); | 
| 10106   ScrollUpdate(&web_view_helper, -308, -316); | 10108   ScrollUpdate(&web_view_helper, -308, -316); | 
| 10107   Mock::VerifyAndClearExpectations(&client); | 10109   Mock::VerifyAndClearExpectations(&client); | 
| 10108 | 10110 | 
| 10109   EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, 13), WebFloatSize(8, 29), | 10111   EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, 13), WebFloatSize(8, 29), | 
| 10110                                     WebFloatPoint(100, 100), WebFloatSize())); | 10112                                     WebFloatPoint(100, 100), WebFloatSize(), | 
|  | 10113                                     WebScrollBoundaryBehavior())); | 
| 10111   ScrollUpdate(&web_view_helper, 0, -13); | 10114   ScrollUpdate(&web_view_helper, 0, -13); | 
| 10112   Mock::VerifyAndClearExpectations(&client); | 10115   Mock::VerifyAndClearExpectations(&client); | 
| 10113 | 10116 | 
| 10114   EXPECT_CALL(client, DidOverscroll(WebFloatSize(20, 13), WebFloatSize(28, 42), | 10117   EXPECT_CALL(client, DidOverscroll(WebFloatSize(20, 13), WebFloatSize(28, 42), | 
| 10115                                     WebFloatPoint(100, 100), WebFloatSize())); | 10118                                     WebFloatPoint(100, 100), WebFloatSize(), | 
|  | 10119                                     WebScrollBoundaryBehavior())); | 
| 10116   ScrollUpdate(&web_view_helper, -20, -13); | 10120   ScrollUpdate(&web_view_helper, -20, -13); | 
| 10117   Mock::VerifyAndClearExpectations(&client); | 10121   Mock::VerifyAndClearExpectations(&client); | 
| 10118 | 10122 | 
| 10119   // Overscroll is not reported. | 10123   // Overscroll is not reported. | 
| 10120   EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); | 10124   EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0); | 
| 10121   ScrollUpdate(&web_view_helper, 0, 1); | 10125   ScrollUpdate(&web_view_helper, 0, 1); | 
| 10122   Mock::VerifyAndClearExpectations(&client); | 10126   Mock::VerifyAndClearExpectations(&client); | 
| 10123 | 10127 | 
| 10124   EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); | 10128   EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0); | 
| 10125   ScrollUpdate(&web_view_helper, 1, 0); | 10129   ScrollUpdate(&web_view_helper, 1, 0); | 
| 10126   Mock::VerifyAndClearExpectations(&client); | 10130   Mock::VerifyAndClearExpectations(&client); | 
| 10127 | 10131 | 
| 10128   // Overscroll is reported. | 10132   // Overscroll is reported. | 
| 10129   EXPECT_CALL(client, | 10133   EXPECT_CALL(client, | 
| 10130               DidOverscroll(WebFloatSize(0, -701), WebFloatSize(0, -701), | 10134               DidOverscroll(WebFloatSize(0, -701), WebFloatSize(0, -701), | 
| 10131                             WebFloatPoint(100, 100), WebFloatSize())); | 10135                             WebFloatPoint(100, 100), WebFloatSize(), | 
|  | 10136                             WebScrollBoundaryBehavior())); | 
| 10132   ScrollUpdate(&web_view_helper, 0, 1000); | 10137   ScrollUpdate(&web_view_helper, 0, 1000); | 
| 10133   Mock::VerifyAndClearExpectations(&client); | 10138   Mock::VerifyAndClearExpectations(&client); | 
| 10134 | 10139 | 
| 10135   // Overscroll is not reported. | 10140   // Overscroll is not reported. | 
| 10136   EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); | 10141   EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0); | 
| 10137   ScrollEnd(&web_view_helper); | 10142   ScrollEnd(&web_view_helper); | 
| 10138   Mock::VerifyAndClearExpectations(&client); | 10143   Mock::VerifyAndClearExpectations(&client); | 
| 10139 } | 10144 } | 
| 10140 | 10145 | 
| 10141 TEST_P(WebFrameOverscrollTest, | 10146 TEST_P(WebFrameOverscrollTest, | 
| 10142        AccumulatedOverscrollAndUnusedDeltaValuesOnDifferentAxesOverscroll) { | 10147        AccumulatedOverscrollAndUnusedDeltaValuesOnDifferentAxesOverscroll) { | 
| 10143   OverscrollWebViewClient client; | 10148   OverscrollWebViewClient client; | 
| 10144   RegisterMockedHttpURLLoad("overscroll/div-overscroll.html"); | 10149   RegisterMockedHttpURLLoad("overscroll/div-overscroll.html"); | 
| 10145   FrameTestHelpers::WebViewHelper web_view_helper; | 10150   FrameTestHelpers::WebViewHelper web_view_helper; | 
| 10146   web_view_helper.InitializeAndLoad( | 10151   web_view_helper.InitializeAndLoad( | 
| 10147       base_url_ + "overscroll/div-overscroll.html", nullptr, &client, nullptr, | 10152       base_url_ + "overscroll/div-overscroll.html", nullptr, &client, nullptr, | 
| 10148       ConfigureAndroid); | 10153       ConfigureAndroid); | 
| 10149   web_view_helper.Resize(WebSize(200, 200)); | 10154   web_view_helper.Resize(WebSize(200, 200)); | 
| 10150 | 10155 | 
| 10151   ScrollBegin(&web_view_helper, 0, -316); | 10156   ScrollBegin(&web_view_helper, 0, -316); | 
| 10152 | 10157 | 
| 10153   // Scroll the Div to the end. | 10158   // Scroll the Div to the end. | 
| 10154   EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); | 10159   EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0); | 
| 10155   ScrollUpdate(&web_view_helper, 0, -316); | 10160   ScrollUpdate(&web_view_helper, 0, -316); | 
| 10156   Mock::VerifyAndClearExpectations(&client); | 10161   Mock::VerifyAndClearExpectations(&client); | 
| 10157 | 10162 | 
| 10158   ScrollEnd(&web_view_helper); | 10163   ScrollEnd(&web_view_helper); | 
| 10159   ScrollBegin(&web_view_helper, 0, -100); | 10164   ScrollBegin(&web_view_helper, 0, -100); | 
| 10160 | 10165 | 
| 10161   // Now On Scrolling DIV, scroll is bubbled and root layer is over-scrolled. | 10166   // Now On Scrolling DIV, scroll is bubbled and root layer is over-scrolled. | 
| 10162   EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, 100), WebFloatSize(0, 100), | 10167   EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, 100), WebFloatSize(0, 100), | 
| 10163                                     WebFloatPoint(100, 100), WebFloatSize())); | 10168                                     WebFloatPoint(100, 100), WebFloatSize(), | 
|  | 10169                                     WebScrollBoundaryBehavior())); | 
| 10164   ScrollUpdate(&web_view_helper, 0, -100); | 10170   ScrollUpdate(&web_view_helper, 0, -100); | 
| 10165   ScrollUpdate(&web_view_helper, 0, -100); | 10171   ScrollUpdate(&web_view_helper, 0, -100); | 
| 10166   Mock::VerifyAndClearExpectations(&client); | 10172   Mock::VerifyAndClearExpectations(&client); | 
| 10167 | 10173 | 
| 10168   // TODO(bokan): This has never worked but by the accident that this test was | 10174   // TODO(bokan): This has never worked but by the accident that this test was | 
| 10169   // being run in a WebView without a size. This test should be fixed along with | 10175   // being run in a WebView without a size. This test should be fixed along with | 
| 10170   // the bug, crbug.com/589320. | 10176   // the bug, crbug.com/589320. | 
| 10171   // Page scrolls vertically, but over-scrolls horizontally. | 10177   // Page scrolls vertically, but over-scrolls horizontally. | 
| 10172   // EXPECT_CALL(client, didOverscroll(WebFloatSize(-100, 0), WebFloatSize(-100, | 10178   // EXPECT_CALL(client, didOverscroll(WebFloatSize(-100, 0), WebFloatSize(-100, | 
| 10173   // 0), WebFloatPoint(100, 100), WebFloatSize())); | 10179   // 0), WebFloatPoint(100, 100), WebFloatSize(), WebScrollBoundaryBehavior())); | 
| 10174   // ScrollUpdate(&webViewHelper, 100, 50); | 10180   // ScrollUpdate(&webViewHelper, 100, 50); | 
| 10175   // Mock::VerifyAndClearExpectations(&client); | 10181   // Mock::VerifyAndClearExpectations(&client); | 
| 10176 | 10182 | 
| 10177   // Scrolling up, Overscroll is not reported. | 10183   // Scrolling up, Overscroll is not reported. | 
| 10178   // EXPECT_CALL(client, didOverscroll(_, _, _, _)).Times(0); | 10184   // EXPECT_CALL(client, didOverscroll(_, _, _, _, _)).Times(0); | 
| 10179   // ScrollUpdate(&webViewHelper, 0, -50); | 10185   // ScrollUpdate(&webViewHelper, 0, -50); | 
| 10180   // Mock::VerifyAndClearExpectations(&client); | 10186   // Mock::VerifyAndClearExpectations(&client); | 
| 10181 | 10187 | 
| 10182   // Page scrolls horizontally, but over-scrolls vertically. | 10188   // Page scrolls horizontally, but over-scrolls vertically. | 
| 10183   // EXPECT_CALL(client, didOverscroll(WebFloatSize(0, 100), WebFloatSize(0, | 10189   // EXPECT_CALL(client, didOverscroll(WebFloatSize(0, 100), WebFloatSize(0, | 
| 10184   // 100), WebFloatPoint(100, 100), WebFloatSize())); | 10190   // 100), WebFloatPoint(100, 100), WebFloatSize(), | 
|  | 10191   // WebScrollBoundaryBehavior())); | 
| 10185   // ScrollUpdate(&webViewHelper, -100, -100); | 10192   // ScrollUpdate(&webViewHelper, -100, -100); | 
| 10186   // Mock::VerifyAndClearExpectations(&client); | 10193   // Mock::VerifyAndClearExpectations(&client); | 
| 10187 } | 10194 } | 
| 10188 | 10195 | 
| 10189 TEST_P(WebFrameOverscrollTest, RootLayerOverscrolledOnInnerDivOverScroll) { | 10196 TEST_P(WebFrameOverscrollTest, RootLayerOverscrolledOnInnerDivOverScroll) { | 
| 10190   OverscrollWebViewClient client; | 10197   OverscrollWebViewClient client; | 
| 10191   RegisterMockedHttpURLLoad("overscroll/div-overscroll.html"); | 10198   RegisterMockedHttpURLLoad("overscroll/div-overscroll.html"); | 
| 10192   FrameTestHelpers::WebViewHelper web_view_helper; | 10199   FrameTestHelpers::WebViewHelper web_view_helper; | 
| 10193   web_view_helper.InitializeAndLoad( | 10200   web_view_helper.InitializeAndLoad( | 
| 10194       base_url_ + "overscroll/div-overscroll.html", nullptr, &client, nullptr, | 10201       base_url_ + "overscroll/div-overscroll.html", nullptr, &client, nullptr, | 
| 10195       ConfigureAndroid); | 10202       ConfigureAndroid); | 
| 10196   web_view_helper.Resize(WebSize(200, 200)); | 10203   web_view_helper.Resize(WebSize(200, 200)); | 
| 10197 | 10204 | 
| 10198   ScrollBegin(&web_view_helper, 0, -316); | 10205   ScrollBegin(&web_view_helper, 0, -316); | 
| 10199 | 10206 | 
| 10200   // Scroll the Div to the end. | 10207   // Scroll the Div to the end. | 
| 10201   EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); | 10208   EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0); | 
| 10202   ScrollUpdate(&web_view_helper, 0, -316); | 10209   ScrollUpdate(&web_view_helper, 0, -316); | 
| 10203   Mock::VerifyAndClearExpectations(&client); | 10210   Mock::VerifyAndClearExpectations(&client); | 
| 10204 | 10211 | 
| 10205   ScrollEnd(&web_view_helper); | 10212   ScrollEnd(&web_view_helper); | 
| 10206   ScrollBegin(&web_view_helper, 0, -150); | 10213   ScrollBegin(&web_view_helper, 0, -150); | 
| 10207 | 10214 | 
| 10208   // Now On Scrolling DIV, scroll is bubbled and root layer is over-scrolled. | 10215   // Now On Scrolling DIV, scroll is bubbled and root layer is over-scrolled. | 
| 10209   EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, 50), WebFloatSize(0, 50), | 10216   EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, 50), WebFloatSize(0, 50), | 
| 10210                                     WebFloatPoint(100, 100), WebFloatSize())); | 10217                                     WebFloatPoint(100, 100), WebFloatSize(), | 
|  | 10218                                     WebScrollBoundaryBehavior())); | 
| 10211   ScrollUpdate(&web_view_helper, 0, -150); | 10219   ScrollUpdate(&web_view_helper, 0, -150); | 
| 10212   Mock::VerifyAndClearExpectations(&client); | 10220   Mock::VerifyAndClearExpectations(&client); | 
| 10213 } | 10221 } | 
| 10214 | 10222 | 
| 10215 TEST_P(WebFrameOverscrollTest, RootLayerOverscrolledOnInnerIFrameOverScroll) { | 10223 TEST_P(WebFrameOverscrollTest, RootLayerOverscrolledOnInnerIFrameOverScroll) { | 
| 10216   OverscrollWebViewClient client; | 10224   OverscrollWebViewClient client; | 
| 10217   RegisterMockedHttpURLLoad("overscroll/iframe-overscroll.html"); | 10225   RegisterMockedHttpURLLoad("overscroll/iframe-overscroll.html"); | 
| 10218   RegisterMockedHttpURLLoad("overscroll/scrollable-iframe.html"); | 10226   RegisterMockedHttpURLLoad("overscroll/scrollable-iframe.html"); | 
| 10219   FrameTestHelpers::WebViewHelper web_view_helper; | 10227   FrameTestHelpers::WebViewHelper web_view_helper; | 
| 10220   web_view_helper.InitializeAndLoad( | 10228   web_view_helper.InitializeAndLoad( | 
| 10221       base_url_ + "overscroll/iframe-overscroll.html", nullptr, &client, | 10229       base_url_ + "overscroll/iframe-overscroll.html", nullptr, &client, | 
| 10222       nullptr, ConfigureAndroid); | 10230       nullptr, ConfigureAndroid); | 
| 10223   web_view_helper.Resize(WebSize(200, 200)); | 10231   web_view_helper.Resize(WebSize(200, 200)); | 
| 10224 | 10232 | 
| 10225   ScrollBegin(&web_view_helper, 0, -320); | 10233   ScrollBegin(&web_view_helper, 0, -320); | 
| 10226   // Scroll the IFrame to the end. | 10234   // Scroll the IFrame to the end. | 
| 10227   EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); | 10235   EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0); | 
| 10228 | 10236 | 
| 10229   // This scroll will fully scroll the iframe but will be consumed before being | 10237   // This scroll will fully scroll the iframe but will be consumed before being | 
| 10230   // counted as overscroll. | 10238   // counted as overscroll. | 
| 10231   ScrollUpdate(&web_view_helper, 0, -320); | 10239   ScrollUpdate(&web_view_helper, 0, -320); | 
| 10232 | 10240 | 
| 10233   // This scroll will again target the iframe but wont bubble further up. Make | 10241   // This scroll will again target the iframe but wont bubble further up. Make | 
| 10234   // sure that the unused scroll isn't handled as overscroll. | 10242   // sure that the unused scroll isn't handled as overscroll. | 
| 10235   ScrollUpdate(&web_view_helper, 0, -50); | 10243   ScrollUpdate(&web_view_helper, 0, -50); | 
| 10236   Mock::VerifyAndClearExpectations(&client); | 10244   Mock::VerifyAndClearExpectations(&client); | 
| 10237 | 10245 | 
| 10238   ScrollEnd(&web_view_helper); | 10246   ScrollEnd(&web_view_helper); | 
| 10239   ScrollBegin(&web_view_helper, 0, -150); | 10247   ScrollBegin(&web_view_helper, 0, -150); | 
| 10240 | 10248 | 
| 10241   // Now On Scrolling IFrame, scroll is bubbled and root layer is over-scrolled. | 10249   // Now On Scrolling IFrame, scroll is bubbled and root layer is over-scrolled. | 
| 10242   EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, 50), WebFloatSize(0, 50), | 10250   EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, 50), WebFloatSize(0, 50), | 
| 10243                                     WebFloatPoint(100, 100), WebFloatSize())); | 10251                                     WebFloatPoint(100, 100), WebFloatSize(), | 
|  | 10252                                     WebScrollBoundaryBehavior())); | 
| 10244   ScrollUpdate(&web_view_helper, 0, -150); | 10253   ScrollUpdate(&web_view_helper, 0, -150); | 
| 10245   Mock::VerifyAndClearExpectations(&client); | 10254   Mock::VerifyAndClearExpectations(&client); | 
| 10246 | 10255 | 
| 10247   ScrollEnd(&web_view_helper); | 10256   ScrollEnd(&web_view_helper); | 
| 10248 } | 10257 } | 
| 10249 | 10258 | 
| 10250 TEST_P(WebFrameOverscrollTest, ScaledPageRootLayerOverscrolled) { | 10259 TEST_P(WebFrameOverscrollTest, ScaledPageRootLayerOverscrolled) { | 
| 10251   OverscrollWebViewClient client; | 10260   OverscrollWebViewClient client; | 
| 10252   RegisterMockedHttpURLLoad("overscroll/overscroll.html"); | 10261   RegisterMockedHttpURLLoad("overscroll/overscroll.html"); | 
| 10253   FrameTestHelpers::WebViewHelper web_view_helper; | 10262   FrameTestHelpers::WebViewHelper web_view_helper; | 
| 10254   WebViewImpl* web_view_impl = web_view_helper.InitializeAndLoad( | 10263   WebViewImpl* web_view_impl = web_view_helper.InitializeAndLoad( | 
| 10255       base_url_ + "overscroll/overscroll.html", nullptr, &client, nullptr, | 10264       base_url_ + "overscroll/overscroll.html", nullptr, &client, nullptr, | 
| 10256       ConfigureAndroid); | 10265       ConfigureAndroid); | 
| 10257   web_view_helper.Resize(WebSize(200, 200)); | 10266   web_view_helper.Resize(WebSize(200, 200)); | 
| 10258   web_view_impl->SetPageScaleFactor(3.0); | 10267   web_view_impl->SetPageScaleFactor(3.0); | 
| 10259 | 10268 | 
| 10260   // Calculation of accumulatedRootOverscroll and unusedDelta on scaled page. | 10269   // Calculation of accumulatedRootOverscroll and unusedDelta on scaled page. | 
| 10261   // The point is (99, 99) because we clamp in the division by 3 to 33 so when | 10270   // The point is (99, 99) because we clamp in the division by 3 to 33 so when | 
| 10262   // we go back to viewport coordinates it becomes (99, 99). | 10271   // we go back to viewport coordinates it becomes (99, 99). | 
| 10263   ScrollBegin(&web_view_helper, 0, 30); | 10272   ScrollBegin(&web_view_helper, 0, 30); | 
| 10264   EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, -30), WebFloatSize(0, -30), | 10273   EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, -30), WebFloatSize(0, -30), | 
| 10265                                     WebFloatPoint(99, 99), WebFloatSize())); | 10274                                     WebFloatPoint(99, 99), WebFloatSize(), | 
|  | 10275                                     WebScrollBoundaryBehavior())); | 
| 10266   ScrollUpdate(&web_view_helper, 0, 30); | 10276   ScrollUpdate(&web_view_helper, 0, 30); | 
| 10267   Mock::VerifyAndClearExpectations(&client); | 10277   Mock::VerifyAndClearExpectations(&client); | 
| 10268 | 10278 | 
| 10269   EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, -30), WebFloatSize(0, -60), | 10279   EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, -30), WebFloatSize(0, -60), | 
| 10270                                     WebFloatPoint(99, 99), WebFloatSize())); | 10280                                     WebFloatPoint(99, 99), WebFloatSize(), | 
|  | 10281                                     WebScrollBoundaryBehavior())); | 
| 10271   ScrollUpdate(&web_view_helper, 0, 30); | 10282   ScrollUpdate(&web_view_helper, 0, 30); | 
| 10272   Mock::VerifyAndClearExpectations(&client); | 10283   Mock::VerifyAndClearExpectations(&client); | 
| 10273 | 10284 | 
| 10274   EXPECT_CALL(client, | 10285   EXPECT_CALL(client, | 
| 10275               DidOverscroll(WebFloatSize(-30, -30), WebFloatSize(-30, -90), | 10286               DidOverscroll(WebFloatSize(-30, -30), WebFloatSize(-30, -90), | 
| 10276                             WebFloatPoint(99, 99), WebFloatSize())); | 10287                             WebFloatPoint(99, 99), WebFloatSize(), | 
|  | 10288                             WebScrollBoundaryBehavior())); | 
| 10277   ScrollUpdate(&web_view_helper, 30, 30); | 10289   ScrollUpdate(&web_view_helper, 30, 30); | 
| 10278   Mock::VerifyAndClearExpectations(&client); | 10290   Mock::VerifyAndClearExpectations(&client); | 
| 10279 | 10291 | 
| 10280   EXPECT_CALL(client, | 10292   EXPECT_CALL(client, | 
| 10281               DidOverscroll(WebFloatSize(-30, 0), WebFloatSize(-60, -90), | 10293               DidOverscroll(WebFloatSize(-30, 0), WebFloatSize(-60, -90), | 
| 10282                             WebFloatPoint(99, 99), WebFloatSize())); | 10294                             WebFloatPoint(99, 99), WebFloatSize(), | 
|  | 10295                             WebScrollBoundaryBehavior())); | 
| 10283   ScrollUpdate(&web_view_helper, 30, 0); | 10296   ScrollUpdate(&web_view_helper, 30, 0); | 
| 10284   Mock::VerifyAndClearExpectations(&client); | 10297   Mock::VerifyAndClearExpectations(&client); | 
| 10285 | 10298 | 
| 10286   // Overscroll is not reported. | 10299   // Overscroll is not reported. | 
| 10287   EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); | 10300   EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0); | 
| 10288   ScrollEnd(&web_view_helper); | 10301   ScrollEnd(&web_view_helper); | 
| 10289   Mock::VerifyAndClearExpectations(&client); | 10302   Mock::VerifyAndClearExpectations(&client); | 
| 10290 } | 10303 } | 
| 10291 | 10304 | 
| 10292 TEST_P(WebFrameOverscrollTest, NoOverscrollForSmallvalues) { | 10305 TEST_P(WebFrameOverscrollTest, NoOverscrollForSmallvalues) { | 
| 10293   OverscrollWebViewClient client; | 10306   OverscrollWebViewClient client; | 
| 10294   RegisterMockedHttpURLLoad("overscroll/overscroll.html"); | 10307   RegisterMockedHttpURLLoad("overscroll/overscroll.html"); | 
| 10295   FrameTestHelpers::WebViewHelper web_view_helper; | 10308   FrameTestHelpers::WebViewHelper web_view_helper; | 
| 10296   web_view_helper.InitializeAndLoad(base_url_ + "overscroll/overscroll.html", | 10309   web_view_helper.InitializeAndLoad(base_url_ + "overscroll/overscroll.html", | 
| 10297                                     nullptr, &client, nullptr, | 10310                                     nullptr, &client, nullptr, | 
| 10298                                     ConfigureAndroid); | 10311                                     ConfigureAndroid); | 
| 10299   web_view_helper.Resize(WebSize(200, 200)); | 10312   web_view_helper.Resize(WebSize(200, 200)); | 
| 10300 | 10313 | 
| 10301   ScrollBegin(&web_view_helper, 10, 10); | 10314   ScrollBegin(&web_view_helper, 10, 10); | 
| 10302   EXPECT_CALL(client, | 10315   EXPECT_CALL(client, | 
| 10303               DidOverscroll(WebFloatSize(-10, -10), WebFloatSize(-10, -10), | 10316               DidOverscroll(WebFloatSize(-10, -10), WebFloatSize(-10, -10), | 
| 10304                             WebFloatPoint(100, 100), WebFloatSize())); | 10317                             WebFloatPoint(100, 100), WebFloatSize(), | 
|  | 10318                             WebScrollBoundaryBehavior())); | 
| 10305   ScrollUpdate(&web_view_helper, 10, 10); | 10319   ScrollUpdate(&web_view_helper, 10, 10); | 
| 10306   Mock::VerifyAndClearExpectations(&client); | 10320   Mock::VerifyAndClearExpectations(&client); | 
| 10307 | 10321 | 
| 10308   EXPECT_CALL(client, | 10322   EXPECT_CALL(client, | 
| 10309               DidOverscroll(WebFloatSize(0, -0.10), WebFloatSize(-10, -10.10), | 10323               DidOverscroll(WebFloatSize(0, -0.10), WebFloatSize(-10, -10.10), | 
| 10310                             WebFloatPoint(100, 100), WebFloatSize())); | 10324                             WebFloatPoint(100, 100), WebFloatSize(), | 
|  | 10325                             WebScrollBoundaryBehavior())); | 
| 10311   ScrollUpdate(&web_view_helper, 0, 0.10); | 10326   ScrollUpdate(&web_view_helper, 0, 0.10); | 
| 10312   Mock::VerifyAndClearExpectations(&client); | 10327   Mock::VerifyAndClearExpectations(&client); | 
| 10313 | 10328 | 
| 10314   EXPECT_CALL(client, DidOverscroll(WebFloatSize(-0.10, 0), | 10329   EXPECT_CALL(client, DidOverscroll(WebFloatSize(-0.10, 0), | 
| 10315                                     WebFloatSize(-10.10, -10.10), | 10330                                     WebFloatSize(-10.10, -10.10), | 
| 10316                                     WebFloatPoint(100, 100), WebFloatSize())); | 10331                                     WebFloatPoint(100, 100), WebFloatSize(), | 
|  | 10332                                     WebScrollBoundaryBehavior())); | 
| 10317   ScrollUpdate(&web_view_helper, 0.10, 0); | 10333   ScrollUpdate(&web_view_helper, 0.10, 0); | 
| 10318   Mock::VerifyAndClearExpectations(&client); | 10334   Mock::VerifyAndClearExpectations(&client); | 
| 10319 | 10335 | 
| 10320   // For residual values overscrollDelta should be reset and didOverscroll | 10336   // For residual values overscrollDelta should be reset and didOverscroll | 
| 10321   // shouldn't be called. | 10337   // shouldn't be called. | 
| 10322   EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); | 10338   EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0); | 
| 10323   ScrollUpdate(&web_view_helper, 0, 0.09); | 10339   ScrollUpdate(&web_view_helper, 0, 0.09); | 
| 10324   Mock::VerifyAndClearExpectations(&client); | 10340   Mock::VerifyAndClearExpectations(&client); | 
| 10325 | 10341 | 
| 10326   EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); | 10342   EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0); | 
| 10327   ScrollUpdate(&web_view_helper, 0.09, 0.09); | 10343   ScrollUpdate(&web_view_helper, 0.09, 0.09); | 
| 10328   Mock::VerifyAndClearExpectations(&client); | 10344   Mock::VerifyAndClearExpectations(&client); | 
| 10329 | 10345 | 
| 10330   EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); | 10346   EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0); | 
| 10331   ScrollUpdate(&web_view_helper, 0.09, 0); | 10347   ScrollUpdate(&web_view_helper, 0.09, 0); | 
| 10332   Mock::VerifyAndClearExpectations(&client); | 10348   Mock::VerifyAndClearExpectations(&client); | 
| 10333 | 10349 | 
| 10334   EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); | 10350   EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0); | 
| 10335   ScrollUpdate(&web_view_helper, 0, -0.09); | 10351   ScrollUpdate(&web_view_helper, 0, -0.09); | 
| 10336   Mock::VerifyAndClearExpectations(&client); | 10352   Mock::VerifyAndClearExpectations(&client); | 
| 10337 | 10353 | 
| 10338   EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); | 10354   EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0); | 
| 10339   ScrollUpdate(&web_view_helper, -0.09, -0.09); | 10355   ScrollUpdate(&web_view_helper, -0.09, -0.09); | 
| 10340   Mock::VerifyAndClearExpectations(&client); | 10356   Mock::VerifyAndClearExpectations(&client); | 
| 10341 | 10357 | 
| 10342   EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); | 10358   EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0); | 
| 10343   ScrollUpdate(&web_view_helper, -0.09, 0); | 10359   ScrollUpdate(&web_view_helper, -0.09, 0); | 
| 10344   Mock::VerifyAndClearExpectations(&client); | 10360   Mock::VerifyAndClearExpectations(&client); | 
| 10345 | 10361 | 
| 10346   EXPECT_CALL(client, DidOverscroll(_, _, _, _)).Times(0); | 10362   EXPECT_CALL(client, DidOverscroll(_, _, _, _, _)).Times(0); | 
| 10347   ScrollEnd(&web_view_helper); | 10363   ScrollEnd(&web_view_helper); | 
| 10348   Mock::VerifyAndClearExpectations(&client); | 10364   Mock::VerifyAndClearExpectations(&client); | 
| 10349 } | 10365 } | 
| 10350 | 10366 | 
| 10351 TEST_P(WebFrameOverscrollTest, | 10367 TEST_P(WebFrameOverscrollTest, ScrollBoundaryBehaviorAffectsDidOverscroll) { | 
| 10352        ScrollBoundaryBehaviorOnBodyDoesNotPreventOverscroll) { |  | 
| 10353   OverscrollWebViewClient client; | 10368   OverscrollWebViewClient client; | 
| 10354   RegisterMockedHttpURLLoad("overscroll/overscroll.html"); | 10369   RegisterMockedHttpURLLoad("overscroll/overscroll.html"); | 
| 10355   FrameTestHelpers::WebViewHelper web_view_helper; | 10370   FrameTestHelpers::WebViewHelper web_view_helper; | 
| 10356   web_view_helper.InitializeAndLoad(base_url_ + "overscroll/overscroll.html", | 10371   web_view_helper.InitializeAndLoad(base_url_ + "overscroll/overscroll.html", | 
| 10357                                     nullptr, &client, nullptr, | 10372                                     nullptr, &client, nullptr, | 
| 10358                                     ConfigureAndroid); | 10373                                     ConfigureAndroid); | 
| 10359   web_view_helper.Resize(WebSize(200, 200)); | 10374   web_view_helper.Resize(WebSize(200, 200)); | 
| 10360 | 10375 | 
| 10361   WebLocalFrame* mainFrame = | 10376   WebLocalFrame* mainFrame = | 
| 10362       web_view_helper.WebView()->MainFrame()->ToWebLocalFrame(); | 10377       web_view_helper.WebView()->MainFrame()->ToWebLocalFrame(); | 
| 10363   mainFrame->ExecuteScript( | 10378   mainFrame->ExecuteScript( | 
| 10364       WebScriptSource(WebString("document.body.style=" | 10379       WebScriptSource(WebString("document.body.style=" | 
|  | 10380                                 "'scroll-boundary-behavior: auto;'"))); | 
|  | 10381 | 
|  | 10382   ScrollBegin(&web_view_helper, 100, 116); | 
|  | 10383   EXPECT_CALL( | 
|  | 10384       client, | 
|  | 10385       DidOverscroll(WebFloatSize(-100, -100), WebFloatSize(-100, -100), | 
|  | 10386                     WebFloatPoint(100, 100), WebFloatSize(), | 
|  | 10387                     WebScrollBoundaryBehavior( | 
|  | 10388                         WebScrollBoundaryBehavior::ScrollBoundaryBehaviorType:: | 
|  | 10389                             kScrollBoundaryBehaviorTypeAuto))); | 
|  | 10390   ScrollUpdate(&web_view_helper, 100, 100); | 
|  | 10391   Mock::VerifyAndClearExpectations(&client); | 
|  | 10392 | 
|  | 10393   mainFrame->ExecuteScript( | 
|  | 10394       WebScriptSource(WebString("document.body.style=" | 
| 10365                                 "'scroll-boundary-behavior: contain;'"))); | 10395                                 "'scroll-boundary-behavior: contain;'"))); | 
| 10366 | 10396 | 
| 10367   ScrollBegin(&web_view_helper, 100, 100); | 10397   ScrollBegin(&web_view_helper, 100, 116); | 
| 10368   EXPECT_CALL(client, | 10398   EXPECT_CALL( | 
| 10369               DidOverscroll(WebFloatSize(-100, -100), WebFloatSize(-100, -100), | 10399       client, | 
| 10370                             WebFloatPoint(100, 100), WebFloatSize())); | 10400       DidOverscroll(WebFloatSize(-100, -100), WebFloatSize(-200, -200), | 
|  | 10401                     WebFloatPoint(100, 100), WebFloatSize(), | 
|  | 10402                     WebScrollBoundaryBehavior( | 
|  | 10403                         WebScrollBoundaryBehavior::ScrollBoundaryBehaviorType:: | 
|  | 10404                             kScrollBoundaryBehaviorTypeContain))); | 
|  | 10405   ScrollUpdate(&web_view_helper, 100, 100); | 
|  | 10406   Mock::VerifyAndClearExpectations(&client); | 
|  | 10407 | 
|  | 10408   mainFrame->ExecuteScript( | 
|  | 10409       WebScriptSource(WebString("document.body.style=" | 
|  | 10410                                 "'scroll-boundary-behavior: none;'"))); | 
|  | 10411 | 
|  | 10412   ScrollBegin(&web_view_helper, 100, 116); | 
|  | 10413   EXPECT_CALL( | 
|  | 10414       client, | 
|  | 10415       DidOverscroll(WebFloatSize(-100, -100), WebFloatSize(-300, -300), | 
|  | 10416                     WebFloatPoint(100, 100), WebFloatSize(), | 
|  | 10417                     WebScrollBoundaryBehavior( | 
|  | 10418                         WebScrollBoundaryBehavior::ScrollBoundaryBehaviorType:: | 
|  | 10419                             kScrollBoundaryBehaviorTypeNone))); | 
| 10371   ScrollUpdate(&web_view_helper, 100, 100); | 10420   ScrollUpdate(&web_view_helper, 100, 100); | 
| 10372   Mock::VerifyAndClearExpectations(&client); | 10421   Mock::VerifyAndClearExpectations(&client); | 
| 10373 } | 10422 } | 
|  | 10423 | 
|  | 10424 TEST_P(WebFrameOverscrollTest, OnlyMainFrameScrollBoundaryBehaviorHasEffect) { | 
|  | 10425   OverscrollWebViewClient client; | 
|  | 10426   RegisterMockedHttpURLLoad("overscroll/iframe-overscroll.html"); | 
|  | 10427   RegisterMockedHttpURLLoad("overscroll/scrollable-iframe.html"); | 
|  | 10428   FrameTestHelpers::WebViewHelper web_view_helper; | 
|  | 10429   web_view_helper.InitializeAndLoad( | 
|  | 10430       base_url_ + "overscroll/iframe-overscroll.html", nullptr, &client, | 
|  | 10431       nullptr, ConfigureAndroid); | 
|  | 10432   web_view_helper.Resize(WebSize(200, 200)); | 
|  | 10433 | 
|  | 10434   WebLocalFrame* mainFrame = | 
|  | 10435       web_view_helper.WebView()->MainFrame()->ToWebLocalFrame(); | 
|  | 10436   mainFrame->ExecuteScript( | 
|  | 10437       WebScriptSource(WebString("document.body.style=" | 
|  | 10438                                 "'scroll-boundary-behavior: auto;'"))); | 
|  | 10439   WebLocalFrame* subframe = | 
|  | 10440       web_view_helper.WebView()->MainFrame()->FirstChild()->ToWebLocalFrame(); | 
|  | 10441   subframe->ExecuteScript( | 
|  | 10442       WebScriptSource(WebString("document.body.style=" | 
|  | 10443                                 "'scroll-boundary-behavior: none;'"))); | 
|  | 10444 | 
|  | 10445   ScrollBegin(&web_view_helper, 100, 116); | 
|  | 10446   EXPECT_CALL( | 
|  | 10447       client, | 
|  | 10448       DidOverscroll(WebFloatSize(-100, -100), WebFloatSize(-100, -100), | 
|  | 10449                     WebFloatPoint(100, 100), WebFloatSize(), | 
|  | 10450                     WebScrollBoundaryBehavior( | 
|  | 10451                         WebScrollBoundaryBehavior::ScrollBoundaryBehaviorType:: | 
|  | 10452                             kScrollBoundaryBehaviorTypeAuto))); | 
|  | 10453   ScrollUpdate(&web_view_helper, 100, 100); | 
|  | 10454   Mock::VerifyAndClearExpectations(&client); | 
|  | 10455 | 
|  | 10456   mainFrame->ExecuteScript( | 
|  | 10457       WebScriptSource(WebString("document.body.style=" | 
|  | 10458                                 "'scroll-boundary-behavior: contain;'"))); | 
|  | 10459 | 
|  | 10460   EXPECT_CALL( | 
|  | 10461       client, | 
|  | 10462       DidOverscroll(WebFloatSize(-100, -100), WebFloatSize(-200, -200), | 
|  | 10463                     WebFloatPoint(100, 100), WebFloatSize(), | 
|  | 10464                     WebScrollBoundaryBehavior( | 
|  | 10465                         WebScrollBoundaryBehavior::ScrollBoundaryBehaviorType:: | 
|  | 10466                             kScrollBoundaryBehaviorTypeContain))); | 
|  | 10467   ScrollUpdate(&web_view_helper, 100, 100); | 
|  | 10468   Mock::VerifyAndClearExpectations(&client); | 
|  | 10469 } | 
| 10374 | 10470 | 
| 10375 TEST_P(ParameterizedWebFrameTest, OrientationFrameDetach) { | 10471 TEST_P(ParameterizedWebFrameTest, OrientationFrameDetach) { | 
| 10376   RuntimeEnabledFeatures::SetOrientationEventEnabled(true); | 10472   RuntimeEnabledFeatures::SetOrientationEventEnabled(true); | 
| 10377   RegisterMockedHttpURLLoad("orientation-frame-detach.html"); | 10473   RegisterMockedHttpURLLoad("orientation-frame-detach.html"); | 
| 10378   FrameTestHelpers::WebViewHelper web_view_helper; | 10474   FrameTestHelpers::WebViewHelper web_view_helper; | 
| 10379   WebViewImpl* web_view_impl = web_view_helper.InitializeAndLoad( | 10475   WebViewImpl* web_view_impl = web_view_helper.InitializeAndLoad( | 
| 10380       base_url_ + "orientation-frame-detach.html"); | 10476       base_url_ + "orientation-frame-detach.html"); | 
| 10381   web_view_impl->MainFrameImpl()->SendOrientationChangeEvent(); | 10477   web_view_impl->MainFrameImpl()->SendOrientationChangeEvent(); | 
| 10382 } | 10478 } | 
| 10383 | 10479 | 
| (...skipping 1493 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 11877   EXPECT_EQ(ScrollHitTestLayerCount(), 1u); | 11973   EXPECT_EQ(ScrollHitTestLayerCount(), 1u); | 
| 11878   ScrollHitTestLayerAt(0)->SetScrollOffsetFromImplSideForTesting( | 11974   ScrollHitTestLayerAt(0)->SetScrollOffsetFromImplSideForTesting( | 
| 11879       gfx::ScrollOffset(0, 3)); | 11975       gfx::ScrollOffset(0, 3)); | 
| 11880 | 11976 | 
| 11881   WebView()->UpdateAllLifecyclePhases(); | 11977   WebView()->UpdateAllLifecyclePhases(); | 
| 11882   EXPECT_EQ(ContentLayerCount(), 1u); | 11978   EXPECT_EQ(ContentLayerCount(), 1u); | 
| 11883   EXPECT_EQ(ScrollHitTestLayerCount(), 0u); | 11979   EXPECT_EQ(ScrollHitTestLayerCount(), 0u); | 
| 11884 } | 11980 } | 
| 11885 | 11981 | 
| 11886 }  // namespace blink | 11982 }  // namespace blink | 
| OLD | NEW | 
|---|