Index: cc/output/gl_renderer_unittest.cc |
diff --git a/cc/output/gl_renderer_unittest.cc b/cc/output/gl_renderer_unittest.cc |
index da940bfc57dc06ecff20e0eadca911f457c383a5..d9456b38a2dff99bc009d2de3a22e832ae144bb1 100644 |
--- a/cc/output/gl_renderer_unittest.cc |
+++ b/cc/output/gl_renderer_unittest.cc |
@@ -340,9 +340,8 @@ class FakeRendererGL : public GLRenderer { |
class GLRendererWithDefaultHarnessTest : public GLRendererTest { |
protected: |
GLRendererWithDefaultHarnessTest() { |
- output_surface_ = |
- FakeOutputSurface::Create3d(TestWebGraphicsContext3D::Create()); |
- CHECK(output_surface_->BindToClient(&output_surface_client_)); |
+ output_surface_ = FakeOutputSurface::Create3d(); |
+ output_surface_->BindToClient(&output_surface_client_); |
shared_bitmap_manager_.reset(new TestSharedBitmapManager()); |
resource_provider_ = FakeResourceProvider::Create( |
@@ -372,7 +371,7 @@ class GLRendererShaderTest : public GLRendererTest { |
protected: |
GLRendererShaderTest() { |
output_surface_ = FakeOutputSurface::Create3d(); |
- CHECK(output_surface_->BindToClient(&output_surface_client_)); |
+ output_surface_->BindToClient(&output_surface_client_); |
shared_bitmap_manager_.reset(new TestSharedBitmapManager()); |
resource_provider_ = FakeResourceProvider::Create( |
@@ -599,11 +598,14 @@ class ForbidSynchronousCallContext : public TestWebGraphicsContext3D { |
} |
}; |
TEST_F(GLRendererTest, InitializationDoesNotMakeSynchronousCalls) { |
+ auto context = base::MakeUnique<ForbidSynchronousCallContext>(); |
+ auto provider = TestContextProvider::Create(std::move(context)); |
+ provider->BindToCurrentThread(); |
+ |
FakeOutputSurfaceClient output_surface_client; |
std::unique_ptr<OutputSurface> output_surface( |
- FakeOutputSurface::Create3d(std::unique_ptr<TestWebGraphicsContext3D>( |
- new ForbidSynchronousCallContext))); |
- CHECK(output_surface->BindToClient(&output_surface_client)); |
+ FakeOutputSurface::Create3d(std::move(provider))); |
+ output_surface->BindToClient(&output_surface_client); |
std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( |
new TestSharedBitmapManager()); |
@@ -632,11 +634,14 @@ class LoseContextOnFirstGetContext : public TestWebGraphicsContext3D { |
}; |
TEST_F(GLRendererTest, InitializationWithQuicklyLostContextDoesNotAssert) { |
+ auto context = base::MakeUnique<LoseContextOnFirstGetContext>(); |
+ auto provider = TestContextProvider::Create(std::move(context)); |
+ provider->BindToCurrentThread(); |
+ |
FakeOutputSurfaceClient output_surface_client; |
std::unique_ptr<OutputSurface> output_surface( |
- FakeOutputSurface::Create3d(std::unique_ptr<TestWebGraphicsContext3D>( |
- new LoseContextOnFirstGetContext))); |
- CHECK(output_surface->BindToClient(&output_surface_client)); |
+ FakeOutputSurface::Create3d(std::move(provider))); |
+ output_surface->BindToClient(&output_surface_client); |
std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( |
new TestSharedBitmapManager()); |
@@ -664,10 +669,13 @@ TEST_F(GLRendererTest, OpaqueBackground) { |
std::unique_ptr<ClearCountingContext> context_owned(new ClearCountingContext); |
ClearCountingContext* context = context_owned.get(); |
+ auto provider = TestContextProvider::Create(std::move(context_owned)); |
+ provider->BindToCurrentThread(); |
+ |
FakeOutputSurfaceClient output_surface_client; |
std::unique_ptr<OutputSurface> output_surface( |
- FakeOutputSurface::Create3d(std::move(context_owned))); |
- CHECK(output_surface->BindToClient(&output_surface_client)); |
+ FakeOutputSurface::Create3d(std::move(provider))); |
+ output_surface->BindToClient(&output_surface_client); |
std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( |
new TestSharedBitmapManager()); |
@@ -705,10 +713,13 @@ TEST_F(GLRendererTest, TransparentBackground) { |
std::unique_ptr<ClearCountingContext> context_owned(new ClearCountingContext); |
ClearCountingContext* context = context_owned.get(); |
+ auto provider = TestContextProvider::Create(std::move(context_owned)); |
+ provider->BindToCurrentThread(); |
+ |
FakeOutputSurfaceClient output_surface_client; |
std::unique_ptr<OutputSurface> output_surface( |
- FakeOutputSurface::Create3d(std::move(context_owned))); |
- CHECK(output_surface->BindToClient(&output_surface_client)); |
+ FakeOutputSurface::Create3d(std::move(provider))); |
+ output_surface->BindToClient(&output_surface_client); |
std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( |
new TestSharedBitmapManager()); |
@@ -739,10 +750,13 @@ TEST_F(GLRendererTest, OffscreenOutputSurface) { |
std::unique_ptr<ClearCountingContext> context_owned(new ClearCountingContext); |
ClearCountingContext* context = context_owned.get(); |
+ auto provider = TestContextProvider::Create(std::move(context_owned)); |
+ provider->BindToCurrentThread(); |
+ |
FakeOutputSurfaceClient output_surface_client; |
std::unique_ptr<OutputSurface> output_surface( |
- FakeOutputSurface::CreateOffscreen(std::move(context_owned))); |
- CHECK(output_surface->BindToClient(&output_surface_client)); |
+ FakeOutputSurface::CreateOffscreen(std::move(provider))); |
+ output_surface->BindToClient(&output_surface_client); |
std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( |
new TestSharedBitmapManager()); |
@@ -795,10 +809,13 @@ TEST_F(GLRendererTest, ActiveTextureState) { |
new TextureStateTrackingContext); |
TextureStateTrackingContext* context = context_owned.get(); |
+ auto provider = TestContextProvider::Create(std::move(context_owned)); |
+ provider->BindToCurrentThread(); |
+ |
FakeOutputSurfaceClient output_surface_client; |
std::unique_ptr<OutputSurface> output_surface( |
- FakeOutputSurface::Create3d(std::move(context_owned))); |
- CHECK(output_surface->BindToClient(&output_surface_client)); |
+ FakeOutputSurface::Create3d(std::move(provider))); |
+ output_surface->BindToClient(&output_surface_client); |
std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( |
new TestSharedBitmapManager()); |
@@ -876,10 +893,13 @@ TEST_F(GLRendererTest, ShouldClearRootRenderPass) { |
new NoClearRootRenderPassMockContext); |
NoClearRootRenderPassMockContext* mock_context = mock_context_owned.get(); |
+ auto provider = TestContextProvider::Create(std::move(mock_context_owned)); |
+ provider->BindToCurrentThread(); |
+ |
FakeOutputSurfaceClient output_surface_client; |
std::unique_ptr<OutputSurface> output_surface( |
- FakeOutputSurface::Create3d(std::move(mock_context_owned))); |
- CHECK(output_surface->BindToClient(&output_surface_client)); |
+ FakeOutputSurface::Create3d(std::move(provider))); |
+ output_surface->BindToClient(&output_surface_client); |
std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( |
new TestSharedBitmapManager()); |
@@ -961,10 +981,13 @@ class ScissorTestOnClearCheckingGLES2Interface : public TestGLES2Interface { |
TEST_F(GLRendererTest, ScissorTestWhenClearing) { |
auto gl_owned = base::MakeUnique<ScissorTestOnClearCheckingGLES2Interface>(); |
+ auto provider = TestContextProvider::Create(std::move(gl_owned)); |
+ provider->BindToCurrentThread(); |
+ |
FakeOutputSurfaceClient output_surface_client; |
- std::unique_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d( |
- TestContextProvider::Create(std::move(gl_owned)))); |
- CHECK(output_surface->BindToClient(&output_surface_client)); |
+ std::unique_ptr<OutputSurface> output_surface( |
+ FakeOutputSurface::Create3d(std::move(provider))); |
+ output_surface->BindToClient(&output_surface_client); |
std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( |
new TestSharedBitmapManager()); |
@@ -1034,9 +1057,12 @@ TEST_F(GLRendererTest, NoDiscardOnPartialUpdates) { |
auto gl_owned = base::MakeUnique<DiscardCheckingGLES2Interface>(); |
auto* gl = gl_owned.get(); |
+ auto provider = TestContextProvider::Create(std::move(gl_owned)); |
+ provider->BindToCurrentThread(); |
+ |
FakeOutputSurfaceClient output_surface_client; |
- auto output_surface = FakeOutputSurface::Create3d(std::move(gl_owned)); |
- CHECK(output_surface->BindToClient(&output_surface_client)); |
+ auto output_surface = FakeOutputSurface::Create3d(std::move(provider)); |
+ output_surface->BindToClient(&output_surface_client); |
std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( |
new TestSharedBitmapManager()); |
@@ -1115,8 +1141,8 @@ TEST_F(GLRendererTest, DrawFramePreservesFramebuffer) { |
// has finished. |
FakeOutputSurfaceClient output_surface_client; |
std::unique_ptr<FakeOutputSurface> output_surface( |
- FakeOutputSurface::Create3d(TestWebGraphicsContext3D::Create())); |
- CHECK(output_surface->BindToClient(&output_surface_client)); |
+ FakeOutputSurface::Create3d()); |
+ output_surface->BindToClient(&output_surface_client); |
std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( |
new TestSharedBitmapManager()); |
@@ -1453,11 +1479,12 @@ class OutputSurfaceMockContext : public TestWebGraphicsContext3D { |
class MockOutputSurface : public OutputSurface { |
public: |
- MockOutputSurface() |
- : OutputSurface(TestContextProvider::Create( |
- base::MakeUnique<StrictMock<OutputSurfaceMockContext>>())) {} |
+ explicit MockOutputSurface(scoped_refptr<ContextProvider> provider) |
+ : OutputSurface(std::move(provider)) {} |
virtual ~MockOutputSurface() {} |
+ void BindToClient(OutputSurfaceClient*) override {} |
+ |
MOCK_METHOD0(EnsureBackbuffer, void()); |
MOCK_METHOD0(DiscardBackbuffer, void()); |
MOCK_METHOD4(Reshape, |
@@ -1480,22 +1507,29 @@ class MockOutputSurface : public OutputSurface { |
class MockOutputSurfaceTest : public GLRendererTest { |
protected: |
- virtual void SetUp() { |
+ void SetUp() override { |
+ auto context = base::MakeUnique<StrictMock<OutputSurfaceMockContext>>(); |
+ context_ = context.get(); |
+ auto provider = TestContextProvider::Create(std::move(context)); |
+ provider->BindToCurrentThread(); |
+ output_surface_ = |
+ base::MakeUnique<StrictMock<MockOutputSurface>>(std::move(provider)); |
+ |
FakeOutputSurfaceClient output_surface_client_; |
- CHECK(output_surface_.BindToClient(&output_surface_client_)); |
+ output_surface_->BindToClient(&output_surface_client_); |
shared_bitmap_manager_.reset(new TestSharedBitmapManager()); |
resource_provider_ = FakeResourceProvider::Create( |
- output_surface_.context_provider(), shared_bitmap_manager_.get()); |
+ output_surface_->context_provider(), shared_bitmap_manager_.get()); |
- renderer_.reset(new FakeRendererGL(&settings_, &output_surface_, |
+ renderer_.reset(new FakeRendererGL(&settings_, output_surface_.get(), |
resource_provider_.get())); |
- EXPECT_CALL(output_surface_, GetOverlayCandidateValidator()).Times(1); |
+ EXPECT_CALL(*output_surface_, GetOverlayCandidateValidator()).Times(1); |
renderer_->Initialize(); |
- EXPECT_CALL(output_surface_, EnsureBackbuffer()).Times(1); |
+ EXPECT_CALL(*output_surface_, EnsureBackbuffer()).Times(1); |
renderer_->SetVisible(true); |
- Mock::VerifyAndClearExpectations(&output_surface_); |
+ Mock::VerifyAndClearExpectations(output_surface_.get()); |
} |
void SwapBuffers() { renderer_->SwapBuffers(std::vector<ui::LatencyInfo>()); } |
@@ -1510,15 +1544,15 @@ class MockOutputSurfaceTest : public GLRendererTest { |
AddQuad(render_pass, gfx::Rect(viewport_size), SK_ColorGREEN); |
render_pass->has_transparent_background = transparent; |
- EXPECT_CALL(output_surface_, EnsureBackbuffer()).WillRepeatedly(Return()); |
+ EXPECT_CALL(*output_surface_, EnsureBackbuffer()).WillRepeatedly(Return()); |
- EXPECT_CALL(output_surface_, |
+ EXPECT_CALL(*output_surface_, |
Reshape(viewport_size, device_scale_factor, _, transparent)) |
.Times(1); |
- EXPECT_CALL(output_surface_, BindFramebuffer()).Times(1); |
+ EXPECT_CALL(*output_surface_, BindFramebuffer()).Times(1); |
- EXPECT_CALL(*Context(), drawElements(_, _, _, _)).Times(1); |
+ EXPECT_CALL(*context_, drawElements(_, _, _, _)).Times(1); |
renderer_->DecideRenderPassAllocationsForFrame( |
render_passes_in_draw_order_); |
@@ -1526,15 +1560,10 @@ class MockOutputSurfaceTest : public GLRendererTest { |
gfx::ColorSpace(), viewport_size); |
} |
- OutputSurfaceMockContext* Context() { |
- return static_cast<OutputSurfaceMockContext*>( |
- static_cast<TestContextProvider*>(output_surface_.context_provider()) |
- ->TestContext3d()); |
- } |
- |
RendererSettings settings_; |
FakeOutputSurfaceClient output_surface_client_; |
- StrictMock<MockOutputSurface> output_surface_; |
+ OutputSurfaceMockContext* context_ = nullptr; |
+ std::unique_ptr<StrictMock<MockOutputSurface>> output_surface_; |
std::unique_ptr<SharedBitmapManager> shared_bitmap_manager_; |
std::unique_ptr<ResourceProvider> resource_provider_; |
std::unique_ptr<FakeRendererGL> renderer_; |
@@ -1542,14 +1571,14 @@ class MockOutputSurfaceTest : public GLRendererTest { |
TEST_F(MockOutputSurfaceTest, BackbufferDiscard) { |
// Drop backbuffer on hide. |
- EXPECT_CALL(output_surface_, DiscardBackbuffer()).Times(1); |
+ EXPECT_CALL(*output_surface_, DiscardBackbuffer()).Times(1); |
renderer_->SetVisible(false); |
- Mock::VerifyAndClearExpectations(&output_surface_); |
+ Mock::VerifyAndClearExpectations(output_surface_.get()); |
// Restore backbuffer on show. |
- EXPECT_CALL(output_surface_, EnsureBackbuffer()).Times(1); |
+ EXPECT_CALL(*output_surface_, EnsureBackbuffer()).Times(1); |
renderer_->SetVisible(true); |
- Mock::VerifyAndClearExpectations(&output_surface_); |
+ Mock::VerifyAndClearExpectations(output_surface_.get()); |
} |
class TestOverlayProcessor : public OverlayProcessor { |
@@ -1601,7 +1630,7 @@ TEST_F(GLRendererTest, DontOverlayWithCopyRequests) { |
FakeOutputSurfaceClient output_surface_client; |
std::unique_ptr<FakeOutputSurface> output_surface( |
FakeOutputSurface::Create3d()); |
- CHECK(output_surface->BindToClient(&output_surface_client)); |
+ output_surface->BindToClient(&output_surface_client); |
std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( |
new TestSharedBitmapManager()); |
@@ -1749,16 +1778,17 @@ TEST_F(GLRendererTest, OverlaySyncTokensAreProcessed) { |
new WaitSyncTokenCountingContext); |
WaitSyncTokenCountingContext* context = context_owned.get(); |
+ auto provider = TestContextProvider::Create(std::move(context_owned)); |
+ provider->BindToCurrentThread(); |
+ |
MockOverlayScheduler overlay_scheduler; |
- scoped_refptr<TestContextProvider> context_provider = |
- TestContextProvider::Create(std::move(context_owned)); |
- context_provider->support()->SetScheduleOverlayPlaneCallback(base::Bind( |
+ provider->support()->SetScheduleOverlayPlaneCallback(base::Bind( |
&MockOverlayScheduler::Schedule, base::Unretained(&overlay_scheduler))); |
FakeOutputSurfaceClient output_surface_client; |
std::unique_ptr<OutputSurface> output_surface( |
- FakeOutputSurface::Create3d(context_provider)); |
- CHECK(output_surface->BindToClient(&output_surface_client)); |
+ FakeOutputSurface::Create3d(std::move(provider))); |
+ output_surface->BindToClient(&output_surface_client); |
std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( |
new TestSharedBitmapManager()); |
@@ -1842,10 +1872,13 @@ class GLRendererPartialSwapTest : public GLRendererTest { |
auto gl_owned = base::MakeUnique<PartialSwapMockGLES2Interface>(); |
auto* gl = gl_owned.get(); |
+ auto provider = TestContextProvider::Create(std::move(gl_owned)); |
+ provider->BindToCurrentThread(); |
+ |
FakeOutputSurfaceClient output_surface_client; |
std::unique_ptr<FakeOutputSurface> output_surface( |
- FakeOutputSurface::Create3d(std::move(gl_owned))); |
- CHECK(output_surface->BindToClient(&output_surface_client)); |
+ FakeOutputSurface::Create3d(std::move(provider))); |
+ output_surface->BindToClient(&output_surface_client); |
std::unique_ptr<ResourceProvider> resource_provider = |
FakeResourceProvider::Create(output_surface->context_provider(), |
@@ -1923,6 +1956,7 @@ class GLRendererWithMockContextTest : public ::testing::Test { |
context_support_ptr_ = context_support.get(); |
auto context_provider = TestContextProvider::Create( |
TestWebGraphicsContext3D::Create(), std::move(context_support)); |
+ context_provider->BindToCurrentThread(); |
output_surface_ = FakeOutputSurface::Create3d(std::move(context_provider)); |
output_surface_->BindToClient(&output_surface_client_); |
resource_provider_ = FakeResourceProvider::Create( |