summaryrefslogtreecommitdiffstats
path: root/cc/test/layer_tree_test.cc
diff options
context:
space:
mode:
authornkostylev@chromium.org <nkostylev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-28 17:57:32 +0000
committernkostylev@chromium.org <nkostylev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-28 17:57:32 +0000
commitdfbded2d19eea373728491177ddfab62f79b6bce (patch)
treee74919f3d6124e47f7aa670c1c8386042226d910 /cc/test/layer_tree_test.cc
parenta02439a8031557d1201383ff170aef4869996cbd (diff)
downloadchromium_src-dfbded2d19eea373728491177ddfab62f79b6bce.zip
chromium_src-dfbded2d19eea373728491177ddfab62f79b6bce.tar.gz
chromium_src-dfbded2d19eea373728491177ddfab62f79b6bce.tar.bz2
Revert 280493 "Make SingleThreadProxy a SchedulerClient"
Reason for revert: Check if this CL breaks TouchActionBrowserTest.TouchActionNone test http://goo.gl/pwdNwL Also it was reported that this CL causing a number of crashes on the blink bots, e.g., http://build.chromium.org/p/tryserver.blink/builders/linux_blink_rel > Make SingleThreadProxy a SchedulerClient > > This makes ui::Compositor no longer in charge of > scheduling commits and draws, deferring it to cc::Scheduler. > > BUG=329552, 287250 > > Review URL: https://codereview.chromium.org/134623005 TBR=enne@chromium.org Review URL: https://codereview.chromium.org/359103004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@280521 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/test/layer_tree_test.cc')
-rw-r--r--cc/test/layer_tree_test.cc48
1 files changed, 46 insertions, 2 deletions
diff --git a/cc/test/layer_tree_test.cc b/cc/test/layer_tree_test.cc
index a680441..3437f8c 100644
--- a/cc/test/layer_tree_test.cc
+++ b/cc/test/layer_tree_test.cc
@@ -321,6 +321,14 @@ class LayerTreeHostClientForTesting : public LayerTreeHostClient,
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 @@ LayerTreeTest::LayerTreeTest()
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 @@ void LayerTreeTest::Timeout() {
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::DispatchSetNeedsRedrawRect(const gfx::Rect& damage_rect) {
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() {
@@ -617,6 +643,24 @@ void LayerTreeTest::DispatchSetNextCommitForcesRedraw() {
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,
bool delegating_renderer,
bool impl_side_painting) {