summaryrefslogtreecommitdiffstats
path: root/cc/scheduler/scheduler_unittest.cc
diff options
context:
space:
mode:
authordanakj@chromium.org <danakj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-24 23:08:37 +0000
committerdanakj@chromium.org <danakj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-24 23:08:37 +0000
commit83fcab4fe5c04ef3bfe0d77c85d4c674c67ee68e (patch)
treec58033ba25ef11290c953793065e468f0dc1198d /cc/scheduler/scheduler_unittest.cc
parent30d75a0b476c8cefb2c5e46ce9c65e737ca3adfc (diff)
downloadchromium_src-83fcab4fe5c04ef3bfe0d77c85d4c674c67ee68e.zip
chromium_src-83fcab4fe5c04ef3bfe0d77c85d4c674c67ee68e.tar.gz
chromium_src-83fcab4fe5c04ef3bfe0d77c85d4c674c67ee68e.tar.bz2
cc: Add a SchedulerTest for acquire layer textures.
This test verifies that acquiring layer textures causes a commit and prevents drawing until the commit happens. R=jamesr, piman BUG=243311 Review URL: https://chromiumcodereview.appspot.com/15962005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@202218 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/scheduler/scheduler_unittest.cc')
-rw-r--r--cc/scheduler/scheduler_unittest.cc58
1 files changed, 58 insertions, 0 deletions
diff --git a/cc/scheduler/scheduler_unittest.cc b/cc/scheduler/scheduler_unittest.cc
index 5f5551d..68aecaf 100644
--- a/cc/scheduler/scheduler_unittest.cc
+++ b/cc/scheduler/scheduler_unittest.cc
@@ -210,6 +210,64 @@ TEST(SchedulerTest, RequestCommitAfterBeginFrameSentToMainThread) {
client.Reset();
}
+TEST(SchedulerTest, TextureAcquisitionCausesCommitInsteadOfDraw) {
+ FakeSchedulerClient client;
+ scoped_refptr<FakeTimeSource> time_source(new FakeTimeSource());
+ SchedulerSettings default_scheduler_settings;
+ Scheduler* scheduler = client.CreateScheduler(
+ make_scoped_ptr(new FrameRateController(time_source)),
+ default_scheduler_settings);
+ scheduler->SetCanStart();
+ scheduler->SetVisible(true);
+ scheduler->SetCanDraw(true);
+
+ EXPECT_SINGLE_ACTION("ScheduledActionBeginOutputSurfaceCreation", client);
+ client.Reset();
+ scheduler->DidCreateAndInitializeOutputSurface();
+
+ scheduler->SetNeedsRedraw();
+ EXPECT_TRUE(scheduler->RedrawPending());
+ EXPECT_TRUE(time_source->Active());
+
+ time_source->Tick();
+ EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client, 0, 1);
+ EXPECT_FALSE(scheduler->RedrawPending());
+ EXPECT_FALSE(time_source->Active());
+ client.Reset();
+
+ scheduler->SetMainThreadNeedsLayerTextures();
+ EXPECT_ACTION("ScheduledActionAcquireLayerTexturesForMainThread",
+ client,
+ 0,
+ 2);
+ // A commit was started by SetMainThreadNeedsLayerTextures().
+ EXPECT_ACTION("ScheduledActionSendBeginFrameToMainThread", client, 1, 2);
+ client.Reset();
+
+ scheduler->SetNeedsRedraw();
+ EXPECT_TRUE(scheduler->RedrawPending());
+ EXPECT_TRUE(time_source->Active());
+
+ // No draw happens since the textures are acquired by the main thread.
+ time_source->Tick();
+ EXPECT_EQ(0, client.num_actions_());
+ EXPECT_TRUE(scheduler->RedrawPending());
+ EXPECT_TRUE(time_source->Active());
+
+ scheduler->FinishCommit();
+ EXPECT_ACTION("ScheduledActionCommit", client, 0, 1);
+ EXPECT_TRUE(scheduler->RedrawPending());
+ EXPECT_TRUE(time_source->Active());
+ client.Reset();
+
+ // Now we can draw again after the commit happens.
+ time_source->Tick();
+ EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client, 0, 1);
+ EXPECT_FALSE(scheduler->RedrawPending());
+ EXPECT_FALSE(time_source->Active());
+ client.Reset();
+}
+
TEST(SchedulerTest, TextureAcquisitionCollision) {
FakeSchedulerClient client;
scoped_refptr<FakeTimeSource> time_source(new FakeTimeSource());