Chromium Code Reviews| Index: cc/output/renderer_unittest.cc |
| diff --git a/cc/output/renderer_unittest.cc b/cc/output/renderer_unittest.cc |
| index 67d13caf40a7f6af65e2308488ea2268fc4c30d1..a69f5d4feb7dd7f68cf8620ec64a7c2ce17d00b4 100644 |
| --- a/cc/output/renderer_unittest.cc |
| +++ b/cc/output/renderer_unittest.cc |
| @@ -18,7 +18,8 @@ namespace { |
| class TestOutputSurface : public OutputSurface { |
| public: |
| - explicit TestOutputSurface(scoped_refptr<ContextProvider> context_provider); |
| + explicit TestOutputSurface( |
| + std::unique_ptr<ContextProvider::DeferredCreate> context_provider_create); |
| ~TestOutputSurface() override; |
| // OutputSurface implementation |
| @@ -26,8 +27,8 @@ class TestOutputSurface : public OutputSurface { |
| }; |
| TestOutputSurface::TestOutputSurface( |
| - scoped_refptr<ContextProvider> context_provider) |
| - : OutputSurface(std::move(context_provider)) {} |
| + std::unique_ptr<ContextProvider::DeferredCreate> context_provider_create) |
| + : OutputSurface(std::move(context_provider_create)) {} |
| TestOutputSurface::~TestOutputSurface() { |
| } |
| @@ -39,9 +40,23 @@ void TestOutputSurface::SwapBuffers(CompositorFrame* frame) { |
| class MockContextProvider : public TestContextProvider { |
| public: |
| - explicit MockContextProvider( |
| - std::unique_ptr<TestWebGraphicsContext3D> context) |
| - : TestContextProvider(std::move(context)) {} |
| + MockContextProvider() |
| + : TestContextProvider(TestWebGraphicsContext3D::Create()) {} |
| + |
| + class DeferredCreate : public ContextProvider::DeferredCreate { |
| + public: |
| + explicit DeferredCreate(MockContextProvider** created) |
| + : created_(created) {} |
| + scoped_refptr<ContextProvider> CreateContext() override { |
| + scoped_refptr<MockContextProvider> context(new MockContextProvider); |
| + *created_ = context.get(); |
| + return context; |
| + } |
| + |
| + private: |
| + MockContextProvider** created_; |
| + }; |
| + |
| MOCK_METHOD0(DeleteCachedResources, void()); |
| protected: |
| @@ -78,9 +93,9 @@ template <typename T> |
| class RendererTest : public ::testing::Test { |
| protected: |
| virtual void SetUp() { |
| - context_provider_ = |
| - new MockContextProvider(TestWebGraphicsContext3D::Create()); |
| - output_surface_.reset(new TestOutputSurface(context_provider_)); |
| + output_surface_.reset(new TestOutputSurface( |
| + base::MakeUnique<MockContextProvider::DeferredCreate>( |
| + &context_provider_))); |
|
piman
2016/05/17 03:41:40
How about still creating the context provider here
danakj
2016/05/17 19:53:33
That is a pretty good idea. Done.
|
| output_surface_->BindToClient(&output_surface_client_); |
| resource_provider_ = |
| FakeResourceProvider::Create(output_surface_.get(), nullptr); |
| @@ -93,7 +108,7 @@ class RendererTest : public ::testing::Test { |
| FakeRendererClient renderer_client_; |
| RendererSettings tree_settings_; |
| FakeOutputSurfaceClient output_surface_client_; |
| - scoped_refptr<MockContextProvider> context_provider_; |
| + MockContextProvider* context_provider_; |
| std::unique_ptr<OutputSurface> output_surface_; |
| std::unique_ptr<ResourceProvider> resource_provider_; |
| std::unique_ptr<Renderer> renderer_; |
| @@ -103,8 +118,7 @@ typedef ::testing::Types<DelegatingRenderer, GLRenderer> RendererTypes; |
| TYPED_TEST_CASE(RendererTest, RendererTypes); |
| TYPED_TEST(RendererTest, ContextPurgedWhenRendererBecomesInvisible) { |
| - EXPECT_CALL(*(this->context_provider_.get()), DeleteCachedResources()) |
| - .Times(1); |
| + EXPECT_CALL(*this->context_provider_, DeleteCachedResources()).Times(1); |
| EXPECT_TRUE(this->renderer_->visible()); |
| this->renderer_->SetVisible(false); |