Index: ui/compositor/compositor_unittest.cc |
diff --git a/ui/compositor/compositor_unittest.cc b/ui/compositor/compositor_unittest.cc |
index 1682482f1564b680520f1a2d346c80b3eccc4a95..1cf3ae2a0a2a90be3f748f109e6c6e081474ab20 100644 |
--- a/ui/compositor/compositor_unittest.cc |
+++ b/ui/compositor/compositor_unittest.cc |
@@ -24,11 +24,6 @@ ACTION_P2(RemoveObserver, compositor, observer) { |
compositor->RemoveBeginFrameObserver(observer); |
} |
-class MockCompositorBeginFrameObserver : public CompositorBeginFrameObserver { |
- public: |
- MOCK_METHOD1(OnSendBeginFrame, void(const cc::BeginFrameArgs&)); |
-}; |
- |
// Test fixture for tests that require a ui::Compositor with a real task |
// runner. |
class CompositorTest : public testing::Test { |
@@ -91,109 +86,6 @@ TEST_F(CompositorTest, LocksTimeOut) { |
} |
} |
-TEST_F(CompositorTest, AddAndRemoveBeginFrameObserver) { |
- cc::BeginFrameArgs args = |
- cc::CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, |
- base::TimeTicks::FromInternalValue(33)); |
- |
- MockCompositorBeginFrameObserver test_observer; |
- MockCompositorBeginFrameObserver test_observer2; |
- |
- // Add a single observer. |
- compositor()->AddBeginFrameObserver(&test_observer); |
- Mock::VerifyAndClearExpectations(&test_observer); |
- |
- // When |missed_begin_frame_args_| is sent, its type is set to MISSED. |
- cc::BeginFrameArgs expected_args(args); |
- cc::BeginFrameArgs expected_missed_args(args); |
- expected_missed_args.type = cc::BeginFrameArgs::MISSED; |
- |
- // Simulate to trigger new BeginFrame by using |args|. |
- EXPECT_CALL(test_observer, OnSendBeginFrame(expected_args)); |
- compositor()->SendBeginFramesToChildren(args); |
- Mock::VerifyAndClearExpectations(&test_observer); |
- |
- // When new observer is added, Compositor immediately calls OnSendBeginFrame |
- // with |missed_begin_frame_args_|. |
- EXPECT_CALL(test_observer2, OnSendBeginFrame(expected_missed_args)); |
- compositor()->AddBeginFrameObserver(&test_observer2); |
- Mock::VerifyAndClearExpectations(&test_observer); |
- Mock::VerifyAndClearExpectations(&test_observer2); |
- |
- // When |test_observer2| is removed and added again, it will be called again. |
- EXPECT_CALL(test_observer2, OnSendBeginFrame(expected_missed_args)); |
- compositor()->RemoveBeginFrameObserver(&test_observer2); |
- compositor()->AddBeginFrameObserver(&test_observer2); |
- Mock::VerifyAndClearExpectations(&test_observer2); |
- |
- // When all observer is removed, |missed_begin_frame_args_| is invalidated. |
- // So, it is not used for newly added observer. |
- EXPECT_CALL(test_observer2, OnSendBeginFrame(_)).Times(0); |
- compositor()->RemoveBeginFrameObserver(&test_observer); |
- compositor()->RemoveBeginFrameObserver(&test_observer2); |
- compositor()->SendBeginFramesToChildren(args); |
- compositor()->AddBeginFrameObserver(&test_observer2); |
- Mock::VerifyAndClearExpectations(&test_observer2); |
- |
- compositor()->RemoveBeginFrameObserver(&test_observer2); |
-} |
- |
-TEST_F(CompositorTest, RemoveBeginFrameObserverWhileSendingBeginFrame) { |
- cc::BeginFrameArgs args = cc::CreateBeginFrameArgsForTesting( |
- BEGINFRAME_FROM_HERE, base::TimeTicks::FromInternalValue(33)); |
- |
- cc::BeginFrameArgs expected_args(args); |
- cc::BeginFrameArgs expected_missed_args(args); |
- expected_missed_args.type = cc::BeginFrameArgs::MISSED; |
- |
- // Add both observers, and simulate removal of |test_observer2| during |
- // BeginFrame dispatch (implicitly triggered when the observer is added). |
- MockCompositorBeginFrameObserver test_observer; |
- MockCompositorBeginFrameObserver test_observer2; |
- EXPECT_CALL(test_observer, OnSendBeginFrame(expected_args)); |
- EXPECT_CALL(test_observer2, OnSendBeginFrame(expected_missed_args)) |
- .WillOnce(RemoveObserver(compositor(), &test_observer2)); |
- |
- // When a new observer is added, Compositor immediately calls OnSendBeginFrame |
- // with |missed_begin_frame_args_|. |
- compositor()->AddBeginFrameObserver(&test_observer); |
- compositor()->SendBeginFramesToChildren(args); |
- compositor()->AddBeginFrameObserver(&test_observer2); |
- Mock::VerifyAndClearExpectations(&test_observer); |
- Mock::VerifyAndClearExpectations(&test_observer2); |
- |
- // |test_observer2| was removed during the previous implicit BeginFrame |
- // dispatch, and should not get the new frame. |
- expected_args.type = cc::BeginFrameArgs::NORMAL; |
- EXPECT_CALL(test_observer, OnSendBeginFrame(expected_args)); |
- EXPECT_CALL(test_observer2, OnSendBeginFrame(_)).Times(0); |
- compositor()->SendBeginFramesToChildren(args); |
- Mock::VerifyAndClearExpectations(&test_observer); |
- Mock::VerifyAndClearExpectations(&test_observer2); |
- |
- // Now remove |test_observer| during explicit BeginFrame dispatch. |
- EXPECT_CALL(test_observer, OnSendBeginFrame(expected_args)) |
- .WillOnce(RemoveObserver(compositor(), &test_observer)); |
- EXPECT_CALL(test_observer2, OnSendBeginFrame(_)).Times(0); |
- compositor()->SendBeginFramesToChildren(args); |
- Mock::VerifyAndClearExpectations(&test_observer); |
- Mock::VerifyAndClearExpectations(&test_observer2); |
- |
- // No observers should get the new frame. |
- EXPECT_CALL(test_observer, OnSendBeginFrame(_)).Times(0); |
- EXPECT_CALL(test_observer2, OnSendBeginFrame(_)).Times(0); |
- compositor()->SendBeginFramesToChildren(args); |
- Mock::VerifyAndClearExpectations(&test_observer); |
- Mock::VerifyAndClearExpectations(&test_observer2); |
- |
- // Adding a new observer should not trigger a missed frame, as the |
- // previous frame had no observers. |
- EXPECT_CALL(test_observer, OnSendBeginFrame(_)).Times(0); |
- compositor()->AddBeginFrameObserver(&test_observer); |
- compositor()->RemoveBeginFrameObserver(&test_observer); |
- Mock::VerifyAndClearExpectations(&test_observer); |
-} |
- |
TEST_F(CompositorTest, ReleaseWidgetWithOutputSurfaceNeverCreated) { |
compositor()->SetVisible(false); |
EXPECT_EQ(gfx::kNullAcceleratedWidget, |