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

Unified Diff: cc/scheduler/scheduler_unittest.cc

Issue 577643002: Making OutputSurface a begin frame source and vsync source. (Closed)
Patch Set: Created 6 years, 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/scheduler/scheduler_state_machine.h ('k') | cc/surfaces/display.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/scheduler/scheduler_unittest.cc
diff --git a/cc/scheduler/scheduler_unittest.cc b/cc/scheduler/scheduler_unittest.cc
index 7ab65aa657825832dfbf0d60a29a8bbd89a82fd4..1facc8f2ba685c159f8678704fc67038a6f9af3e 100644
--- a/cc/scheduler/scheduler_unittest.cc
+++ b/cc/scheduler/scheduler_unittest.cc
@@ -13,6 +13,7 @@
#include "base/run_loop.h"
#include "base/time/time.h"
#include "cc/test/begin_frame_args_test.h"
+#include "cc/test/fake_output_surface.h"
#include "cc/test/ordered_simple_task_runner.h"
#include "cc/test/scheduler_test_common.h"
#include "testing/gmock/include/gmock/gmock.h"
@@ -108,9 +109,6 @@ class FakeSchedulerClient : public SchedulerClient {
return scheduler_->settings().begin_frame_scheduling_enabled &&
scheduler_->settings().throttle_frame_production;
}
- virtual FakeBeginFrameSource* GetExternalBeginFrameSource() OVERRIDE {
- return &fake_frame_source_;
- }
void AdvanceFrame() {
if (ExternalBeginFrame()) {
@@ -236,6 +234,8 @@ class FakeSchedulerClient : public SchedulerClient {
state);
}
+ scoped_ptr<FakeOutputSurface> output_surface_;
+
protected:
bool ImplFrameDeadlinePendingCallback(bool state) {
return scheduler_->BeginImplFrameDeadlinePending() == state;
@@ -261,7 +261,8 @@ void InitializeOutputSurfaceAndFirstCommit(Scheduler* scheduler,
TRACE_EVENT0("cc",
"SchedulerUnitTest::InitializeOutputSurfaceAndFirstCommit");
- scheduler->DidCreateAndInitializeOutputSurface();
+ client->output_surface_ = FakeOutputSurface::Create3d();
+ scheduler->DidCreateAndInitializeOutputSurface(client->output_surface_.get());
scheduler->SetNeedsCommit();
scheduler->NotifyBeginMainFrameStarted();
scheduler->NotifyReadyToCommit();
@@ -296,7 +297,8 @@ TEST(SchedulerTest, InitializeOutputSurfaceDoesNotBeginImplFrame) {
EXPECT_SINGLE_ACTION("ScheduledActionBeginOutputSurfaceCreation", client);
client.Reset();
- scheduler->DidCreateAndInitializeOutputSurface();
+ client.output_surface_ = FakeOutputSurface::Create3d();
+ scheduler->DidCreateAndInitializeOutputSurface(client.output_surface_.get());
EXPECT_NO_ACTION(client);
}
@@ -1129,7 +1131,8 @@ TEST(SchedulerTest, PollForCommitCompletion) {
scheduler->SetCanDraw(true);
scheduler->SetCanStart();
scheduler->SetVisible(true);
- scheduler->DidCreateAndInitializeOutputSurface();
+ client.output_surface_ = FakeOutputSurface::Create3d();
+ scheduler->DidCreateAndInitializeOutputSurface(client.output_surface_.get());
scheduler->SetNeedsCommit();
EXPECT_TRUE(scheduler->CommitPending());
@@ -1139,7 +1142,7 @@ TEST(SchedulerTest, PollForCommitCompletion) {
BeginFrameArgs frame_args = CreateBeginFrameArgsForTesting(client.now_src());
frame_args.interval = base::TimeDelta::FromMilliseconds(1000);
- client.GetExternalBeginFrameSource()->TestSendBeginFrame(frame_args);
+ client.output_surface_->TestSendBeginFrame(frame_args);
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
client.task_runner().RunPendingTasks(); // Run posted deadline.
@@ -1152,7 +1155,7 @@ TEST(SchedulerTest, PollForCommitCompletion) {
// the NotifyReadyToCommit for now.
EXPECT_FALSE(scheduler->CommitPending());
scheduler->SetNeedsCommit();
- client.GetExternalBeginFrameSource()->TestSendBeginFrame(frame_args);
+ client.output_surface_->TestSendBeginFrame(frame_args);
EXPECT_TRUE(scheduler->CommitPending());
// Draw and swap the frame, but don't ack the swap to simulate the Browser
@@ -1211,7 +1214,7 @@ TEST(SchedulerTest, BeginRetroFrame) {
// This is the first BeginFrame, which will be handled immediately.
BeginFrameArgs args = CreateBeginFrameArgsForTesting(client.now_src());
args.deadline += base::TimeDelta::FromHours(1);
- client.GetExternalBeginFrameSource()->TestSendBeginFrame(args);
+ client.output_surface_->TestSendBeginFrame(args);
EXPECT_ACTION("WillBeginImplFrame", client, 0, 2);
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client, 1, 2);
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
@@ -1220,9 +1223,9 @@ TEST(SchedulerTest, BeginRetroFrame) {
// Queue BeginFrames while we are still handling the previous BeginFrame.
args.frame_time += base::TimeDelta::FromSeconds(1);
- client.GetExternalBeginFrameSource()->TestSendBeginFrame(args);
+ client.output_surface_->TestSendBeginFrame(args);
args.frame_time += base::TimeDelta::FromSeconds(1);
- client.GetExternalBeginFrameSource()->TestSendBeginFrame(args);
+ client.output_surface_->TestSendBeginFrame(args);
// If we don't swap on the deadline, we wait for the next BeginImplFrame.
client.task_runner().RunPendingTasks(); // Run posted deadline.
@@ -1288,7 +1291,7 @@ TEST(SchedulerTest, BeginRetroFrame_SwapThrottled) {
// This is the first BeginFrame, which will be handled immediately.
BeginFrameArgs args = CreateBeginFrameArgsForTesting(client.now_src());
args.deadline += base::TimeDelta::FromHours(1);
- client.GetExternalBeginFrameSource()->TestSendBeginFrame(args);
+ client.output_surface_->TestSendBeginFrame(args);
EXPECT_ACTION("WillBeginImplFrame", client, 0, 2);
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client, 1, 2);
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
@@ -1298,7 +1301,7 @@ TEST(SchedulerTest, BeginRetroFrame_SwapThrottled) {
// Queue BeginFrame while we are still handling the previous BeginFrame.
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
args.frame_time += base::TimeDelta::FromSeconds(1);
- client.GetExternalBeginFrameSource()->TestSendBeginFrame(args);
+ client.output_surface_->TestSendBeginFrame(args);
EXPECT_NO_ACTION(client);
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
client.Reset();
@@ -1329,7 +1332,7 @@ TEST(SchedulerTest, BeginRetroFrame_SwapThrottled) {
// Queue BeginFrame while we are still handling the previous BeginFrame.
args.frame_time += base::TimeDelta::FromSeconds(1);
- client.GetExternalBeginFrameSource()->TestSendBeginFrame(args);
+ client.output_surface_->TestSendBeginFrame(args);
EXPECT_NO_ACTION(client);
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
EXPECT_TRUE(client.needs_begin_frames());
@@ -1555,9 +1558,11 @@ TEST(SchedulerTest, DidLoseOutputSurfaceAfterOutputSurfaceIsInitialized) {
EXPECT_SINGLE_ACTION("ScheduledActionBeginOutputSurfaceCreation", client);
client.Reset();
- scheduler->DidCreateAndInitializeOutputSurface();
+ client.output_surface_ = FakeOutputSurface::Create3d();
+ scheduler->DidCreateAndInitializeOutputSurface(client.output_surface_.get());
EXPECT_NO_ACTION(client);
+ client.output_surface_.reset();
scheduler->DidLoseOutputSurface();
EXPECT_SINGLE_ACTION("ScheduledActionBeginOutputSurfaceCreation", client);
}
@@ -1584,6 +1589,7 @@ TEST(SchedulerTest, DidLoseOutputSurfaceAfterBeginFrameStarted) {
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
client.Reset();
+ client.output_surface_.reset();
scheduler->DidLoseOutputSurface();
// Do nothing when impl frame is in deadine pending state.
EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(false)", client);
@@ -1623,6 +1629,7 @@ void DidLoseOutputSurfaceAfterBeginFrameStartedWithHighLatency(
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
client.Reset();
+ client.output_surface_.reset();
scheduler->DidLoseOutputSurface();
// Do nothing when impl frame is in deadine pending state.
EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(false)", client);
@@ -1695,6 +1702,7 @@ void DidLoseOutputSurfaceAfterReadyToCommit(bool impl_side_painting) {
EXPECT_SINGLE_ACTION("ScheduledActionCommit", client);
client.Reset();
+ client.output_surface_.reset();
scheduler->DidLoseOutputSurface();
if (impl_side_painting) {
// Sync tree should be forced to activate.
@@ -1738,6 +1746,7 @@ TEST(SchedulerTest, DidLoseOutputSurfaceAfterSetNeedsManageTiles) {
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
client.Reset();
+ client.output_surface_.reset();
scheduler->DidLoseOutputSurface();
EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(false)", client);
@@ -1766,7 +1775,7 @@ TEST(SchedulerTest, DidLoseOutputSurfaceAfterBeginRetroFramePosted) {
client.Reset();
BeginFrameArgs args = CreateBeginFrameArgsForTesting(client.now_src());
args.deadline += base::TimeDelta::FromHours(1);
- client.GetExternalBeginFrameSource()->TestSendBeginFrame(args);
+ client.output_surface_->TestSendBeginFrame(args);
EXPECT_ACTION("WillBeginImplFrame", client, 0, 2);
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client, 1, 2);
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
@@ -1774,9 +1783,9 @@ TEST(SchedulerTest, DidLoseOutputSurfaceAfterBeginRetroFramePosted) {
// Queue BeginFrames while we are still handling the previous BeginFrame.
args.frame_time += base::TimeDelta::FromSeconds(1);
- client.GetExternalBeginFrameSource()->TestSendBeginFrame(args);
+ client.output_surface_->TestSendBeginFrame(args);
args.frame_time += base::TimeDelta::FromSeconds(1);
- client.GetExternalBeginFrameSource()->TestSendBeginFrame(args);
+ client.output_surface_->TestSendBeginFrame(args);
// If we don't swap on the deadline, we wait for the next BeginImplFrame.
client.Reset();
@@ -1794,6 +1803,7 @@ TEST(SchedulerTest, DidLoseOutputSurfaceAfterBeginRetroFramePosted) {
client.Reset();
EXPECT_FALSE(scheduler->IsBeginRetroFrameArgsEmpty());
+ client.output_surface_.reset();
scheduler->DidLoseOutputSurface();
EXPECT_ACTION("SetNeedsBeginFrames(false)", client, 0, 2);
EXPECT_ACTION("ScheduledActionBeginOutputSurfaceCreation", client, 1, 2);
@@ -1824,7 +1834,7 @@ TEST(SchedulerTest, DidLoseOutputSurfaceDuringBeginRetroFrameRunning) {
client.Reset();
BeginFrameArgs args = CreateBeginFrameArgsForTesting(client.now_src());
args.deadline += base::TimeDelta::FromHours(1);
- client.GetExternalBeginFrameSource()->TestSendBeginFrame(args);
+ client.output_surface_->TestSendBeginFrame(args);
EXPECT_ACTION("WillBeginImplFrame", client, 0, 2);
EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client, 1, 2);
EXPECT_TRUE(scheduler->BeginImplFrameDeadlinePending());
@@ -1832,9 +1842,9 @@ TEST(SchedulerTest, DidLoseOutputSurfaceDuringBeginRetroFrameRunning) {
// Queue BeginFrames while we are still handling the previous BeginFrame.
args.frame_time += base::TimeDelta::FromSeconds(1);
- client.GetExternalBeginFrameSource()->TestSendBeginFrame(args);
+ client.output_surface_->TestSendBeginFrame(args);
args.frame_time += base::TimeDelta::FromSeconds(1);
- client.GetExternalBeginFrameSource()->TestSendBeginFrame(args);
+ client.output_surface_->TestSendBeginFrame(args);
// If we don't swap on the deadline, we wait for the next BeginImplFrame.
client.Reset();
@@ -1861,6 +1871,7 @@ TEST(SchedulerTest, DidLoseOutputSurfaceDuringBeginRetroFrameRunning) {
client.Reset();
EXPECT_FALSE(scheduler->IsBeginRetroFrameArgsEmpty());
scheduler->DidLoseOutputSurface();
+ client.output_surface_.reset();
EXPECT_SINGLE_ACTION("SetNeedsBeginFrames(false)", client);
EXPECT_TRUE(scheduler->IsBeginRetroFrameArgsEmpty());
« no previous file with comments | « cc/scheduler/scheduler_state_machine.h ('k') | cc/surfaces/display.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698