OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "bindings/core/v8/NodeOrString.h" | 5 #include "bindings/core/v8/NodeOrString.h" |
6 #include "core/dom/ClientRect.h" | 6 #include "core/dom/ClientRect.h" |
7 #include "core/exported/WebRemoteFrameImpl.h" | 7 #include "core/exported/WebRemoteFrameImpl.h" |
8 #include "core/frame/BrowserControls.h" | 8 #include "core/frame/BrowserControls.h" |
9 #include "core/frame/LocalFrameView.h" | 9 #include "core/frame/LocalFrameView.h" |
10 #include "core/frame/RootFrameViewport.h" | 10 #include "core/frame/RootFrameViewport.h" |
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
214 document->documentElement()->ReplaceWith(nodes, non_throw); | 214 document->documentElement()->ReplaceWith(nodes, non_throw); |
215 | 215 |
216 MainFrameView()->UpdateAllLifecyclePhases(); | 216 MainFrameView()->UpdateAllLifecyclePhases(); |
217 | 217 |
218 EXPECT_EQ(MainFrame()->GetDocument(), | 218 EXPECT_EQ(MainFrame()->GetDocument(), |
219 EffectiveRootScroller(MainFrame()->GetDocument())); | 219 EffectiveRootScroller(MainFrame()->GetDocument())); |
220 } | 220 } |
221 | 221 |
222 class OverscrollTestWebViewClient : public FrameTestHelpers::TestWebViewClient { | 222 class OverscrollTestWebViewClient : public FrameTestHelpers::TestWebViewClient { |
223 public: | 223 public: |
224 MOCK_METHOD4(DidOverscroll, | 224 MOCK_METHOD5(DidOverscroll, |
225 void(const WebFloatSize&, | 225 void(const WebFloatSize&, |
226 const WebFloatSize&, | 226 const WebFloatSize&, |
227 const WebFloatPoint&, | 227 const WebFloatPoint&, |
228 const WebFloatSize&)); | 228 const WebFloatSize&, |
| 229 const WebScrollBoundaryBehavior&)); |
229 }; | 230 }; |
230 | 231 |
231 // Tests that setting an element as the root scroller causes it to control url | 232 // Tests that setting an element as the root scroller causes it to control url |
232 // bar hiding and overscroll. | 233 // bar hiding and overscroll. |
233 TEST_F(RootScrollerTest, TestSetRootScroller) { | 234 TEST_F(RootScrollerTest, TestSetRootScroller) { |
234 OverscrollTestWebViewClient client; | 235 OverscrollTestWebViewClient client; |
235 Initialize("root-scroller.html", &client); | 236 Initialize("root-scroller.html", &client); |
236 | 237 |
237 Element* container = MainFrame()->GetDocument()->getElementById("container"); | 238 Element* container = MainFrame()->GetDocument()->getElementById("container"); |
238 MainFrame()->GetDocument()->setRootScroller(container); | 239 MainFrame()->GetDocument()->setRootScroller(container); |
(...skipping 21 matching lines...) Expand all Loading... |
260 GetWebView()->HandleInputEvent(GenerateTouchGestureEvent( | 261 GetWebView()->HandleInputEvent(GenerateTouchGestureEvent( |
261 WebInputEvent::kGestureScrollUpdate, 0, -100)); | 262 WebInputEvent::kGestureScrollUpdate, 0, -100)); |
262 EXPECT_FLOAT_EQ(100, container->scrollTop()); | 263 EXPECT_FLOAT_EQ(100, container->scrollTop()); |
263 EXPECT_FLOAT_EQ(0, MainFrameView()->GetScrollOffset().Height()); | 264 EXPECT_FLOAT_EQ(0, MainFrameView()->GetScrollOffset().Height()); |
264 } | 265 } |
265 | 266 |
266 { | 267 { |
267 // Scroll 50 pixels past the end. Ensure we report the 50 pixels as | 268 // Scroll 50 pixels past the end. Ensure we report the 50 pixels as |
268 // overscroll. | 269 // overscroll. |
269 EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, 50), WebFloatSize(0, 50), | 270 EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, 50), WebFloatSize(0, 50), |
270 WebFloatPoint(100, 100), WebFloatSize())); | 271 WebFloatPoint(100, 100), WebFloatSize(), |
| 272 WebScrollBoundaryBehavior())); |
271 GetWebView()->HandleInputEvent(GenerateTouchGestureEvent( | 273 GetWebView()->HandleInputEvent(GenerateTouchGestureEvent( |
272 WebInputEvent::kGestureScrollUpdate, 0, -500)); | 274 WebInputEvent::kGestureScrollUpdate, 0, -500)); |
273 EXPECT_FLOAT_EQ(maximum_scroll, container->scrollTop()); | 275 EXPECT_FLOAT_EQ(maximum_scroll, container->scrollTop()); |
274 EXPECT_FLOAT_EQ(0, MainFrameView()->GetScrollOffset().Height()); | 276 EXPECT_FLOAT_EQ(0, MainFrameView()->GetScrollOffset().Height()); |
275 Mock::VerifyAndClearExpectations(&client); | 277 Mock::VerifyAndClearExpectations(&client); |
276 } | 278 } |
277 | 279 |
278 { | 280 { |
279 // Continue the gesture overscroll. | 281 // Continue the gesture overscroll. |
280 EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, 20), WebFloatSize(0, 70), | 282 EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, 20), WebFloatSize(0, 70), |
281 WebFloatPoint(100, 100), WebFloatSize())); | 283 WebFloatPoint(100, 100), WebFloatSize(), |
| 284 WebScrollBoundaryBehavior())); |
282 GetWebView()->HandleInputEvent( | 285 GetWebView()->HandleInputEvent( |
283 GenerateTouchGestureEvent(WebInputEvent::kGestureScrollUpdate, 0, -20)); | 286 GenerateTouchGestureEvent(WebInputEvent::kGestureScrollUpdate, 0, -20)); |
284 EXPECT_FLOAT_EQ(maximum_scroll, container->scrollTop()); | 287 EXPECT_FLOAT_EQ(maximum_scroll, container->scrollTop()); |
285 EXPECT_FLOAT_EQ(0, MainFrameView()->GetScrollOffset().Height()); | 288 EXPECT_FLOAT_EQ(0, MainFrameView()->GetScrollOffset().Height()); |
286 Mock::VerifyAndClearExpectations(&client); | 289 Mock::VerifyAndClearExpectations(&client); |
287 } | 290 } |
288 | 291 |
289 GetWebView()->HandleInputEvent( | 292 GetWebView()->HandleInputEvent( |
290 GenerateTouchGestureEvent(WebInputEvent::kGestureScrollEnd)); | 293 GenerateTouchGestureEvent(WebInputEvent::kGestureScrollEnd)); |
291 | 294 |
292 { | 295 { |
293 // Make sure a new gesture scroll still won't scroll the frameview and | 296 // Make sure a new gesture scroll still won't scroll the frameview and |
294 // overscrolls. | 297 // overscrolls. |
295 GetWebView()->HandleInputEvent( | 298 GetWebView()->HandleInputEvent( |
296 GenerateTouchGestureEvent(WebInputEvent::kGestureScrollBegin)); | 299 GenerateTouchGestureEvent(WebInputEvent::kGestureScrollBegin)); |
297 | 300 |
298 EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, 30), WebFloatSize(0, 30), | 301 EXPECT_CALL(client, DidOverscroll(WebFloatSize(0, 30), WebFloatSize(0, 30), |
299 WebFloatPoint(100, 100), WebFloatSize())); | 302 WebFloatPoint(100, 100), WebFloatSize(), |
| 303 WebScrollBoundaryBehavior())); |
300 GetWebView()->HandleInputEvent( | 304 GetWebView()->HandleInputEvent( |
301 GenerateTouchGestureEvent(WebInputEvent::kGestureScrollUpdate, 0, -30)); | 305 GenerateTouchGestureEvent(WebInputEvent::kGestureScrollUpdate, 0, -30)); |
302 EXPECT_FLOAT_EQ(maximum_scroll, container->scrollTop()); | 306 EXPECT_FLOAT_EQ(maximum_scroll, container->scrollTop()); |
303 EXPECT_FLOAT_EQ(0, MainFrameView()->GetScrollOffset().Height()); | 307 EXPECT_FLOAT_EQ(0, MainFrameView()->GetScrollOffset().Height()); |
304 Mock::VerifyAndClearExpectations(&client); | 308 Mock::VerifyAndClearExpectations(&client); |
305 | 309 |
306 GetWebView()->HandleInputEvent( | 310 GetWebView()->HandleInputEvent( |
307 GenerateTouchGestureEvent(WebInputEvent::kGestureScrollEnd)); | 311 GenerateTouchGestureEvent(WebInputEvent::kGestureScrollEnd)); |
308 } | 312 } |
309 | 313 |
(...skipping 903 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1213 // Ensure the target and container weren't put into the same layer. | 1217 // Ensure the target and container weren't put into the same layer. |
1214 ASSERT_NE(ToLayoutBox(target->GetLayoutObject())->EnclosingLayer(), | 1218 ASSERT_NE(ToLayoutBox(target->GetLayoutObject())->EnclosingLayer(), |
1215 ToLayoutBox(container->GetLayoutObject())->Layer()); | 1219 ToLayoutBox(container->GetLayoutObject())->Layer()); |
1216 | 1220 |
1217 CheckHitTestAtBottomOfScreen(); | 1221 CheckHitTestAtBottomOfScreen(); |
1218 } | 1222 } |
1219 | 1223 |
1220 } // namespace | 1224 } // namespace |
1221 | 1225 |
1222 } // namespace blink | 1226 } // namespace blink |
OLD | NEW |