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 |