| 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 |