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

Side by Side Diff: cc/trees/layer_tree_host_unittest_animation.cc

Issue 19106007: cc: Allow the main thread to cancel commits (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix scheduler tests Created 7 years, 5 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
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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 "cc/trees/layer_tree_host.h" 5 #include "cc/trees/layer_tree_host.h"
6 6
7 #include "cc/animation/animation_curve.h" 7 #include "cc/animation/animation_curve.h"
8 #include "cc/animation/layer_animation_controller.h" 8 #include "cc/animation/layer_animation_controller.h"
9 #include "cc/animation/timing_function.h" 9 #include "cc/animation/timing_function.h"
10 #include "cc/layers/layer.h" 10 #include "cc/layers/layer.h"
11 #include "cc/layers/layer_impl.h" 11 #include "cc/layers/layer_impl.h"
12 #include "cc/test/animation_test_common.h" 12 #include "cc/test/animation_test_common.h"
13 #include "cc/test/fake_content_layer.h" 13 #include "cc/test/fake_content_layer.h"
14 #include "cc/test/fake_content_layer_client.h" 14 #include "cc/test/fake_content_layer_client.h"
15 #include "cc/test/layer_tree_test.h" 15 #include "cc/test/layer_tree_test.h"
16 #include "cc/trees/layer_tree_impl.h" 16 #include "cc/trees/layer_tree_impl.h"
17 17
18 namespace cc { 18 namespace cc {
19 namespace { 19 namespace {
20 20
21 class AlwaysUpdateLayer : public Layer {
22 public:
23 static scoped_refptr<AlwaysUpdateLayer> Create() {
24 return new AlwaysUpdateLayer();
25 }
26
27 virtual bool DrawsContent() const OVERRIDE { return true; }
28 virtual bool Update(ResourceUpdateQueue* queue,
29 const OcclusionTracker* occlusion) OVERRIDE {
30 return true;
danakj 2013/07/17 20:53:24 Why do you need update to force commit for these t
enne (OOO) 2013/07/18 17:36:37 Thanks for calling this out. I dug into this furt
31 }
32
33 private:
34 AlwaysUpdateLayer() {}
35 virtual ~AlwaysUpdateLayer() {}
36 };
37
21 class LayerTreeHostAnimationTest : public LayerTreeTest { 38 class LayerTreeHostAnimationTest : public LayerTreeTest {
22 public: 39 public:
23 virtual void SetupTree() OVERRIDE { 40 virtual void SetupTree() OVERRIDE {
41 scoped_refptr<AlwaysUpdateLayer> root_layer = AlwaysUpdateLayer::Create();
42 root_layer->SetBounds(gfx::Size(1, 1));
43 root_layer->SetIsDrawable(true);
44 root_layer->SetScrollable(true);
45 layer_tree_host()->SetRootLayer(root_layer);
46
24 LayerTreeTest::SetupTree(); 47 LayerTreeTest::SetupTree();
25 layer_tree_host()->root_layer()->set_layer_animation_delegate(this); 48 layer_tree_host()->root_layer()->set_layer_animation_delegate(this);
26 } 49 }
27 }; 50 };
28 51
29 // Makes sure that SetNeedsAnimate does not cause the CommitRequested() state to 52 // Makes sure that SetNeedsAnimate does not cause the CommitRequested() state to
30 // be set. 53 // be set.
31 class LayerTreeHostAnimationTestSetNeedsAnimateShouldNotSetCommitRequested 54 class LayerTreeHostAnimationTestSetNeedsAnimateShouldNotSetCommitRequested
32 : public LayerTreeHostAnimationTest { 55 : public LayerTreeHostAnimationTest {
33 public: 56 public:
(...skipping 404 matching lines...) Expand 10 before | Expand all | Expand 10 after
438 // Ensures that when opacity is being animated, this value does not cause the 461 // Ensures that when opacity is being animated, this value does not cause the
439 // subtree to be skipped. 462 // subtree to be skipped.
440 class LayerTreeHostAnimationTestDoNotSkipLayersWithAnimatedOpacity 463 class LayerTreeHostAnimationTestDoNotSkipLayersWithAnimatedOpacity
441 : public LayerTreeHostAnimationTest { 464 : public LayerTreeHostAnimationTest {
442 public: 465 public:
443 LayerTreeHostAnimationTestDoNotSkipLayersWithAnimatedOpacity() 466 LayerTreeHostAnimationTestDoNotSkipLayersWithAnimatedOpacity()
444 : update_check_layer_(FakeContentLayer::Create(&client_)) { 467 : update_check_layer_(FakeContentLayer::Create(&client_)) {
445 } 468 }
446 469
447 virtual void SetupTree() OVERRIDE { 470 virtual void SetupTree() OVERRIDE {
471 LayerTreeHostAnimationTest::SetupTree();
448 update_check_layer_->SetOpacity(0.f); 472 update_check_layer_->SetOpacity(0.f);
449 layer_tree_host()->SetRootLayer(update_check_layer_); 473 layer_tree_host()->root_layer()->AddChild(update_check_layer_);
450 LayerTreeHostAnimationTest::SetupTree();
451 } 474 }
452 475
453 virtual void BeginTest() OVERRIDE { 476 virtual void BeginTest() OVERRIDE {
454 PostAddAnimationToMainThread(update_check_layer_.get()); 477 PostAddAnimationToMainThread(update_check_layer_.get());
455 } 478 }
456 479
457 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { 480 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) OVERRIDE {
481 LayerImpl* update_check_layer_impl =
482 host_impl->active_tree()->LayerById(update_check_layer_->id());
458 LayerAnimationController* controller_impl = 483 LayerAnimationController* controller_impl =
459 host_impl->active_tree()->root_layer()->layer_animation_controller(); 484 update_check_layer_impl->layer_animation_controller();
460 Animation* animation_impl = 485 Animation* animation_impl =
461 controller_impl->GetAnimation(Animation::Opacity); 486 controller_impl->GetAnimation(Animation::Opacity);
462 controller_impl->RemoveAnimation(animation_impl->id()); 487 controller_impl->RemoveAnimation(animation_impl->id());
463 EndTest(); 488 EndTest();
464 } 489 }
465 490
466 virtual void AfterTest() OVERRIDE { 491 virtual void DidCommit() OVERRIDE {
467 // Update() should have been called once, proving that the layer was not 492 // Update() should have been called once, proving that the layer was not
468 // skipped. 493 // skipped.
469 EXPECT_EQ(1u, update_check_layer_->update_count()); 494 EXPECT_EQ(1u, update_check_layer_->update_count());
495 update_check_layer_->reset_update_count();
danakj 2013/07/17 20:53:24 Are you seeing more updates now than we were befor
enne (OOO) 2013/07/18 17:36:37 Yeah, this was the result of ignoring the ignore s
496 }
470 497
471 // clear update_check_layer_ so LayerTreeHost dies. 498 virtual void AfterTest() OVERRIDE {}
472 update_check_layer_ = NULL;
473 }
474 499
475 private: 500 private:
476 FakeContentLayerClient client_; 501 FakeContentLayerClient client_;
477 scoped_refptr<FakeContentLayer> update_check_layer_; 502 scoped_refptr<FakeContentLayer> update_check_layer_;
478 }; 503 };
479 504
480 SINGLE_AND_MULTI_THREAD_TEST_F( 505 SINGLE_AND_MULTI_THREAD_TEST_F(
481 LayerTreeHostAnimationTestDoNotSkipLayersWithAnimatedOpacity); 506 LayerTreeHostAnimationTestDoNotSkipLayersWithAnimatedOpacity);
482 507
483 // Layers added to tree with existing active animations should have the 508 // Layers added to tree with existing active animations should have the
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after
795 int finished_times_; 820 int finished_times_;
796 FakeContentLayerClient client_; 821 FakeContentLayerClient client_;
797 scoped_refptr<FakeContentLayer> content_; 822 scoped_refptr<FakeContentLayer> content_;
798 }; 823 };
799 824
800 MULTI_THREAD_TEST_F( 825 MULTI_THREAD_TEST_F(
801 LayerTreeHostAnimationTestCheckerboardDoesntStartAnimations); 826 LayerTreeHostAnimationTestCheckerboardDoesntStartAnimations);
802 827
803 } // namespace 828 } // namespace
804 } // namespace cc 829 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698