| Index: cc/scheduler/begin_frame_source_unittest.cc
|
| diff --git a/cc/scheduler/begin_frame_source_unittest.cc b/cc/scheduler/begin_frame_source_unittest.cc
|
| index b50c4b91ce510a5444ba5912f090adca3dec176c..9f0177685199c6e5c317d1873a4321f1b2422633 100644
|
| --- a/cc/scheduler/begin_frame_source_unittest.cc
|
| +++ b/cc/scheduler/begin_frame_source_unittest.cc
|
| @@ -53,24 +53,29 @@ TEST_F(BackToBackBeginFrameSourceTest, AddObserverSendsBeginFrame) {
|
| EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false);
|
| source_->AddObserver(obs_.get());
|
| EXPECT_TRUE(task_runner_->HasPendingTasks());
|
| - EXPECT_BEGIN_FRAME_USED(*obs_, 1000, 1000 + kDeadline, kInterval);
|
| + EXPECT_BEGIN_FRAME_USED(*obs_, source_->source_id(), 1, 1000,
|
| + 1000 + kDeadline, kInterval);
|
| task_runner_->RunPendingTasks();
|
|
|
| - EXPECT_BEGIN_FRAME_USED(*obs_, 1100, 1100 + kDeadline, kInterval);
|
| + EXPECT_BEGIN_FRAME_USED(*obs_, source_->source_id(), 2, 1100,
|
| + 1100 + kDeadline, kInterval);
|
| now_src_->Advance(base::TimeDelta::FromMicroseconds(100));
|
| - source_->DidFinishFrame(obs_.get(), 0);
|
| + source_->DidFinishFrame(obs_.get(),
|
| + BeginFrameAck(source_->source_id(), 1, 1, 0, true));
|
| task_runner_->RunPendingTasks();
|
| }
|
|
|
| TEST_F(BackToBackBeginFrameSourceTest,
|
| - DidFinishFrameThenRemoveObserverProducesNoFrame) {
|
| + RemoveObserverThenDidFinishFrameProducesNoFrame) {
|
| EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false);
|
| source_->AddObserver(obs_.get());
|
| - EXPECT_BEGIN_FRAME_USED(*obs_, 1000, 1000 + kDeadline, kInterval);
|
| + EXPECT_BEGIN_FRAME_USED(*obs_, source_->source_id(), 1, 1000,
|
| + 1000 + kDeadline, kInterval);
|
| task_runner_->RunPendingTasks();
|
|
|
| source_->RemoveObserver(obs_.get());
|
| - source_->DidFinishFrame(obs_.get(), 0);
|
| + source_->DidFinishFrame(obs_.get(),
|
| + BeginFrameAck(source_->source_id(), 1, 1, 0, true));
|
|
|
| // Verify no BeginFrame is sent to |obs_|. There is a pending task in the
|
| // task_runner_ as a BeginFrame was posted, but it gets aborted since |obs_|
|
| @@ -80,14 +85,16 @@ TEST_F(BackToBackBeginFrameSourceTest,
|
| }
|
|
|
| TEST_F(BackToBackBeginFrameSourceTest,
|
| - RemoveObserverThenDidFinishFrameProducesNoFrame) {
|
| + DidFinishFrameThenRemoveObserverProducesNoFrame) {
|
| EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false);
|
| source_->AddObserver(obs_.get());
|
| - EXPECT_BEGIN_FRAME_USED(*obs_, 1000, 1000 + kDeadline, kInterval);
|
| + EXPECT_BEGIN_FRAME_USED(*obs_, source_->source_id(), 1, 1000,
|
| + 1000 + kDeadline, kInterval);
|
| task_runner_->RunPendingTasks();
|
|
|
| now_src_->Advance(base::TimeDelta::FromMicroseconds(100));
|
| - source_->DidFinishFrame(obs_.get(), 0);
|
| + source_->DidFinishFrame(obs_.get(),
|
| + BeginFrameAck(source_->source_id(), 1, 1, 0, true));
|
| source_->RemoveObserver(obs_.get());
|
|
|
| EXPECT_TRUE(task_runner_->HasPendingTasks());
|
| @@ -98,7 +105,8 @@ TEST_F(BackToBackBeginFrameSourceTest,
|
| TogglingObserverThenDidFinishFrameProducesCorrectFrame) {
|
| EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false);
|
| source_->AddObserver(obs_.get());
|
| - EXPECT_BEGIN_FRAME_USED(*obs_, 1000, 1000 + kDeadline, kInterval);
|
| + EXPECT_BEGIN_FRAME_USED(*obs_, source_->source_id(), 1, 1000,
|
| + 1000 + kDeadline, kInterval);
|
| task_runner_->RunPendingTasks();
|
|
|
| now_src_->Advance(base::TimeDelta::FromMicroseconds(100));
|
| @@ -109,12 +117,14 @@ TEST_F(BackToBackBeginFrameSourceTest,
|
| source_->AddObserver(obs_.get());
|
|
|
| now_src_->Advance(base::TimeDelta::FromMicroseconds(10));
|
| - source_->DidFinishFrame(obs_.get(), 0);
|
| + source_->DidFinishFrame(obs_.get(),
|
| + BeginFrameAck(source_->source_id(), 1, 1, 0, true));
|
|
|
| now_src_->Advance(base::TimeDelta::FromMicroseconds(10));
|
| // The begin frame is posted at the time when the observer was added,
|
| // so it ignores changes to "now" afterward.
|
| - EXPECT_BEGIN_FRAME_USED(*obs_, 1110, 1110 + kDeadline, kInterval);
|
| + EXPECT_BEGIN_FRAME_USED(*obs_, source_->source_id(), 2, 1110,
|
| + 1110 + kDeadline, kInterval);
|
| EXPECT_TRUE(task_runner_->HasPendingTasks());
|
| task_runner_->RunPendingTasks();
|
| }
|
| @@ -123,11 +133,13 @@ TEST_F(BackToBackBeginFrameSourceTest,
|
| DidFinishFrameThenTogglingObserverProducesCorrectFrame) {
|
| EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false);
|
| source_->AddObserver(obs_.get());
|
| - EXPECT_BEGIN_FRAME_USED(*obs_, 1000, 1000 + kDeadline, kInterval);
|
| + EXPECT_BEGIN_FRAME_USED(*obs_, source_->source_id(), 1, 1000,
|
| + 1000 + kDeadline, kInterval);
|
| task_runner_->RunPendingTasks();
|
|
|
| now_src_->Advance(base::TimeDelta::FromMicroseconds(100));
|
| - source_->DidFinishFrame(obs_.get(), 0);
|
| + source_->DidFinishFrame(obs_.get(),
|
| + BeginFrameAck(source_->source_id(), 1, 1, 0, true));
|
|
|
| now_src_->Advance(base::TimeDelta::FromMicroseconds(10));
|
| source_->RemoveObserver(obs_.get());
|
| @@ -139,7 +151,8 @@ TEST_F(BackToBackBeginFrameSourceTest,
|
| now_src_->Advance(base::TimeDelta::FromMicroseconds(10));
|
| // Ticks at the time at which the observer was added, ignoring the
|
| // last change to "now".
|
| - EXPECT_BEGIN_FRAME_USED(*obs_, 1120, 1120 + kDeadline, kInterval);
|
| + EXPECT_BEGIN_FRAME_USED(*obs_, source_->source_id(), 2, 1120,
|
| + 1120 + kDeadline, kInterval);
|
| EXPECT_TRUE(task_runner_->HasPendingTasks());
|
| task_runner_->RunPendingTasks();
|
| }
|
| @@ -148,14 +161,16 @@ TEST_F(BackToBackBeginFrameSourceTest, DidFinishFrameNoObserver) {
|
| EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false);
|
| source_->AddObserver(obs_.get());
|
| source_->RemoveObserver(obs_.get());
|
| - source_->DidFinishFrame(obs_.get(), 0);
|
| + source_->DidFinishFrame(obs_.get(),
|
| + BeginFrameAck(source_->source_id(), 1, 1, 0, true));
|
| EXPECT_FALSE(task_runner_->RunPendingTasks());
|
| }
|
|
|
| TEST_F(BackToBackBeginFrameSourceTest, DidFinishFrameRemainingFrames) {
|
| EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false);
|
| source_->AddObserver(obs_.get());
|
| - EXPECT_BEGIN_FRAME_USED(*obs_, 1000, 1000 + kDeadline, kInterval);
|
| + EXPECT_BEGIN_FRAME_USED(*obs_, source_->source_id(), 1, 1000,
|
| + 1000 + kDeadline, kInterval);
|
| // Runs the pending begin frame.
|
| task_runner_->RunPendingTasks();
|
| // While running the begin frame, the next frame was cancelled, this
|
| @@ -165,15 +180,20 @@ TEST_F(BackToBackBeginFrameSourceTest, DidFinishFrameRemainingFrames) {
|
|
|
| now_src_->Advance(base::TimeDelta::FromMicroseconds(100));
|
|
|
| - source_->DidFinishFrame(obs_.get(), 3);
|
| + source_->DidFinishFrame(obs_.get(),
|
| + BeginFrameAck(source_->source_id(), 1, 1, 3, true));
|
| EXPECT_FALSE(task_runner_->HasPendingTasks());
|
| - source_->DidFinishFrame(obs_.get(), 2);
|
| + source_->DidFinishFrame(obs_.get(),
|
| + BeginFrameAck(source_->source_id(), 1, 1, 2, true));
|
| EXPECT_FALSE(task_runner_->HasPendingTasks());
|
| - source_->DidFinishFrame(obs_.get(), 1);
|
| + source_->DidFinishFrame(obs_.get(),
|
| + BeginFrameAck(source_->source_id(), 1, 1, 1, true));
|
| EXPECT_FALSE(task_runner_->HasPendingTasks());
|
|
|
| - EXPECT_BEGIN_FRAME_USED(*obs_, 1100, 1100 + kDeadline, kInterval);
|
| - source_->DidFinishFrame(obs_.get(), 0);
|
| + EXPECT_BEGIN_FRAME_USED(*obs_, source_->source_id(), 2, 1100,
|
| + 1100 + kDeadline, kInterval);
|
| + source_->DidFinishFrame(obs_.get(),
|
| + BeginFrameAck(source_->source_id(), 1, 1, 0, true));
|
| EXPECT_EQ(base::TimeDelta(), task_runner_->DelayToNextTaskTime());
|
| task_runner_->RunPendingTasks();
|
| }
|
| @@ -181,36 +201,48 @@ TEST_F(BackToBackBeginFrameSourceTest, DidFinishFrameRemainingFrames) {
|
| TEST_F(BackToBackBeginFrameSourceTest, DidFinishFrameMultipleCallsIdempotent) {
|
| EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false);
|
| source_->AddObserver(obs_.get());
|
| - EXPECT_BEGIN_FRAME_USED(*obs_, 1000, 1000 + kDeadline, kInterval);
|
| + EXPECT_BEGIN_FRAME_USED(*obs_, source_->source_id(), 1, 1000,
|
| + 1000 + kDeadline, kInterval);
|
| task_runner_->RunPendingTasks();
|
|
|
| now_src_->Advance(base::TimeDelta::FromMicroseconds(100));
|
| - source_->DidFinishFrame(obs_.get(), 0);
|
| - source_->DidFinishFrame(obs_.get(), 0);
|
| - source_->DidFinishFrame(obs_.get(), 0);
|
| - EXPECT_BEGIN_FRAME_USED(*obs_, 1100, 1100 + kDeadline, kInterval);
|
| + source_->DidFinishFrame(obs_.get(),
|
| + BeginFrameAck(source_->source_id(), 1, 1, 0, true));
|
| + source_->DidFinishFrame(obs_.get(),
|
| + BeginFrameAck(source_->source_id(), 1, 1, 0, true));
|
| + source_->DidFinishFrame(obs_.get(),
|
| + BeginFrameAck(source_->source_id(), 1, 1, 0, true));
|
| + EXPECT_BEGIN_FRAME_USED(*obs_, source_->source_id(), 2, 1100,
|
| + 1100 + kDeadline, kInterval);
|
| task_runner_->RunPendingTasks();
|
|
|
| now_src_->Advance(base::TimeDelta::FromMicroseconds(100));
|
| - source_->DidFinishFrame(obs_.get(), 0);
|
| - source_->DidFinishFrame(obs_.get(), 0);
|
| - source_->DidFinishFrame(obs_.get(), 0);
|
| - EXPECT_BEGIN_FRAME_USED(*obs_, 1200, 1200 + kDeadline, kInterval);
|
| + source_->DidFinishFrame(obs_.get(),
|
| + BeginFrameAck(source_->source_id(), 2, 2, 0, true));
|
| + source_->DidFinishFrame(obs_.get(),
|
| + BeginFrameAck(source_->source_id(), 2, 2, 0, true));
|
| + source_->DidFinishFrame(obs_.get(),
|
| + BeginFrameAck(source_->source_id(), 2, 2, 0, true));
|
| + EXPECT_BEGIN_FRAME_USED(*obs_, source_->source_id(), 3, 1200,
|
| + 1200 + kDeadline, kInterval);
|
| task_runner_->RunPendingTasks();
|
| }
|
|
|
| TEST_F(BackToBackBeginFrameSourceTest, DelayInPostedTaskProducesCorrectFrame) {
|
| EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false);
|
| source_->AddObserver(obs_.get());
|
| - EXPECT_BEGIN_FRAME_USED(*obs_, 1000, 1000 + kDeadline, kInterval);
|
| + EXPECT_BEGIN_FRAME_USED(*obs_, source_->source_id(), 1, 1000,
|
| + 1000 + kDeadline, kInterval);
|
| task_runner_->RunPendingTasks();
|
|
|
| now_src_->Advance(base::TimeDelta::FromMicroseconds(100));
|
| - source_->DidFinishFrame(obs_.get(), 0);
|
| + source_->DidFinishFrame(obs_.get(),
|
| + BeginFrameAck(source_->source_id(), 1, 1, 0, true));
|
| now_src_->Advance(base::TimeDelta::FromMicroseconds(50));
|
| // Ticks at the time the last frame finished, so ignores the last change to
|
| // "now".
|
| - EXPECT_BEGIN_FRAME_USED(*obs_, 1100, 1100 + kDeadline, kInterval);
|
| + EXPECT_BEGIN_FRAME_USED(*obs_, source_->source_id(), 2, 1100,
|
| + 1100 + kDeadline, kInterval);
|
|
|
| EXPECT_TRUE(task_runner_->HasPendingTasks());
|
| task_runner_->RunPendingTasks();
|
| @@ -224,20 +256,28 @@ TEST_F(BackToBackBeginFrameSourceTest, MultipleObserversSynchronized) {
|
| EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs2, false);
|
| source_->AddObserver(&obs2);
|
|
|
| - EXPECT_BEGIN_FRAME_USED(obs1, 1000, 1000 + kDeadline, kInterval);
|
| - EXPECT_BEGIN_FRAME_USED(obs2, 1000, 1000 + kDeadline, kInterval);
|
| + EXPECT_BEGIN_FRAME_USED(obs1, source_->source_id(), 1, 1000, 1000 + kDeadline,
|
| + kInterval);
|
| + EXPECT_BEGIN_FRAME_USED(obs2, source_->source_id(), 1, 1000, 1000 + kDeadline,
|
| + kInterval);
|
| task_runner_->RunPendingTasks();
|
|
|
| now_src_->Advance(base::TimeDelta::FromMicroseconds(100));
|
| - source_->DidFinishFrame(&obs1, 0);
|
| - source_->DidFinishFrame(&obs2, 0);
|
| - EXPECT_BEGIN_FRAME_USED(obs1, 1100, 1100 + kDeadline, kInterval);
|
| - EXPECT_BEGIN_FRAME_USED(obs2, 1100, 1100 + kDeadline, kInterval);
|
| + source_->DidFinishFrame(&obs1,
|
| + BeginFrameAck(source_->source_id(), 1, 1, 0, true));
|
| + source_->DidFinishFrame(&obs2,
|
| + BeginFrameAck(source_->source_id(), 1, 1, 0, true));
|
| + EXPECT_BEGIN_FRAME_USED(obs1, source_->source_id(), 2, 1100, 1100 + kDeadline,
|
| + kInterval);
|
| + EXPECT_BEGIN_FRAME_USED(obs2, source_->source_id(), 2, 1100, 1100 + kDeadline,
|
| + kInterval);
|
| task_runner_->RunPendingTasks();
|
|
|
| now_src_->Advance(base::TimeDelta::FromMicroseconds(100));
|
| - source_->DidFinishFrame(&obs1, 0);
|
| - source_->DidFinishFrame(&obs2, 0);
|
| + source_->DidFinishFrame(&obs1,
|
| + BeginFrameAck(source_->source_id(), 2, 2, 0, true));
|
| + source_->DidFinishFrame(&obs2,
|
| + BeginFrameAck(source_->source_id(), 2, 2, 0, true));
|
| EXPECT_TRUE(task_runner_->HasPendingTasks());
|
| source_->RemoveObserver(&obs1);
|
| source_->RemoveObserver(&obs2);
|
| @@ -249,32 +289,40 @@ TEST_F(BackToBackBeginFrameSourceTest, MultipleObserversInterleaved) {
|
|
|
| EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs1, false);
|
| source_->AddObserver(&obs1);
|
| - EXPECT_BEGIN_FRAME_USED(obs1, 1000, 1000 + kDeadline, kInterval);
|
| + EXPECT_BEGIN_FRAME_USED(obs1, source_->source_id(), 1, 1000, 1000 + kDeadline,
|
| + kInterval);
|
| task_runner_->RunPendingTasks();
|
|
|
| now_src_->Advance(base::TimeDelta::FromMicroseconds(100));
|
| EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs2, false);
|
| source_->AddObserver(&obs2);
|
| - EXPECT_BEGIN_FRAME_USED(obs2, 1100, 1100 + kDeadline, kInterval);
|
| + EXPECT_BEGIN_FRAME_USED(obs2, source_->source_id(), 2, 1100, 1100 + kDeadline,
|
| + kInterval);
|
| task_runner_->RunPendingTasks();
|
|
|
| now_src_->Advance(base::TimeDelta::FromMicroseconds(100));
|
| - source_->DidFinishFrame(&obs1, 0);
|
| - EXPECT_BEGIN_FRAME_USED(obs1, 1200, 1200 + kDeadline, kInterval);
|
| + source_->DidFinishFrame(&obs1,
|
| + BeginFrameAck(source_->source_id(), 1, 1, 0, true));
|
| + EXPECT_BEGIN_FRAME_USED(obs1, source_->source_id(), 3, 1200, 1200 + kDeadline,
|
| + kInterval);
|
| task_runner_->RunPendingTasks();
|
|
|
| - source_->DidFinishFrame(&obs1, 0);
|
| + source_->DidFinishFrame(&obs1,
|
| + BeginFrameAck(source_->source_id(), 3, 3, 0, true));
|
| source_->RemoveObserver(&obs1);
|
| // Finishing the frame for |obs1| posts a begin frame task, which will be
|
| // aborted since |obs1| is removed. Clear that from the task runner.
|
| task_runner_->RunPendingTasks();
|
|
|
| now_src_->Advance(base::TimeDelta::FromMicroseconds(100));
|
| - source_->DidFinishFrame(&obs2, 0);
|
| - EXPECT_BEGIN_FRAME_USED(obs2, 1300, 1300 + kDeadline, kInterval);
|
| + source_->DidFinishFrame(&obs2,
|
| + BeginFrameAck(source_->source_id(), 2, 2, 0, true));
|
| + EXPECT_BEGIN_FRAME_USED(obs2, source_->source_id(), 4, 1300, 1300 + kDeadline,
|
| + kInterval);
|
| task_runner_->RunPendingTasks();
|
|
|
| - source_->DidFinishFrame(&obs2, 0);
|
| + source_->DidFinishFrame(&obs2,
|
| + BeginFrameAck(source_->source_id(), 4, 4, 0, true));
|
| source_->RemoveObserver(&obs2);
|
| }
|
|
|
| @@ -285,30 +333,40 @@ TEST_F(BackToBackBeginFrameSourceTest, MultipleObserversAtOnce) {
|
| EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs2, false);
|
| source_->AddObserver(&obs1);
|
| source_->AddObserver(&obs2);
|
| - EXPECT_BEGIN_FRAME_USED(obs1, 1000, 1000 + kDeadline, kInterval);
|
| - EXPECT_BEGIN_FRAME_USED(obs2, 1000, 1000 + kDeadline, kInterval);
|
| + EXPECT_BEGIN_FRAME_USED(obs1, source_->source_id(), 1, 1000, 1000 + kDeadline,
|
| + kInterval);
|
| + EXPECT_BEGIN_FRAME_USED(obs2, source_->source_id(), 1, 1000, 1000 + kDeadline,
|
| + kInterval);
|
| task_runner_->RunPendingTasks();
|
|
|
| // |obs1| finishes first.
|
| now_src_->Advance(base::TimeDelta::FromMicroseconds(100));
|
| - source_->DidFinishFrame(&obs1, 0);
|
| + source_->DidFinishFrame(&obs1,
|
| + BeginFrameAck(source_->source_id(), 1, 1, 0, true));
|
|
|
| // |obs2| finishes also, before getting to the newly posted begin frame.
|
| now_src_->Advance(base::TimeDelta::FromMicroseconds(100));
|
| - source_->DidFinishFrame(&obs2, 0);
|
| + source_->DidFinishFrame(&obs2,
|
| + BeginFrameAck(source_->source_id(), 1, 1, 0, true));
|
|
|
| // Because the begin frame source already ticked when |obs1| finished,
|
| // we see it as the frame time for both observers.
|
| - EXPECT_BEGIN_FRAME_USED(obs1, 1100, 1100 + kDeadline, kInterval);
|
| - EXPECT_BEGIN_FRAME_USED(obs2, 1100, 1100 + kDeadline, kInterval);
|
| + EXPECT_BEGIN_FRAME_USED(obs1, source_->source_id(), 2, 1100, 1100 + kDeadline,
|
| + kInterval);
|
| + EXPECT_BEGIN_FRAME_USED(obs2, source_->source_id(), 2, 1100, 1100 + kDeadline,
|
| + kInterval);
|
| task_runner_->RunPendingTasks();
|
|
|
| - source_->DidFinishFrame(&obs1, 0);
|
| + source_->DidFinishFrame(&obs1,
|
| + BeginFrameAck(source_->source_id(), 2, 2, 0, true));
|
| source_->RemoveObserver(&obs1);
|
| - source_->DidFinishFrame(&obs2, 0);
|
| + source_->DidFinishFrame(&obs2,
|
| + BeginFrameAck(source_->source_id(), 2, 2, 0, true));
|
| source_->RemoveObserver(&obs2);
|
| }
|
|
|
| +// TODO(eseckler): Tests for BeginFrame numbering in BackToBackBFS.
|
| +
|
| // DelayBasedBeginFrameSource testing ------------------------------------------
|
| class DelayBasedBeginFrameSourceTest : public ::testing::Test {
|
| public:
|
| @@ -337,18 +395,20 @@ TEST_F(DelayBasedBeginFrameSourceTest,
|
| AddObserverCallsOnBeginFrameWithMissedTick) {
|
| now_src_->Advance(base::TimeDelta::FromMicroseconds(9010));
|
| EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false);
|
| - EXPECT_BEGIN_FRAME_USED_MISSED(*obs_, 10000, 20000, 10000);
|
| + EXPECT_BEGIN_FRAME_USED_MISSED(*obs_, source_->source_id(), 2, 10000, 20000,
|
| + 10000);
|
| source_->AddObserver(obs_.get()); // Should cause the last tick to be sent
|
| // No tasks should need to be run for this to occur.
|
| }
|
|
|
| TEST_F(DelayBasedBeginFrameSourceTest, AddObserverCallsCausesOnBeginFrame) {
|
| EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false);
|
| - EXPECT_BEGIN_FRAME_USED_MISSED(*obs_, 0, 10000, 10000);
|
| + EXPECT_BEGIN_FRAME_USED_MISSED(*obs_, source_->source_id(), 1, 0, 10000,
|
| + 10000);
|
| source_->AddObserver(obs_.get());
|
| EXPECT_EQ(10000, task_runner_->NextTaskTime().ToInternalValue());
|
|
|
| - EXPECT_BEGIN_FRAME_USED(*obs_, 10000, 20000, 10000);
|
| + EXPECT_BEGIN_FRAME_USED(*obs_, source_->source_id(), 2, 10000, 20000, 10000);
|
| now_src_->Advance(base::TimeDelta::FromMicroseconds(9010));
|
| task_runner_->RunPendingTasks();
|
| }
|
| @@ -357,11 +417,12 @@ TEST_F(DelayBasedBeginFrameSourceTest, BasicOperation) {
|
| task_runner_->SetAutoAdvanceNowToPendingTasks(true);
|
|
|
| EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false);
|
| - EXPECT_BEGIN_FRAME_USED_MISSED(*obs_, 0, 10000, 10000);
|
| + EXPECT_BEGIN_FRAME_USED_MISSED(*obs_, source_->source_id(), 1, 0, 10000,
|
| + 10000);
|
| source_->AddObserver(obs_.get());
|
| - EXPECT_BEGIN_FRAME_USED(*obs_, 10000, 20000, 10000);
|
| - EXPECT_BEGIN_FRAME_USED(*obs_, 20000, 30000, 10000);
|
| - EXPECT_BEGIN_FRAME_USED(*obs_, 30000, 40000, 10000);
|
| + EXPECT_BEGIN_FRAME_USED(*obs_, source_->source_id(), 2, 10000, 20000, 10000);
|
| + EXPECT_BEGIN_FRAME_USED(*obs_, source_->source_id(), 3, 20000, 30000, 10000);
|
| + EXPECT_BEGIN_FRAME_USED(*obs_, source_->source_id(), 4, 30000, 40000, 10000);
|
| task_runner_->RunUntilTime(base::TimeTicks::FromInternalValue(30001));
|
|
|
| source_->RemoveObserver(obs_.get());
|
| @@ -372,21 +433,22 @@ TEST_F(DelayBasedBeginFrameSourceTest, BasicOperation) {
|
| TEST_F(DelayBasedBeginFrameSourceTest, VSyncChanges) {
|
| task_runner_->SetAutoAdvanceNowToPendingTasks(true);
|
| EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false);
|
| - EXPECT_BEGIN_FRAME_USED_MISSED(*obs_, 0, 10000, 10000);
|
| + EXPECT_BEGIN_FRAME_USED_MISSED(*obs_, source_->source_id(), 1, 0, 10000,
|
| + 10000);
|
| source_->AddObserver(obs_.get());
|
|
|
| - EXPECT_BEGIN_FRAME_USED(*obs_, 10000, 20000, 10000);
|
| - EXPECT_BEGIN_FRAME_USED(*obs_, 20000, 30000, 10000);
|
| - EXPECT_BEGIN_FRAME_USED(*obs_, 30000, 40000, 10000);
|
| + EXPECT_BEGIN_FRAME_USED(*obs_, source_->source_id(), 2, 10000, 20000, 10000);
|
| + EXPECT_BEGIN_FRAME_USED(*obs_, source_->source_id(), 3, 20000, 30000, 10000);
|
| + EXPECT_BEGIN_FRAME_USED(*obs_, source_->source_id(), 4, 30000, 40000, 10000);
|
| task_runner_->RunUntilTime(base::TimeTicks::FromInternalValue(30001));
|
|
|
| // Update the vsync information
|
| source_->OnUpdateVSyncParameters(base::TimeTicks::FromInternalValue(27500),
|
| base::TimeDelta::FromMicroseconds(10001));
|
|
|
| - EXPECT_BEGIN_FRAME_USED(*obs_, 40000, 47502, 10001);
|
| - EXPECT_BEGIN_FRAME_USED(*obs_, 47502, 57503, 10001);
|
| - EXPECT_BEGIN_FRAME_USED(*obs_, 57503, 67504, 10001);
|
| + EXPECT_BEGIN_FRAME_USED(*obs_, source_->source_id(), 5, 40000, 47502, 10001);
|
| + EXPECT_BEGIN_FRAME_USED(*obs_, source_->source_id(), 6, 47502, 57503, 10001);
|
| + EXPECT_BEGIN_FRAME_USED(*obs_, source_->source_id(), 7, 57503, 67504, 10001);
|
| task_runner_->RunUntilTime(base::TimeTicks::FromInternalValue(60000));
|
| }
|
|
|
| @@ -395,25 +457,26 @@ TEST_F(DelayBasedBeginFrameSourceTest, AuthoritativeVSyncChanges) {
|
| source_->OnUpdateVSyncParameters(base::TimeTicks::FromInternalValue(500),
|
| base::TimeDelta::FromMicroseconds(10000));
|
| EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false);
|
| - EXPECT_BEGIN_FRAME_USED_MISSED(*obs_, 500, 10500, 10000);
|
| + EXPECT_BEGIN_FRAME_USED_MISSED(*obs_, source_->source_id(), 2, 500, 10500,
|
| + 10000);
|
| source_->AddObserver(obs_.get());
|
|
|
| - EXPECT_BEGIN_FRAME_USED(*obs_, 10500, 20500, 10000);
|
| - EXPECT_BEGIN_FRAME_USED(*obs_, 20500, 30500, 10000);
|
| + EXPECT_BEGIN_FRAME_USED(*obs_, source_->source_id(), 3, 10500, 20500, 10000);
|
| + EXPECT_BEGIN_FRAME_USED(*obs_, source_->source_id(), 4, 20500, 30500, 10000);
|
| task_runner_->RunUntilTime(base::TimeTicks::FromInternalValue(20501));
|
|
|
| // This will keep the same timebase, so 500, 9999
|
| source_->SetAuthoritativeVSyncInterval(
|
| base::TimeDelta::FromMicroseconds(9999));
|
| - EXPECT_BEGIN_FRAME_USED(*obs_, 30500, 40496, 9999);
|
| - EXPECT_BEGIN_FRAME_USED(*obs_, 40496, 50495, 9999);
|
| + EXPECT_BEGIN_FRAME_USED(*obs_, source_->source_id(), 5, 30500, 40496, 9999);
|
| + EXPECT_BEGIN_FRAME_USED(*obs_, source_->source_id(), 6, 40496, 50495, 9999);
|
| task_runner_->RunUntilTime(base::TimeTicks::FromInternalValue(40497));
|
|
|
| // Change the vsync params, but the new interval will be ignored.
|
| source_->OnUpdateVSyncParameters(base::TimeTicks::FromInternalValue(400),
|
| base::TimeDelta::FromMicroseconds(1));
|
| - EXPECT_BEGIN_FRAME_USED(*obs_, 50495, 60394, 9999);
|
| - EXPECT_BEGIN_FRAME_USED(*obs_, 60394, 70393, 9999);
|
| + EXPECT_BEGIN_FRAME_USED(*obs_, source_->source_id(), 7, 50495, 60394, 9999);
|
| + EXPECT_BEGIN_FRAME_USED(*obs_, source_->source_id(), 8, 60394, 70393, 9999);
|
| task_runner_->RunUntilTime(base::TimeTicks::FromInternalValue(60395));
|
| }
|
|
|
| @@ -423,25 +486,27 @@ TEST_F(DelayBasedBeginFrameSourceTest, MultipleObservers) {
|
| // now_src_ starts off at 1000.
|
| task_runner_->RunForPeriod(base::TimeDelta::FromMicroseconds(9010));
|
| EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs1, false);
|
| - EXPECT_BEGIN_FRAME_USED_MISSED(obs1, 10000, 20000, 10000);
|
| + EXPECT_BEGIN_FRAME_USED_MISSED(obs1, source_->source_id(), 2, 10000, 20000,
|
| + 10000);
|
| source_->AddObserver(&obs1); // Should cause the last tick to be sent
|
| // No tasks should need to be run for this to occur.
|
|
|
| - EXPECT_BEGIN_FRAME_USED(obs1, 20000, 30000, 10000);
|
| + EXPECT_BEGIN_FRAME_USED(obs1, source_->source_id(), 3, 20000, 30000, 10000);
|
| task_runner_->RunForPeriod(base::TimeDelta::FromMicroseconds(10000));
|
|
|
| EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs2, false);
|
| - EXPECT_BEGIN_FRAME_USED_MISSED(obs2, 20000, 30000, 10000);
|
| + EXPECT_BEGIN_FRAME_USED_MISSED(obs2, source_->source_id(), 3, 20000, 30000,
|
| + 10000);
|
| source_->AddObserver(&obs2); // Should cause the last tick to be sent
|
| // No tasks should need to be run for this to occur.
|
|
|
| - EXPECT_BEGIN_FRAME_USED(obs1, 30000, 40000, 10000);
|
| - EXPECT_BEGIN_FRAME_USED(obs2, 30000, 40000, 10000);
|
| + EXPECT_BEGIN_FRAME_USED(obs1, source_->source_id(), 4, 30000, 40000, 10000);
|
| + EXPECT_BEGIN_FRAME_USED(obs2, source_->source_id(), 4, 30000, 40000, 10000);
|
| task_runner_->RunForPeriod(base::TimeDelta::FromMicroseconds(10000));
|
|
|
| source_->RemoveObserver(&obs1);
|
|
|
| - EXPECT_BEGIN_FRAME_USED(obs2, 40000, 50000, 10000);
|
| + EXPECT_BEGIN_FRAME_USED(obs2, source_->source_id(), 5, 40000, 50000, 10000);
|
| task_runner_->RunForPeriod(base::TimeDelta::FromMicroseconds(10000));
|
|
|
| source_->RemoveObserver(&obs2);
|
| @@ -453,7 +518,7 @@ TEST_F(DelayBasedBeginFrameSourceTest, DoubleTick) {
|
| StrictMock<MockBeginFrameObserver> obs;
|
|
|
| EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs, false);
|
| - EXPECT_BEGIN_FRAME_USED_MISSED(obs, 0, 10000, 10000);
|
| + EXPECT_BEGIN_FRAME_USED_MISSED(obs, source_->source_id(), 1, 0, 10000, 10000);
|
| source_->AddObserver(&obs);
|
|
|
| source_->OnUpdateVSyncParameters(base::TimeTicks::FromInternalValue(5000),
|
| @@ -467,7 +532,7 @@ TEST_F(DelayBasedBeginFrameSourceTest, DoubleTick) {
|
| source_->OnUpdateVSyncParameters(base::TimeTicks::FromInternalValue(10000),
|
| base::TimeDelta::FromInternalValue(10000));
|
| now_src_->Advance(base::TimeDelta::FromInternalValue(5000));
|
| - EXPECT_BEGIN_FRAME_USED(obs, 10000, 20000, 10000);
|
| + EXPECT_BEGIN_FRAME_USED(obs, source_->source_id(), 2, 10000, 20000, 10000);
|
| task_runner_->RunPendingTasks();
|
| }
|
|
|
| @@ -475,7 +540,7 @@ TEST_F(DelayBasedBeginFrameSourceTest, DoubleTickMissedFrame) {
|
| StrictMock<MockBeginFrameObserver> obs;
|
|
|
| EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs, false);
|
| - EXPECT_BEGIN_FRAME_USED_MISSED(obs, 0, 10000, 10000);
|
| + EXPECT_BEGIN_FRAME_USED_MISSED(obs, source_->source_id(), 1, 0, 10000, 10000);
|
| source_->AddObserver(&obs);
|
| source_->RemoveObserver(&obs);
|
|
|
| @@ -493,10 +558,21 @@ TEST_F(DelayBasedBeginFrameSourceTest, DoubleTickMissedFrame) {
|
| base::TimeDelta::FromInternalValue(10000));
|
| now_src_->Advance(base::TimeDelta::FromInternalValue(5000));
|
| EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs, false);
|
| - EXPECT_BEGIN_FRAME_USED_MISSED(obs, 10000, 20000, 10000);
|
| + EXPECT_BEGIN_FRAME_USED_MISSED(obs, source_->source_id(), 3, 10000, 20000,
|
| + 10000);
|
| source_->AddObserver(&obs);
|
| source_->RemoveObserver(&obs);
|
| }
|
|
|
| +// TODO(eseckler): Tests for source ids.
|
| +
|
| +// TODO(eseckler): Tests for BeginFrame numbering in DelayBasedBeginFrameSource.
|
| +
|
| +// TODO(eseckler): Tests for BeginFrameObserverAckTracker.
|
| +
|
| +// TODO(eseckler): Tests for ExternalBeginFrameSource (especially client calls).
|
| +
|
| +// TODO(eseckler): Tests for DelegatingBeginFrameSource.
|
| +
|
| } // namespace
|
| } // namespace cc
|
|
|