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

Side by Side Diff: content/browser/web_contents/aura/window_slider_unittest.cc

Issue 291843012: compositor: Tick the UI animations from cc, instead of from timer callbacks. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 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 | Annotate | Revision Log
« no previous file with comments | « ash/wm/window_animations_unittest.cc ('k') | ui/aura/window.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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 "content/browser/web_contents/aura/window_slider.h" 5 #include "content/browser/web_contents/aura/window_slider.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/time/time.h" 8 #include "base/time/time.h"
9 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
10 #include "ui/aura/test/aura_test_base.h" 10 #include "ui/aura/test/aura_test_base.h"
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 // Tests that the window slide can continue after it is interrupted by another 334 // Tests that the window slide can continue after it is interrupted by another
335 // event if the user continues scrolling. 335 // event if the user continues scrolling.
336 TEST_F(WindowSliderTest, WindowSlideInterruptedThenContinues) { 336 TEST_F(WindowSliderTest, WindowSlideInterruptedThenContinues) {
337 scoped_ptr<aura::Window> window(CreateNormalWindow(0, root_window(), NULL)); 337 scoped_ptr<aura::Window> window(CreateNormalWindow(0, root_window(), NULL));
338 window->SetBounds(gfx::Rect(0, 0, 400, 400)); 338 window->SetBounds(gfx::Rect(0, 0, 400, 400));
339 WindowSliderDelegateTest slider_delegate; 339 WindowSliderDelegateTest slider_delegate;
340 340
341 ui::ScopedAnimationDurationScaleMode normal_duration_( 341 ui::ScopedAnimationDurationScaleMode normal_duration_(
342 ui::ScopedAnimationDurationScaleMode::NORMAL_DURATION); 342 ui::ScopedAnimationDurationScaleMode::NORMAL_DURATION);
343 ui::LayerAnimator* animator = window->layer()->GetAnimator(); 343 ui::LayerAnimator* animator = window->layer()->GetAnimator();
344 gfx::AnimationContainerElement* element = animator;
345 animator->set_disable_timer_for_test(true); 344 animator->set_disable_timer_for_test(true);
346 ui::LayerAnimatorTestController test_controller(animator); 345 ui::LayerAnimatorTestController test_controller(animator);
347 346
348 WindowSlider* slider = 347 WindowSlider* slider =
349 new WindowSlider(&slider_delegate, root_window(), window.get()); 348 new WindowSlider(&slider_delegate, root_window(), window.get());
350 349
351 ui::MouseEvent interrupt_event(ui::ET_MOUSE_MOVED, 350 ui::MouseEvent interrupt_event(ui::ET_MOUSE_MOVED,
352 gfx::Point(55, 10), 351 gfx::Point(55, 10),
353 gfx::Point(55, 10), 352 gfx::Point(55, 10),
354 0, 0); 353 0, 0);
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
421 EXPECT_TRUE(animator->is_animating()); 420 EXPECT_TRUE(animator->is_animating());
422 EXPECT_TRUE(slider_delegate.slide_completing()); 421 EXPECT_TRUE(slider_delegate.slide_completing());
423 EXPECT_FALSE(slider_delegate.created_front_layer()); 422 EXPECT_FALSE(slider_delegate.created_front_layer());
424 EXPECT_FALSE(slider_delegate.slide_completed()); 423 EXPECT_FALSE(slider_delegate.slide_completed());
425 EXPECT_FALSE(slider_delegate.slider_destroyed()); 424 EXPECT_FALSE(slider_delegate.slider_destroyed());
426 425
427 // Progress the animator to complete the slide animation. 426 // Progress the animator to complete the slide animation.
428 ui::ScopedLayerAnimationSettings settings(animator); 427 ui::ScopedLayerAnimationSettings settings(animator);
429 base::TimeDelta duration = settings.GetTransitionDuration(); 428 base::TimeDelta duration = settings.GetTransitionDuration();
430 test_controller.StartThreadedAnimationsIfNeeded(); 429 test_controller.StartThreadedAnimationsIfNeeded();
431 element->Step(gfx::FrameTime::Now() + duration); 430 animator->Step(gfx::FrameTime::Now() + duration);
432 431
433 EXPECT_TRUE(slider_delegate.slide_completed()); 432 EXPECT_TRUE(slider_delegate.slide_completed());
434 EXPECT_FALSE(slider_delegate.slider_destroyed()); 433 EXPECT_FALSE(slider_delegate.slider_destroyed());
435 434
436 window.reset(); 435 window.reset();
437 EXPECT_TRUE(slider_delegate.slider_destroyed()); 436 EXPECT_TRUE(slider_delegate.slider_destroyed());
438 } 437 }
439 438
440 // Tests that the slide works correctly when the owner of the window changes 439 // Tests that the slide works correctly when the owner of the window changes
441 // during the duration of the slide. 440 // during the duration of the slide.
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
589 // the first swipe, ask the delegate to create a new layer, and animate it. 588 // the first swipe, ask the delegate to create a new layer, and animate it.
590 TEST_F(WindowSliderTest, SwipeDuringSwipeAnimation) { 589 TEST_F(WindowSliderTest, SwipeDuringSwipeAnimation) {
591 scoped_ptr<aura::Window> window(CreateNormalWindow(0, root_window(), NULL)); 590 scoped_ptr<aura::Window> window(CreateNormalWindow(0, root_window(), NULL));
592 window->SetBounds(gfx::Rect(0, 0, 400, 400)); 591 window->SetBounds(gfx::Rect(0, 0, 400, 400));
593 WindowSliderDelegateTest slider_delegate; 592 WindowSliderDelegateTest slider_delegate;
594 new WindowSlider(&slider_delegate, root_window(), window.get()); 593 new WindowSlider(&slider_delegate, root_window(), window.get());
595 594
596 ui::ScopedAnimationDurationScaleMode normal_duration_( 595 ui::ScopedAnimationDurationScaleMode normal_duration_(
597 ui::ScopedAnimationDurationScaleMode::NORMAL_DURATION); 596 ui::ScopedAnimationDurationScaleMode::NORMAL_DURATION);
598 ui::LayerAnimator* animator = window->layer()->GetAnimator(); 597 ui::LayerAnimator* animator = window->layer()->GetAnimator();
599 gfx::AnimationContainerElement* element = animator;
600 animator->set_disable_timer_for_test(true); 598 animator->set_disable_timer_for_test(true);
601 ui::LayerAnimatorTestController test_controller(animator); 599 ui::LayerAnimatorTestController test_controller(animator);
602 600
603 aura::test::EventGenerator generator(root_window()); 601 aura::test::EventGenerator generator(root_window());
604 602
605 // Swipe forward so that |window|'s layer is the one animating. 603 // Swipe forward so that |window|'s layer is the one animating.
606 generator.GestureScrollSequence( 604 generator.GestureScrollSequence(
607 gfx::Point(10, 10), 605 gfx::Point(10, 10),
608 gfx::Point(180, 10), 606 gfx::Point(180, 10),
609 base::TimeDelta::FromMilliseconds(10), 607 base::TimeDelta::FromMilliseconds(10),
610 2); 608 2);
611 EXPECT_TRUE(slider_delegate.created_back_layer()); 609 EXPECT_TRUE(slider_delegate.created_back_layer());
612 EXPECT_FALSE(slider_delegate.slide_aborted()); 610 EXPECT_FALSE(slider_delegate.slide_aborted());
613 EXPECT_FALSE(slider_delegate.created_front_layer()); 611 EXPECT_FALSE(slider_delegate.created_front_layer());
614 EXPECT_TRUE(slider_delegate.slide_completing()); 612 EXPECT_TRUE(slider_delegate.slide_completing());
615 EXPECT_FALSE(slider_delegate.slide_completed()); 613 EXPECT_FALSE(slider_delegate.slide_completed());
616 EXPECT_FALSE(slider_delegate.slider_destroyed()); 614 EXPECT_FALSE(slider_delegate.slider_destroyed());
617 ui::ScopedLayerAnimationSettings settings(animator); 615 ui::ScopedLayerAnimationSettings settings(animator);
618 base::TimeDelta duration = settings.GetTransitionDuration(); 616 base::TimeDelta duration = settings.GetTransitionDuration();
619 test_controller.StartThreadedAnimationsIfNeeded(); 617 test_controller.StartThreadedAnimationsIfNeeded();
620 base::TimeTicks start_time1 = gfx::FrameTime::Now(); 618 base::TimeTicks start_time1 = gfx::FrameTime::Now();
621 619
622 element->Step(start_time1 + duration/2); 620 animator->Step(start_time1 + duration / 2);
623 EXPECT_FALSE(slider_delegate.slide_completed()); 621 EXPECT_FALSE(slider_delegate.slide_completed());
624 slider_delegate.Reset(); 622 slider_delegate.Reset();
625 // Generate another horizontal swipe while the animation from the previous 623 // Generate another horizontal swipe while the animation from the previous
626 // swipe is in progress. 624 // swipe is in progress.
627 generator.GestureScrollSequence( 625 generator.GestureScrollSequence(
628 gfx::Point(10, 10), 626 gfx::Point(10, 10),
629 gfx::Point(180, 10), 627 gfx::Point(180, 10),
630 base::TimeDelta::FromMilliseconds(10), 628 base::TimeDelta::FromMilliseconds(10),
631 2); 629 2);
632 // Performing the second swipe should instantly complete the slide started 630 // Performing the second swipe should instantly complete the slide started
633 // by the first swipe and create a new layer. 631 // by the first swipe and create a new layer.
634 EXPECT_TRUE(slider_delegate.created_back_layer()); 632 EXPECT_TRUE(slider_delegate.created_back_layer());
635 EXPECT_FALSE(slider_delegate.slide_aborted()); 633 EXPECT_FALSE(slider_delegate.slide_aborted());
636 EXPECT_FALSE(slider_delegate.created_front_layer()); 634 EXPECT_FALSE(slider_delegate.created_front_layer());
637 EXPECT_TRUE(slider_delegate.slide_completing()); 635 EXPECT_TRUE(slider_delegate.slide_completing());
638 EXPECT_TRUE(slider_delegate.slide_completed()); 636 EXPECT_TRUE(slider_delegate.slide_completed());
639 EXPECT_FALSE(slider_delegate.slider_destroyed()); 637 EXPECT_FALSE(slider_delegate.slider_destroyed());
640 test_controller.StartThreadedAnimationsIfNeeded(); 638 test_controller.StartThreadedAnimationsIfNeeded();
641 base::TimeTicks start_time2 = gfx::FrameTime::Now(); 639 base::TimeTicks start_time2 = gfx::FrameTime::Now();
642 slider_delegate.Reset(); 640 slider_delegate.Reset();
643 element->Step(start_time2 + duration); 641 animator->Step(start_time2 + duration);
644 // The animation for the second slide should now be completed. 642 // The animation for the second slide should now be completed.
645 EXPECT_TRUE(slider_delegate.slide_completed()); 643 EXPECT_TRUE(slider_delegate.slide_completed());
646 slider_delegate.Reset(); 644 slider_delegate.Reset();
647 645
648 window.reset(); 646 window.reset();
649 EXPECT_TRUE(slider_delegate.slider_destroyed()); 647 EXPECT_TRUE(slider_delegate.slider_destroyed());
650 } 648 }
651 649
652 } // namespace content 650 } // namespace content
OLDNEW
« no previous file with comments | « ash/wm/window_animations_unittest.cc ('k') | ui/aura/window.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698