| Index: content/browser/renderer_host/delegated_frame_host.cc
 | 
| diff --git a/content/browser/renderer_host/delegated_frame_host.cc b/content/browser/renderer_host/delegated_frame_host.cc
 | 
| index 2457eaef2925f40e7241def67cbd9667dd6f98ad..c922d8a282eaa0c2ceea12ae5ec23c70380f2edb 100644
 | 
| --- a/content/browser/renderer_host/delegated_frame_host.cc
 | 
| +++ b/content/browser/renderer_host/delegated_frame_host.cc
 | 
| @@ -82,6 +82,8 @@ DelegatedFrameHost::DelegatedFrameHost(const cc::FrameSinkId& frame_sink_id,
 | 
|    factory->GetSurfaceManager()->RegisterFrameSinkId(frame_sink_id_);
 | 
|    factory->GetSurfaceManager()->RegisterSurfaceFactoryClient(frame_sink_id_,
 | 
|                                                               this);
 | 
| +  surface_factory_ = base::MakeUnique<cc::SurfaceFactory>(
 | 
| +      frame_sink_id_, factory->GetSurfaceManager(), this);
 | 
|  }
 | 
|  
 | 
|  void DelegatedFrameHost::WasShown(const ui::LatencyInfo& latency_info) {
 | 
| @@ -387,7 +389,7 @@ void DelegatedFrameHost::AttemptFrameSubscriberCapture(
 | 
|          subscriber_texture->target()));
 | 
|    }
 | 
|  
 | 
| -  if (surface_factory_.get()) {
 | 
| +  if (!local_frame_id_.is_null()) {
 | 
|      // To avoid unnecessary composites, go directly to the Surface rather than
 | 
|      // through RequestCopyOfOutput (which goes through the browser
 | 
|      // compositor).
 | 
| @@ -456,7 +458,7 @@ void DelegatedFrameHost::SwapDelegatedFrame(uint32_t compositor_frame_sink_id,
 | 
|      // the DelegatedRendererLayer.
 | 
|      EvictDelegatedFrame();
 | 
|  
 | 
| -    surface_factory_.reset();
 | 
| +    surface_factory_->Reset();
 | 
|      if (!surface_returned_resources_.empty()) {
 | 
|        SendReclaimCompositorResources(last_compositor_frame_sink_id_,
 | 
|                                       false /* is_swap_ack */);
 | 
| @@ -474,10 +476,6 @@ void DelegatedFrameHost::SwapDelegatedFrame(uint32_t compositor_frame_sink_id,
 | 
|    } else {
 | 
|      ImageTransportFactory* factory = ImageTransportFactory::GetInstance();
 | 
|      cc::SurfaceManager* manager = factory->GetSurfaceManager();
 | 
| -    if (!surface_factory_) {
 | 
| -      surface_factory_ =
 | 
| -          base::MakeUnique<cc::SurfaceFactory>(frame_sink_id_, manager, this);
 | 
| -    }
 | 
|      if (local_frame_id_.is_null() || frame_size != current_surface_size_ ||
 | 
|          frame_size_in_dip != current_frame_size_in_dip_) {
 | 
|        if (!local_frame_id_.is_null())
 | 
| 
 |