| Index: cc/output/output_surface_unittest.cc
 | 
| diff --git a/cc/output/output_surface_unittest.cc b/cc/output/output_surface_unittest.cc
 | 
| index 4336f07eccc0171372d9f5e4b50f3dc99dfef131..f32a96f21839917e8fe7d664b7ed353891865a1d 100644
 | 
| --- a/cc/output/output_surface_unittest.cc
 | 
| +++ b/cc/output/output_surface_unittest.cc
 | 
| @@ -25,6 +25,10 @@ class TestOutputSurface : public OutputSurface {
 | 
|    explicit TestOutputSurface(scoped_refptr<ContextProvider> context_provider)
 | 
|        : OutputSurface(context_provider) {}
 | 
|  
 | 
| +  TestOutputSurface(scoped_refptr<ContextProvider> context_provider,
 | 
| +                    scoped_refptr<ContextProvider> worker_context_provider)
 | 
| +      : OutputSurface(worker_context_provider) {}
 | 
| +
 | 
|    explicit TestOutputSurface(scoped_ptr<SoftwareOutputDevice> software_device)
 | 
|        : OutputSurface(software_device.Pass()) {}
 | 
|  
 | 
| @@ -37,9 +41,8 @@ class TestOutputSurface : public OutputSurface {
 | 
|      client_->DidSwapBuffersComplete();
 | 
|    }
 | 
|  
 | 
| -  bool InitializeNewContext3d(
 | 
| -      scoped_refptr<ContextProvider> new_context_provider) {
 | 
| -    return InitializeAndSetContext3d(new_context_provider);
 | 
| +  bool InitializeNewContext3d(scoped_refptr<ContextProvider> context_provider) {
 | 
| +    return InitializeAndSetContext3d(context_provider, nullptr);
 | 
|    }
 | 
|  
 | 
|    using OutputSurface::ReleaseGL;
 | 
| @@ -106,6 +109,26 @@ TEST(OutputSurfaceTest, ClientPointerIndicatesBindToClientSuccess) {
 | 
|    EXPECT_TRUE(client.did_lose_output_surface_called());
 | 
|  }
 | 
|  
 | 
| +TEST(OutputSurfaceTest, ClientPointerIndicatesWorkerBindToClientSuccess) {
 | 
| +  scoped_refptr<TestContextProvider> provider = TestContextProvider::Create();
 | 
| +  scoped_refptr<TestContextProvider> worker_provider =
 | 
| +      TestContextProvider::Create();
 | 
| +  TestOutputSurface output_surface(provider, worker_provider);
 | 
| +  EXPECT_FALSE(output_surface.HasClient());
 | 
| +
 | 
| +  FakeOutputSurfaceClient client;
 | 
| +  EXPECT_TRUE(output_surface.BindToClient(&client));
 | 
| +  EXPECT_TRUE(output_surface.HasClient());
 | 
| +  EXPECT_FALSE(client.deferred_initialize_called());
 | 
| +
 | 
| +  // Verify DidLoseOutputSurface callback is hooked up correctly.
 | 
| +  EXPECT_FALSE(client.did_lose_output_surface_called());
 | 
| +  output_surface.context_provider()->ContextGL()->LoseContextCHROMIUM(
 | 
| +      GL_GUILTY_CONTEXT_RESET_ARB, GL_INNOCENT_CONTEXT_RESET_ARB);
 | 
| +  output_surface.context_provider()->ContextGL()->Flush();
 | 
| +  EXPECT_TRUE(client.did_lose_output_surface_called());
 | 
| +}
 | 
| +
 | 
|  TEST(OutputSurfaceTest, ClientPointerIndicatesBindToClientFailure) {
 | 
|    scoped_refptr<TestContextProvider> context_provider =
 | 
|        TestContextProvider::Create();
 | 
| @@ -121,6 +144,23 @@ TEST(OutputSurfaceTest, ClientPointerIndicatesBindToClientFailure) {
 | 
|    EXPECT_FALSE(output_surface.HasClient());
 | 
|  }
 | 
|  
 | 
| +TEST(OutputSurfaceTest, ClientPointerIndicatesWorkerBindToClientFailure) {
 | 
| +  scoped_refptr<TestContextProvider> context_provider =
 | 
| +      TestContextProvider::Create();
 | 
| +  scoped_refptr<TestContextProvider> worker_context_provider =
 | 
| +      TestContextProvider::Create();
 | 
| +
 | 
| +  // Lose the context so BindToClient fails.
 | 
| +  worker_context_provider->UnboundTestContext3d()->set_context_lost(true);
 | 
| +
 | 
| +  TestOutputSurface output_surface(context_provider, worker_context_provider);
 | 
| +  EXPECT_FALSE(output_surface.HasClient());
 | 
| +
 | 
| +  FakeOutputSurfaceClient client;
 | 
| +  EXPECT_FALSE(output_surface.BindToClient(&client));
 | 
| +  EXPECT_FALSE(output_surface.HasClient());
 | 
| +}
 | 
| +
 | 
|  class OutputSurfaceTestInitializeNewContext3d : public ::testing::Test {
 | 
|   public:
 | 
|    OutputSurfaceTestInitializeNewContext3d()
 | 
| 
 |