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 6ab9074448c07b47b029851216a063bb8f955904..418fd32374a94f50bf5153429170a326aaf6b88e 100644 |
--- a/cc/scheduler/begin_frame_source_unittest.cc |
+++ b/cc/scheduler/begin_frame_source_unittest.cc |
@@ -566,342 +566,5 @@ TEST_F(SyntheticBeginFrameSourceTest, DoubleTickMissedFrame) { |
source_->RemoveObserver(&obs); |
} |
-// BeginFrameSourceMultiplexer testing ----------------------------------- |
-class BeginFrameSourceMultiplexerTest : public ::testing::Test { |
- protected: |
- void SetUp() override { |
- mux_ = BeginFrameSourceMultiplexer::Create(); |
- |
- source1_store_ = make_scoped_ptr(new FakeBeginFrameSource()); |
- source2_store_ = make_scoped_ptr(new FakeBeginFrameSource()); |
- source3_store_ = make_scoped_ptr(new FakeBeginFrameSource()); |
- |
- source1_ = source1_store_.get(); |
- source2_ = source2_store_.get(); |
- source3_ = source3_store_.get(); |
- } |
- |
- void TearDown() override { |
- // Make sure the mux is torn down before the sources. |
- mux_.reset(); |
- } |
- |
- scoped_ptr<BeginFrameSourceMultiplexer> mux_; |
- FakeBeginFrameSource* source1_; |
- FakeBeginFrameSource* source2_; |
- FakeBeginFrameSource* source3_; |
- |
- private: |
- scoped_ptr<FakeBeginFrameSource> source1_store_; |
- scoped_ptr<FakeBeginFrameSource> source2_store_; |
- scoped_ptr<FakeBeginFrameSource> source3_store_; |
-}; |
- |
-TEST_F(BeginFrameSourceMultiplexerTest, SourcesManipulation) { |
- EXPECT_EQ(NULL, mux_->ActiveSource()); |
- |
- mux_->AddSource(source1_); |
- EXPECT_EQ(source1_, mux_->ActiveSource()); |
- |
- mux_->SetActiveSource(NULL); |
- EXPECT_EQ(NULL, mux_->ActiveSource()); |
- |
- mux_->SetActiveSource(source1_); |
- |
-#ifndef NDEBUG |
- // Setting a source which isn't in the mux as active should DCHECK fail. |
- EXPECT_DEATH({ mux_->SetActiveSource(source2_); }, ""); |
- |
- // Adding a source which is already added should DCHECK fail. |
- EXPECT_DEATH({ mux_->AddSource(source1_); }, ""); |
- |
- // Removing a source which isn't in the mux should DCHECK fail. |
- EXPECT_DEATH({ mux_->RemoveSource(source2_); }, ""); |
- |
- // Removing the active source fails |
- EXPECT_DEATH({ mux_->RemoveSource(source1_); }, ""); |
-#endif |
- |
- // Test manipulation doesn't segfault. |
- mux_->AddSource(source2_); |
- mux_->RemoveSource(source2_); |
- |
- mux_->AddSource(source2_); |
- mux_->SetActiveSource(source2_); |
- EXPECT_EQ(source2_, mux_->ActiveSource()); |
- |
- mux_->RemoveSource(source1_); |
-} |
- |
-TEST_F(BeginFrameSourceMultiplexerTest, SwitchActiveSource) { |
- mux_->AddSource(source1_); |
- mux_->AddSource(source2_); |
- |
- EXPECT_FALSE(source1_->has_observers()); |
- EXPECT_FALSE(source2_->has_observers()); |
- |
- MockBeginFrameObserver obs; |
- mux_->AddObserver(&obs); |
- |
- mux_->SetActiveSource(source1_); |
- EXPECT_TRUE(source1_->has_observers()); |
- EXPECT_FALSE(source2_->has_observers()); |
- |
- mux_->SetActiveSource(source2_); |
- EXPECT_FALSE(source1_->has_observers()); |
- EXPECT_TRUE(source2_->has_observers()); |
-} |
- |
-TEST_F(BeginFrameSourceMultiplexerTest, SingleObserver) { |
- mux_->AddSource(source1_); |
- mux_->AddSource(source2_); |
- mux_->SetActiveSource(source1_); |
- |
- EXPECT_FALSE(source1_->has_observers()); |
- EXPECT_FALSE(source2_->has_observers()); |
- |
- MockBeginFrameObserver obs; |
- EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs, false); |
- mux_->AddObserver(&obs); |
- EXPECT_TRUE(source1_->has_observers()); |
- EXPECT_FALSE(source2_->has_observers()); |
- |
- EXPECT_BEGIN_FRAME_USED(obs, 100, 200, 100); |
- SEND_BEGIN_FRAME_USED(*source1_, 100, 200, 100); |
- SEND_BEGIN_FRAME_DROP(*source2_, 150, 250, 100); |
- |
- mux_->RemoveObserver(&obs); |
- EXPECT_FALSE(source1_->has_observers()); |
- EXPECT_FALSE(source2_->has_observers()); |
-} |
- |
-TEST_F(BeginFrameSourceMultiplexerTest, MultipleObservers) { |
- mux_->AddSource(source1_); |
- mux_->AddSource(source2_); |
- mux_->SetActiveSource(source1_); |
- |
- EXPECT_FALSE(source1_->has_observers()); |
- EXPECT_FALSE(source2_->has_observers()); |
- |
- StrictMock<MockBeginFrameObserver> obs1, obs2; |
- EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs1, false); |
- mux_->AddObserver(&obs1); |
- EXPECT_TRUE(source1_->has_observers()); |
- EXPECT_FALSE(source2_->has_observers()); |
- |
- EXPECT_BEGIN_FRAME_USED(obs1, 100, 200, 100); |
- SEND_BEGIN_FRAME_USED(*source1_, 100, 200, 100); |
- SEND_BEGIN_FRAME_DROP(*source2_, 200, 300, 100); |
- |
- EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs2, false); |
- mux_->AddObserver(&obs2); |
- |
- EXPECT_BEGIN_FRAME_USED(obs1, 300, 400, 100); |
- EXPECT_BEGIN_FRAME_USED(obs2, 300, 400, 100); |
- SEND_BEGIN_FRAME_USED(*source1_, 300, 400, 100); |
- SEND_BEGIN_FRAME_DROP(*source2_, 400, 500, 100); |
- |
- EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs1, true); |
- EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs2, true); |
- source1_->SetBeginFrameSourcePaused(true); |
- |
- EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs1, false); |
- EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs2, false); |
- mux_->SetActiveSource(source2_); |
- EXPECT_FALSE(source1_->has_observers()); |
- EXPECT_TRUE(source2_->has_observers()); |
- |
- EXPECT_BEGIN_FRAME_USED(obs1, 600, 700, 100); |
- EXPECT_BEGIN_FRAME_USED(obs2, 600, 700, 100); |
- SEND_BEGIN_FRAME_DROP(*source1_, 500, 600, 100); |
- SEND_BEGIN_FRAME_USED(*source2_, 600, 700, 100); |
- |
- mux_->RemoveObserver(&obs1); |
- EXPECT_FALSE(source1_->has_observers()); |
- EXPECT_TRUE(source2_->has_observers()); |
- |
- EXPECT_BEGIN_FRAME_USED(obs2, 800, 900, 100); |
- SEND_BEGIN_FRAME_DROP(*source1_, 700, 800, 100); |
- SEND_BEGIN_FRAME_USED(*source2_, 800, 900, 100); |
- |
- mux_->RemoveObserver(&obs2); |
- EXPECT_FALSE(source1_->has_observers()); |
- EXPECT_FALSE(source2_->has_observers()); |
-} |
- |
-TEST_F(BeginFrameSourceMultiplexerTest, BeginFramesSimple) { |
- mux_->AddSource(source1_); |
- mux_->AddSource(source2_); |
- mux_->SetActiveSource(source1_); |
- |
- MockBeginFrameObserver obs; |
- EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs, false); |
- mux_->AddObserver(&obs); |
- EXPECT_BEGIN_FRAME_USED(obs, 100, 200, 300); |
- EXPECT_BEGIN_FRAME_USED(obs, 400, 600, 300); |
- |
- mux_->SetActiveSource(source1_); |
- |
- SEND_BEGIN_FRAME_USED(*source1_, 100, 200, 300); |
- SEND_BEGIN_FRAME_DROP(*source2_, 200, 500, 300); |
- |
- mux_->SetActiveSource(source2_); |
- SEND_BEGIN_FRAME_USED(*source2_, 400, 600, 300); |
- SEND_BEGIN_FRAME_DROP(*source1_, 500, 700, 300); |
-} |
- |
-TEST_F(BeginFrameSourceMultiplexerTest, BeginFramesBackwardsProtection) { |
- mux_->AddSource(source1_); |
- mux_->AddSource(source2_); |
- |
- MockBeginFrameObserver obs; |
- EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs, false); |
- mux_->AddObserver(&obs); |
- EXPECT_BEGIN_FRAME_USED(obs, 400, 600, 300); |
- EXPECT_BEGIN_FRAME_USED(obs, 700, 900, 300); |
- EXPECT_BEGIN_FRAME_USED(obs, 1000, 1200, 300); |
- EXPECT_BEGIN_FRAME_USED(obs, 1001, 1201, 301); |
- |
- mux_->SetActiveSource(source1_); |
- SEND_BEGIN_FRAME_USED(*source1_, 400, 600, 300); |
- SEND_BEGIN_FRAME_USED(*source1_, 700, 900, 300); |
- |
- mux_->SetActiveSource(source2_); |
- SEND_BEGIN_FRAME_DROP(*source2_, 699, 899, 300); |
- SEND_BEGIN_FRAME_USED(*source2_, 1000, 1200, 300); |
- |
- mux_->SetActiveSource(source1_); |
- SEND_BEGIN_FRAME_USED(*source1_, 1001, 1201, 301); |
-} |
- |
-TEST_F(BeginFrameSourceMultiplexerTest, MinimumIntervalNegativeFails) { |
-#ifndef NDEBUG |
- EXPECT_DEATH( |
- { mux_->SetMinimumInterval(base::TimeDelta::FromInternalValue(-100)); }, |
- ""); |
-#endif |
-} |
- |
-TEST_F(BeginFrameSourceMultiplexerTest, MinimumIntervalZero) { |
- mux_->SetMinimumInterval(base::TimeDelta()); |
- mux_->AddSource(source1_); |
- |
- MockBeginFrameObserver obs; |
- EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs, false); |
- mux_->AddObserver(&obs); |
- EXPECT_BEGIN_FRAME_USED(obs, 100, 200, 300); |
- EXPECT_BEGIN_FRAME_USED(obs, 400, 600, 300); |
- EXPECT_BEGIN_FRAME_USED(obs, 700, 900, 300); |
- |
- SEND_BEGIN_FRAME_USED(*source1_, 100, 200, 300); |
- SEND_BEGIN_FRAME_USED(*source1_, 400, 600, 300); |
- SEND_BEGIN_FRAME_USED(*source1_, 700, 900, 300); |
-} |
- |
-TEST_F(BeginFrameSourceMultiplexerTest, MinimumIntervalBasic) { |
- mux_->SetMinimumInterval(base::TimeDelta::FromInternalValue(600)); |
- mux_->AddSource(source1_); |
- |
- MockBeginFrameObserver obs; |
- EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs, false); |
- mux_->AddObserver(&obs); |
- EXPECT_BEGIN_FRAME_USED(obs, 100, 200, 300); |
- EXPECT_BEGIN_FRAME_USED(obs, 700, 900, 300); |
- |
- SEND_BEGIN_FRAME_USED(*source1_, 100, 200, 300); |
- SEND_BEGIN_FRAME_DROP(*source1_, 400, 600, 300); |
- SEND_BEGIN_FRAME_USED(*source1_, 700, 900, 300); |
-} |
- |
-TEST_F(BeginFrameSourceMultiplexerTest, MinimumIntervalWithMultipleSources) { |
- mux_->SetMinimumInterval(base::TimeDelta::FromMicroseconds(150)); |
- mux_->AddSource(source1_); |
- mux_->AddSource(source2_); |
- |
- MockBeginFrameObserver obs; |
- EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs, false); |
- mux_->AddObserver(&obs); |
- EXPECT_BEGIN_FRAME_USED(obs, 400, 600, 300); |
- EXPECT_BEGIN_FRAME_USED(obs, 700, 900, 300); |
- EXPECT_BEGIN_FRAME_USED(obs, 1050, 1250, 300); |
- |
- mux_->SetActiveSource(source1_); |
- SEND_BEGIN_FRAME_USED(*source1_, 400, 600, 300); |
- SEND_BEGIN_FRAME_USED(*source1_, 700, 900, 300); |
- |
- mux_->SetActiveSource(source2_); |
- SEND_BEGIN_FRAME_DROP(*source2_, 750, 1050, 300); |
- SEND_BEGIN_FRAME_USED(*source2_, 1050, 1250, 300); |
- |
- mux_->SetActiveSource(source1_); |
- SEND_BEGIN_FRAME_DROP(*source2_, 1100, 1400, 300); |
-} |
- |
-TEST_F(BeginFrameSourceMultiplexerTest, BeginFrameSourcePaused) { |
- mux_->AddSource(source1_); |
- mux_->AddSource(source2_); |
- mux_->SetActiveSource(source1_); |
- |
- MockBeginFrameObserver obs; |
- EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs, false); |
- mux_->AddObserver(&obs); |
- Mock::VerifyAndClearExpectations(&obs); |
- |
- EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs, true); |
- source1_->SetBeginFrameSourcePaused(true); |
- EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs, false); |
- source1_->SetBeginFrameSourcePaused(false); |
- Mock::VerifyAndClearExpectations(&obs); |
- |
- mux_->SetActiveSource(source2_); |
- Mock::VerifyAndClearExpectations(&obs); |
- |
- EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs, true); |
- source2_->SetBeginFrameSourcePaused(true); |
- EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs, false); |
- source2_->SetBeginFrameSourcePaused(false); |
-} |
- |
-TEST_F(BeginFrameSourceMultiplexerTest, |
- BeginFrameSourcePausedUpdateOnSourceTransition) { |
- mux_->AddSource(source1_); |
- mux_->AddSource(source2_); |
- source1_->SetBeginFrameSourcePaused(true); |
- source2_->SetBeginFrameSourcePaused(false); |
- mux_->SetActiveSource(source1_); |
- |
- MockBeginFrameObserver obs; |
- EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs, true); |
- mux_->AddObserver(&obs); |
- Mock::VerifyAndClearExpectations(&obs); |
- |
- // Paused to not paused. |
- EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs, false); |
- mux_->SetActiveSource(source2_); |
- Mock::VerifyAndClearExpectations(&obs); |
- |
- // Not paused to paused. |
- EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs, true); |
- mux_->SetActiveSource(source1_); |
- Mock::VerifyAndClearExpectations(&obs); |
- |
- EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs, false); |
- source1_->SetBeginFrameSourcePaused(false); |
- Mock::VerifyAndClearExpectations(&obs); |
- |
- // Not paused to not paused. |
- mux_->SetActiveSource(source2_); |
- Mock::VerifyAndClearExpectations(&obs); |
- |
- EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs, true); |
- source2_->SetBeginFrameSourcePaused(true); |
- Mock::VerifyAndClearExpectations(&obs); |
- source1_->SetBeginFrameSourcePaused(true); |
- |
- // Paused to paused. |
- mux_->SetActiveSource(source1_); |
- Mock::VerifyAndClearExpectations(&obs); |
-} |
- |
} // namespace |
} // namespace cc |