Index: cc/test/layer_tree_test.cc |
diff --git a/cc/test/layer_tree_test.cc b/cc/test/layer_tree_test.cc |
index a680441f3cf8dbfc7a73c9eb37553824df47616e..3437f8c9e20aadf0766ea0c7f29964a8556fd2ea 100644 |
--- a/cc/test/layer_tree_test.cc |
+++ b/cc/test/layer_tree_test.cc |
@@ -321,6 +321,14 @@ |
test_hooks_->DidCompleteSwapBuffers(); |
} |
+ virtual void ScheduleComposite() OVERRIDE { |
+ test_hooks_->ScheduleComposite(); |
+ } |
+ |
+ virtual void ScheduleAnimation() OVERRIDE { |
+ test_hooks_->ScheduleAnimation(); |
+ } |
+ |
virtual void DidPostSwapBuffers() OVERRIDE {} |
virtual void DidAbortSwapBuffers() OVERRIDE {} |
@@ -393,6 +401,7 @@ |
end_when_begin_returns_(false), |
timed_out_(false), |
scheduled_(false), |
+ schedule_when_set_visible_true_(false), |
started_(false), |
ended_(false), |
delegating_renderer_(false), |
@@ -555,6 +564,15 @@ |
EndTest(); |
} |
+void LayerTreeTest::ScheduleComposite() { |
+ if (!started_ || scheduled_) |
+ return; |
+ scheduled_ = true; |
+ main_task_runner_->PostTask( |
+ FROM_HERE, |
+ base::Bind(&LayerTreeTest::DispatchComposite, main_thread_weak_ptr_)); |
+} |
+ |
void LayerTreeTest::RealEndTest() { |
if (layer_tree_host_ && proxy()->CommitPendingForTesting()) { |
main_task_runner_->PostTask( |
@@ -606,8 +624,16 @@ |
void LayerTreeTest::DispatchSetVisible(bool visible) { |
DCHECK(!proxy() || proxy()->IsMainThread()); |
- if (layer_tree_host_) |
- layer_tree_host_->SetVisible(visible); |
+ |
+ if (!layer_tree_host_) |
+ return; |
+ |
+ layer_tree_host_->SetVisible(visible); |
+ |
+ // If the LTH is being made visible and a previous ScheduleComposite() was |
+ // deferred because the LTH was not visible, re-schedule the composite now. |
+ if (layer_tree_host_->visible() && schedule_when_set_visible_true_) |
+ ScheduleComposite(); |
} |
void LayerTreeTest::DispatchSetNextCommitForcesRedraw() { |
@@ -615,6 +641,24 @@ |
if (layer_tree_host_) |
layer_tree_host_->SetNextCommitForcesRedraw(); |
+} |
+ |
+void LayerTreeTest::DispatchComposite() { |
+ scheduled_ = false; |
+ |
+ if (!layer_tree_host_) |
+ return; |
+ |
+ // If the LTH is not visible, defer the composite until the LTH is made |
+ // visible. |
+ if (!layer_tree_host_->visible()) { |
+ schedule_when_set_visible_true_ = true; |
+ return; |
+ } |
+ |
+ schedule_when_set_visible_true_ = false; |
+ base::TimeTicks now = gfx::FrameTime::Now(); |
+ layer_tree_host_->Composite(now); |
} |
void LayerTreeTest::RunTest(bool threaded, |