OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "core/frame/RootFrameViewport.h" | 5 #include "core/frame/RootFrameViewport.h" |
6 | 6 |
7 #include "core/layout/ScrollAlignment.h" | 7 #include "core/layout/ScrollAlignment.h" |
8 #include "platform/geometry/DoubleRect.h" | 8 #include "platform/geometry/DoubleRect.h" |
9 #include "platform/geometry/LayoutRect.h" | 9 #include "platform/geometry/LayoutRect.h" |
10 #include "platform/scheduler/child/web_scheduler.h" | 10 #include "platform/scheduler/child/web_scheduler.h" |
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
300 VisualViewportStub* visual_viewport = | 300 VisualViewportStub* visual_viewport = |
301 VisualViewportStub::Create(viewport_size, viewport_size); | 301 VisualViewportStub::Create(viewport_size, viewport_size); |
302 | 302 |
303 ScrollableArea* root_frame_viewport = | 303 ScrollableArea* root_frame_viewport = |
304 RootFrameViewport::Create(*visual_viewport, *layout_viewport); | 304 RootFrameViewport::Create(*visual_viewport, *layout_viewport); |
305 | 305 |
306 // Test that the visual viewport is scrolled if the viewport has been | 306 // Test that the visual viewport is scrolled if the viewport has been |
307 // resized (as is the case when the ChromeOS keyboard comes up) but not | 307 // resized (as is the case when the ChromeOS keyboard comes up) but not |
308 // scaled. | 308 // scaled. |
309 visual_viewport->SetViewportSize(IntSize(100, 100)); | 309 visual_viewport->SetViewportSize(IntSize(100, 100)); |
310 root_frame_viewport->ScrollIntoView(LayoutRect(100, 250, 50, 50), | 310 root_frame_viewport->ScrollIntoView( |
311 ScrollAlignment::kAlignToEdgeIfNeeded, | 311 LayoutRect(100, 250, 50, 50), ScrollAlignment::kAlignToEdgeIfNeeded, |
312 ScrollAlignment::kAlignToEdgeIfNeeded); | 312 ScrollAlignment::kAlignToEdgeIfNeeded, false); |
313 EXPECT_SIZE_EQ(ScrollOffset(50, 150), layout_viewport->GetScrollOffset()); | 313 EXPECT_SIZE_EQ(ScrollOffset(50, 150), layout_viewport->GetScrollOffset()); |
314 EXPECT_SIZE_EQ(ScrollOffset(0, 50), visual_viewport->GetScrollOffset()); | 314 EXPECT_SIZE_EQ(ScrollOffset(0, 50), visual_viewport->GetScrollOffset()); |
315 | 315 |
316 root_frame_viewport->ScrollIntoView(LayoutRect(25, 75, 50, 50), | 316 root_frame_viewport->ScrollIntoView( |
317 ScrollAlignment::kAlignToEdgeIfNeeded, | 317 LayoutRect(25, 75, 50, 50), ScrollAlignment::kAlignToEdgeIfNeeded, |
318 ScrollAlignment::kAlignToEdgeIfNeeded); | 318 ScrollAlignment::kAlignToEdgeIfNeeded, false); |
319 EXPECT_SIZE_EQ(ScrollOffset(25, 75), layout_viewport->GetScrollOffset()); | 319 EXPECT_SIZE_EQ(ScrollOffset(25, 75), layout_viewport->GetScrollOffset()); |
320 EXPECT_SIZE_EQ(ScrollOffset(0, 0), visual_viewport->GetScrollOffset()); | 320 EXPECT_SIZE_EQ(ScrollOffset(0, 0), visual_viewport->GetScrollOffset()); |
321 | 321 |
322 // Reset the visual viewport's size, scale the page, and repeat the test | 322 // Reset the visual viewport's size, scale the page, and repeat the test |
323 visual_viewport->SetViewportSize(IntSize(100, 150)); | 323 visual_viewport->SetViewportSize(IntSize(100, 150)); |
324 visual_viewport->SetScale(2); | 324 visual_viewport->SetScale(2); |
325 root_frame_viewport->SetScrollOffset(ScrollOffset(), kProgrammaticScroll); | 325 root_frame_viewport->SetScrollOffset(ScrollOffset(), kProgrammaticScroll); |
326 | 326 |
327 root_frame_viewport->ScrollIntoView(LayoutRect(50, 75, 50, 75), | 327 root_frame_viewport->ScrollIntoView( |
328 ScrollAlignment::kAlignToEdgeIfNeeded, | 328 LayoutRect(50, 75, 50, 75), ScrollAlignment::kAlignToEdgeIfNeeded, |
329 ScrollAlignment::kAlignToEdgeIfNeeded); | 329 ScrollAlignment::kAlignToEdgeIfNeeded, false); |
330 EXPECT_SIZE_EQ(ScrollOffset(0, 0), layout_viewport->GetScrollOffset()); | 330 EXPECT_SIZE_EQ(ScrollOffset(0, 0), layout_viewport->GetScrollOffset()); |
331 EXPECT_SIZE_EQ(ScrollOffset(50, 75), visual_viewport->GetScrollOffset()); | 331 EXPECT_SIZE_EQ(ScrollOffset(50, 75), visual_viewport->GetScrollOffset()); |
332 | 332 |
333 root_frame_viewport->ScrollIntoView(LayoutRect(190, 290, 10, 10), | 333 root_frame_viewport->ScrollIntoView( |
334 ScrollAlignment::kAlignToEdgeIfNeeded, | 334 LayoutRect(190, 290, 10, 10), ScrollAlignment::kAlignToEdgeIfNeeded, |
335 ScrollAlignment::kAlignToEdgeIfNeeded); | 335 ScrollAlignment::kAlignToEdgeIfNeeded, false); |
336 EXPECT_SIZE_EQ(ScrollOffset(100, 150), layout_viewport->GetScrollOffset()); | 336 EXPECT_SIZE_EQ(ScrollOffset(100, 150), layout_viewport->GetScrollOffset()); |
337 EXPECT_SIZE_EQ(ScrollOffset(50, 75), visual_viewport->GetScrollOffset()); | 337 EXPECT_SIZE_EQ(ScrollOffset(50, 75), visual_viewport->GetScrollOffset()); |
338 | 338 |
339 // Scrolling into view the viewport rect itself should be a no-op. | 339 // Scrolling into view the viewport rect itself should be a no-op. |
340 visual_viewport->SetViewportSize(IntSize(100, 100)); | 340 visual_viewport->SetViewportSize(IntSize(100, 100)); |
341 visual_viewport->SetScale(1.5f); | 341 visual_viewport->SetScale(1.5f); |
342 visual_viewport->SetScrollOffset(ScrollOffset(0, 10), kProgrammaticScroll); | 342 visual_viewport->SetScrollOffset(ScrollOffset(0, 10), kProgrammaticScroll); |
343 layout_viewport->SetScrollOffset(ScrollOffset(50, 50), kProgrammaticScroll); | 343 layout_viewport->SetScrollOffset(ScrollOffset(50, 50), kProgrammaticScroll); |
344 root_frame_viewport->SetScrollOffset(root_frame_viewport->GetScrollOffset(), | 344 root_frame_viewport->SetScrollOffset(root_frame_viewport->GetScrollOffset(), |
345 kProgrammaticScroll); | 345 kProgrammaticScroll); |
346 | 346 |
347 root_frame_viewport->ScrollIntoView( | 347 root_frame_viewport->ScrollIntoView( |
348 LayoutRect(root_frame_viewport->VisibleContentRect(kExcludeScrollbars)), | 348 LayoutRect(root_frame_viewport->VisibleContentRect(kExcludeScrollbars)), |
349 ScrollAlignment::kAlignToEdgeIfNeeded, | 349 ScrollAlignment::kAlignToEdgeIfNeeded, |
350 ScrollAlignment::kAlignToEdgeIfNeeded); | 350 ScrollAlignment::kAlignToEdgeIfNeeded, false); |
351 EXPECT_SIZE_EQ(ScrollOffset(50, 50), layout_viewport->GetScrollOffset()); | 351 EXPECT_SIZE_EQ(ScrollOffset(50, 50), layout_viewport->GetScrollOffset()); |
352 EXPECT_SIZE_EQ(ScrollOffset(0, 10), visual_viewport->GetScrollOffset()); | 352 EXPECT_SIZE_EQ(ScrollOffset(0, 10), visual_viewport->GetScrollOffset()); |
353 | 353 |
354 root_frame_viewport->ScrollIntoView( | 354 root_frame_viewport->ScrollIntoView( |
355 LayoutRect(root_frame_viewport->VisibleContentRect(kExcludeScrollbars)), | 355 LayoutRect(root_frame_viewport->VisibleContentRect(kExcludeScrollbars)), |
356 ScrollAlignment::kAlignCenterAlways, ScrollAlignment::kAlignCenterAlways); | 356 ScrollAlignment::kAlignCenterAlways, ScrollAlignment::kAlignCenterAlways, |
| 357 false); |
357 EXPECT_SIZE_EQ(ScrollOffset(50, 50), layout_viewport->GetScrollOffset()); | 358 EXPECT_SIZE_EQ(ScrollOffset(50, 50), layout_viewport->GetScrollOffset()); |
358 EXPECT_SIZE_EQ(ScrollOffset(0, 10), visual_viewport->GetScrollOffset()); | 359 EXPECT_SIZE_EQ(ScrollOffset(0, 10), visual_viewport->GetScrollOffset()); |
359 | 360 |
360 root_frame_viewport->ScrollIntoView( | 361 root_frame_viewport->ScrollIntoView( |
361 LayoutRect(root_frame_viewport->VisibleContentRect(kExcludeScrollbars)), | 362 LayoutRect(root_frame_viewport->VisibleContentRect(kExcludeScrollbars)), |
362 ScrollAlignment::kAlignTopAlways, ScrollAlignment::kAlignTopAlways); | 363 ScrollAlignment::kAlignTopAlways, ScrollAlignment::kAlignTopAlways, |
| 364 false); |
363 EXPECT_SIZE_EQ(ScrollOffset(50, 50), layout_viewport->GetScrollOffset()); | 365 EXPECT_SIZE_EQ(ScrollOffset(50, 50), layout_viewport->GetScrollOffset()); |
364 EXPECT_SIZE_EQ(ScrollOffset(0, 10), visual_viewport->GetScrollOffset()); | 366 EXPECT_SIZE_EQ(ScrollOffset(0, 10), visual_viewport->GetScrollOffset()); |
365 } | 367 } |
366 | 368 |
367 // Tests that the setScrollOffset method works correctly with both viewports. | 369 // Tests that the setScrollOffset method works correctly with both viewports. |
368 TEST_F(RootFrameViewportTest, SetScrollOffset) { | 370 TEST_F(RootFrameViewportTest, SetScrollOffset) { |
369 IntSize viewport_size(500, 500); | 371 IntSize viewport_size(500, 500); |
370 RootFrameViewStub* layout_viewport = | 372 RootFrameViewStub* layout_viewport = |
371 RootFrameViewStub::Create(viewport_size, IntSize(1000, 2000)); | 373 RootFrameViewStub::Create(viewport_size, IntSize(1000, 2000)); |
372 VisualViewportStub* visual_viewport = | 374 VisualViewportStub* visual_viewport = |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
488 EXPECT_SIZE_EQ(ScrollOffset(150, 150), alternate_scroller->GetScrollOffset()); | 490 EXPECT_SIZE_EQ(ScrollOffset(150, 150), alternate_scroller->GetScrollOffset()); |
489 EXPECT_SIZE_EQ(ScrollOffset(200, 200), | 491 EXPECT_SIZE_EQ(ScrollOffset(200, 200), |
490 root_frame_viewport->GetScrollOffset()); | 492 root_frame_viewport->GetScrollOffset()); |
491 EXPECT_SIZE_EQ(ScrollOffset(50, 50), layout_viewport->GetScrollOffset()); | 493 EXPECT_SIZE_EQ(ScrollOffset(50, 50), layout_viewport->GetScrollOffset()); |
492 | 494 |
493 EXPECT_SIZE_EQ(ScrollOffset(550, 450), | 495 EXPECT_SIZE_EQ(ScrollOffset(550, 450), |
494 root_frame_viewport->MaximumScrollOffset()); | 496 root_frame_viewport->MaximumScrollOffset()); |
495 } | 497 } |
496 | 498 |
497 } // namespace blink | 499 } // namespace blink |
OLD | NEW |