| Index: cc/resources/resource_provider.cc
 | 
| diff --git a/cc/resources/resource_provider.cc b/cc/resources/resource_provider.cc
 | 
| index b90b59477376960656266cdb0f60b87d0d8173b0..42ef4b389e3e24bbdda084df4cad5e9f850a10d9 100644
 | 
| --- a/cc/resources/resource_provider.cc
 | 
| +++ b/cc/resources/resource_provider.cc
 | 
| @@ -1087,17 +1087,25 @@ ResourceProvider::ScopedWriteLockGpuMemoryBuffer::GetGpuMemoryBuffer() {
 | 
|  
 | 
|  ResourceProvider::ScopedWriteLockGr::ScopedWriteLockGr(
 | 
|      ResourceProvider* resource_provider,
 | 
| -    ResourceProvider::ResourceId resource_id,
 | 
| -    bool use_distance_field_text,
 | 
| -    bool can_use_lcd_text,
 | 
| -    int msaa_sample_count)
 | 
| +    ResourceProvider::ResourceId resource_id)
 | 
|      : resource_provider_(resource_provider),
 | 
|        resource_(resource_provider->LockForWrite(resource_id)) {
 | 
| -  // Create the sk_surface.
 | 
| +  DCHECK(thread_checker_.CalledOnValidThread());
 | 
| +  resource_provider_->LazyAllocate(resource_);
 | 
| +}
 | 
| +
 | 
| +ResourceProvider::ScopedWriteLockGr::~ScopedWriteLockGr() {
 | 
|    DCHECK(thread_checker_.CalledOnValidThread());
 | 
|    DCHECK(resource_->locked_for_write);
 | 
| +  resource_provider_->UnlockForWrite(resource_);
 | 
| +}
 | 
|  
 | 
| -  resource_provider_->LazyAllocate(resource_);
 | 
| +void ResourceProvider::ScopedWriteLockGr::InitSkSurface(
 | 
| +    bool use_worker_context,
 | 
| +    bool use_distance_field_text,
 | 
| +    bool can_use_lcd_text,
 | 
| +    int msaa_sample_count) {
 | 
| +  DCHECK(resource_->locked_for_write);
 | 
|  
 | 
|    GrBackendTextureDesc desc;
 | 
|    desc.fFlags = kRenderTarget_GrBackendTextureFlag;
 | 
| @@ -1108,7 +1116,8 @@ ResourceProvider::ScopedWriteLockGr::ScopedWriteLockGr(
 | 
|    desc.fTextureHandle = resource_->gl_id;
 | 
|    desc.fSampleCnt = msaa_sample_count;
 | 
|  
 | 
| -  class GrContext* gr_context = resource_provider_->GrContext();
 | 
| +  class GrContext* gr_context =
 | 
| +      resource_provider_->GrContext(use_worker_context);
 | 
|    skia::RefPtr<GrTexture> gr_texture =
 | 
|        skia::AdoptRef(gr_context->wrapBackendTexture(desc));
 | 
|    if (gr_texture) {
 | 
| @@ -1124,12 +1133,13 @@ ResourceProvider::ScopedWriteLockGr::ScopedWriteLockGr(
 | 
|      }
 | 
|      sk_surface_ = skia::AdoptRef(SkSurface::NewRenderTargetDirect(
 | 
|          gr_texture->asRenderTarget(), &surface_props));
 | 
| +    return;
 | 
|    }
 | 
| +  sk_surface_.clear();
 | 
|  }
 | 
|  
 | 
| -ResourceProvider::ScopedWriteLockGr::~ScopedWriteLockGr() {
 | 
| -  DCHECK(thread_checker_.CalledOnValidThread());
 | 
| -  resource_provider_->UnlockForWrite(resource_);
 | 
| +void ResourceProvider::ScopedWriteLockGr::ReleaseSkSurface() {
 | 
| +  sk_surface_.clear();
 | 
|  }
 | 
|  
 | 
|  ResourceProvider::SynchronousFence::SynchronousFence(
 | 
| @@ -2135,8 +2145,10 @@ GLES2Interface* ResourceProvider::ContextGL() const {
 | 
|    return context_provider ? context_provider->ContextGL() : NULL;
 | 
|  }
 | 
|  
 | 
| -class GrContext* ResourceProvider::GrContext() const {
 | 
| -  ContextProvider* context_provider = output_surface_->context_provider();
 | 
| +class GrContext* ResourceProvider::GrContext(bool worker_context) const {
 | 
| +  ContextProvider* context_provider =
 | 
| +      worker_context ? output_surface_->worker_context_provider()
 | 
| +                     : output_surface_->context_provider();
 | 
|    return context_provider ? context_provider->GrContext() : NULL;
 | 
|  }
 | 
|  
 | 
| 
 |