| Index: cc/test/layer_tree_test.cc
|
| diff --git a/cc/test/layer_tree_test.cc b/cc/test/layer_tree_test.cc
|
| index d6411ecdef251d0dfbcef17cf7cd529bc1ff7d0c..0d65961b85f3cd4c5fbd84c1c8a74dbedf44ca81 100644
|
| --- a/cc/test/layer_tree_test.cc
|
| +++ b/cc/test/layer_tree_test.cc
|
| @@ -61,7 +61,11 @@ class ExternalBeginFrameSourceForTest
|
| explicit ExternalBeginFrameSourceForTest(double refresh_rate)
|
| : milliseconds_per_frame_(1000.0 / refresh_rate),
|
| is_ready_(false),
|
| + needs_begin_frames_(false),
|
| weak_ptr_factory_(this) {
|
| + test_on_begin_frame_closure_ = base::Bind(
|
| + &ExternalBeginFrameSourceForTest::TestOnBeginFrame,
|
| + weak_ptr_factory_.GetWeakPtr());
|
| DetachFromThread();
|
| }
|
|
|
| @@ -71,13 +75,10 @@ class ExternalBeginFrameSourceForTest
|
|
|
| void OnNeedsBeginFramesChange(bool needs_begin_frames) override {
|
| DCHECK(CalledOnValidThread());
|
| - if (needs_begin_frames) {
|
| - base::MessageLoop::current()->PostDelayedTask(
|
| - FROM_HERE,
|
| - base::Bind(&ExternalBeginFrameSourceForTest::TestOnBeginFrame,
|
| - weak_ptr_factory_.GetWeakPtr()),
|
| - base::TimeDelta::FromMilliseconds(milliseconds_per_frame_));
|
| - }
|
| + if (needs_begin_frames_ == needs_begin_frames)
|
| + return;
|
| + needs_begin_frames_ = needs_begin_frames;
|
| + ScheduleBeginFrameIfNeeded();
|
| }
|
|
|
| void SetClientReady() override {
|
| @@ -92,11 +93,24 @@ class ExternalBeginFrameSourceForTest
|
| void TestOnBeginFrame() {
|
| DCHECK(CalledOnValidThread());
|
| CallOnBeginFrame(CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE));
|
| + ScheduleBeginFrameIfNeeded();
|
| + }
|
| +
|
| + void ScheduleBeginFrameIfNeeded() {
|
| + test_on_begin_frame_task_.Cancel();
|
| + test_on_begin_frame_task_.Reset(test_on_begin_frame_closure_);
|
| + if (needs_begin_frames_)
|
| + base::MessageLoop::current()->PostDelayedTask(FROM_HERE,
|
| + test_on_begin_frame_task_.callback(),
|
| + base::TimeDelta::FromMilliseconds(milliseconds_per_frame_));
|
| }
|
|
|
| private:
|
| double milliseconds_per_frame_;
|
| bool is_ready_;
|
| + bool needs_begin_frames_;
|
| + base::Closure test_on_begin_frame_closure_;
|
| + base::CancelableClosure test_on_begin_frame_task_;
|
| base::WeakPtrFactory<ExternalBeginFrameSourceForTest> weak_ptr_factory_;
|
| };
|
|
|
| @@ -158,6 +172,11 @@ class ThreadProxyForTest : public ThreadProxy {
|
| test_hooks_->ScheduledActionPrepareTiles();
|
| }
|
|
|
| + void ScheduledActionInvalidateOutputSurface() override {
|
| + ThreadProxy::ScheduledActionInvalidateOutputSurface();
|
| + test_hooks_->ScheduledActionInvalidateOutputSurface();
|
| + }
|
| +
|
| ThreadProxyForTest(
|
| TestHooks* test_hooks,
|
| LayerTreeHost* host,
|
|
|