Chromium Code Reviews| Index: cc/output/gl_renderer_unittest.cc |
| diff --git a/cc/output/gl_renderer_unittest.cc b/cc/output/gl_renderer_unittest.cc |
| index 20054fc275762c7fa7e16224d96be094f73eb446..6f74784ea82f336d71bc003c5cb09290b493205d 100644 |
| --- a/cc/output/gl_renderer_unittest.cc |
| +++ b/cc/output/gl_renderer_unittest.cc |
| @@ -2079,35 +2079,44 @@ TEST_F(GLRendererPartialSwapTest, NoPartialSwap) { |
| RunTest(false); |
| } |
| -class GLRendererWithMockContextTest : public ::testing::Test { |
| +class GLRendererWithMockContextCacheControllerTest : public ::testing::Test { |
| protected: |
| - class MockContextProvider : public TestContextProvider { |
| + class MockContextCacheController : public ContextCacheController { |
| public: |
| - explicit MockContextProvider(std::unique_ptr<TestContextSupport> support) |
| - : TestContextProvider(std::move(support), |
| - base::MakeUnique<TestGLES2Interface>(), |
| - TestWebGraphicsContext3D::Create()) {} |
| + explicit MockContextCacheController(gpu::ContextSupport* support) |
| + : ContextCacheController(support) {} |
| + MOCK_METHOD0(OnClientBecameVisible, void()); |
| + MOCK_METHOD0(OnClientBecameNotVisible, void()); |
| + |
| + std::unique_ptr<ScopedVisibility> ClientBecameVisible() { |
| + if (num_visible_clients_ == 0) |
| + OnClientBecameVisible(); |
| + ++num_visible_clients_; |
| + return CreateScopedVisibilityForTesting(); |
|
danakj
2016/08/29 23:56:20
this could just call ContextCacheController::OnCli
ericrk
2016/08/30 18:18:58
Made un-virtual, so no longer an issue.
|
| + } |
| - MOCK_METHOD0(DeleteCachedResources, void()); |
| + void ClientBecameNotVisible( |
| + std::unique_ptr<ScopedVisibility> scoped_visibility) { |
| + --num_visible_clients_; |
| + if (num_visible_clients_ == 0) |
| + OnClientBecameNotVisible(); |
| + ReleaseScopedVisibilityForTesting(std::move(scoped_visibility)); |
| + } |
| private: |
| - ~MockContextProvider() = default; |
| - }; |
| - |
| - class MockContextSupport : public TestContextSupport { |
| - public: |
| - MockContextSupport() {} |
| - MOCK_METHOD1(SetAggressivelyFreeResources, |
| - void(bool aggressively_free_resources)); |
| - MOCK_METHOD2(SetClientVisible, void(int client_id, bool is_visible)); |
| - MOCK_CONST_METHOD0(AnyClientsVisible, bool()); |
| + int num_visible_clients_ = 0; |
| }; |
| void SetUp() override { |
| - auto context_support = base::MakeUnique<MockContextSupport>(); |
| - context_support_ptr_ = context_support.get(); |
| - context_provider_ = new MockContextProvider(std::move(context_support)); |
| - output_surface_ = FakeOutputSurface::Create3d(context_provider_); |
| + auto support = base::MakeUnique<TestContextSupport>(); |
| + auto context = TestWebGraphicsContext3D::Create(); |
| + auto cache_controller = |
| + base::MakeUnique<::testing::StrictMock<MockContextCacheController>>( |
| + support.get()); |
| + mock_cache_controller_ = cache_controller.get(); |
| + auto context_provider = TestContextProvider::Create( |
| + std::move(context), std::move(support), std::move(cache_controller)); |
| + output_surface_ = FakeOutputSurface::Create3d(std::move(context_provider)); |
| output_surface_->BindToClient(&output_surface_client_); |
| resource_provider_ = |
| FakeResourceProvider::Create(output_surface_.get(), nullptr); |
| @@ -2119,32 +2128,21 @@ class GLRendererWithMockContextTest : public ::testing::Test { |
| RendererSettings settings_; |
| FakeOutputSurfaceClient output_surface_client_; |
| - MockContextSupport* context_support_ptr_; |
| - scoped_refptr<MockContextProvider> context_provider_; |
| + MockContextCacheController* mock_cache_controller_; |
| std::unique_ptr<OutputSurface> output_surface_; |
| std::unique_ptr<ResourceProvider> resource_provider_; |
| std::unique_ptr<GLRenderer> renderer_; |
| }; |
| -TEST_F(GLRendererWithMockContextTest, |
| +TEST_F(GLRendererWithMockContextCacheControllerTest, |
| ContextPurgedWhenRendererBecomesInvisible) { |
| - // Ensure our expectations run in order. |
| - ::testing::InSequence s; |
| - |
| - EXPECT_CALL(*context_support_ptr_, SetClientVisible(0, true)); |
| - EXPECT_CALL(*context_support_ptr_, AnyClientsVisible()) |
| - .WillOnce(Return(true)); |
| - EXPECT_CALL(*context_support_ptr_, SetAggressivelyFreeResources(false)); |
| + EXPECT_CALL(*mock_cache_controller_, OnClientBecameVisible()); |
| renderer_->SetVisible(true); |
| - Mock::VerifyAndClearExpectations(context_support_ptr_); |
| + Mock::VerifyAndClearExpectations(mock_cache_controller_); |
| - EXPECT_CALL(*context_support_ptr_, SetClientVisible(0, false)); |
| - EXPECT_CALL(*context_support_ptr_, AnyClientsVisible()) |
| - .WillOnce(Return(false)); |
| - EXPECT_CALL(*context_provider_, DeleteCachedResources()); |
| - EXPECT_CALL(*context_support_ptr_, SetAggressivelyFreeResources(true)); |
| + EXPECT_CALL(*mock_cache_controller_, OnClientBecameNotVisible()); |
| renderer_->SetVisible(false); |
| - Mock::VerifyAndClearExpectations(context_support_ptr_); |
| + Mock::VerifyAndClearExpectations(mock_cache_controller_); |
| } |
| } // namespace |