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

Side by Side Diff: third_party/WebKit/Source/core/frame/RootFrameViewportTest.cpp

Issue 2650343008: Implement Element.scrollIntoView for scroll-behavior: smooth. (Closed)
Patch Set: Fixed nits. Created 3 years, 6 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 // 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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698