| Index: cc/surfaces/compositor_frame_sink_support.h | 
| diff --git a/cc/surfaces/compositor_frame_sink_support.h b/cc/surfaces/compositor_frame_sink_support.h | 
| index 8471bbd15c6b186b1c4678f6f64a7246ab41fd18..d2fa5d6d83d0f92c625e08eccf3da6d425345b0e 100644 | 
| --- a/cc/surfaces/compositor_frame_sink_support.h | 
| +++ b/cc/surfaces/compositor_frame_sink_support.h | 
| @@ -8,6 +8,8 @@ | 
| #include "base/compiler_specific.h" | 
| #include "base/memory/weak_ptr.h" | 
| #include "cc/output/compositor_frame.h" | 
| +#include "cc/output/copy_output_request.h" | 
| +#include "cc/output/copy_output_result.h" | 
| #include "cc/scheduler/begin_frame_source.h" | 
| #include "cc/surfaces/display.h" | 
| #include "cc/surfaces/display_client.h" | 
| @@ -46,12 +48,19 @@ class CC_SURFACES_EXPORT CompositorFrameSinkSupport | 
| void Satisfy(const SurfaceSequence& sequence); | 
| void AddChildFrameSink(const FrameSinkId& child_frame_sink_id); | 
| void RemoveChildFrameSink(const FrameSinkId& child_frame_sink_id); | 
| +  void RequestCopyOfSurface(std::unique_ptr<CopyOutputRequest> request); | 
| +  void ReleaseCopyOfSurface(const gpu::Mailbox& mailbox, | 
| +                            const gpu::SyncToken& sync_token, | 
| +                            bool is_lost); | 
|  | 
| Display* display() { return display_.get(); } | 
|  | 
| private: | 
| void DidReceiveCompositorFrameAck(); | 
|  | 
| +  void OnTextureReceived(CopyOutputRequest::CopyOutputRequestCallback callback, | 
| +                         std::unique_ptr<CopyOutputResult> result); | 
| + | 
| // DisplayClient implementation. | 
| void DisplayOutputSurfaceLost() override; | 
| void DisplayWillDrawAndSwap(bool will_draw_and_swap, | 
| @@ -104,6 +113,9 @@ class CC_SURFACES_EXPORT CompositorFrameSinkSupport | 
| // The set of BeginFrame children of this CompositorFrameSink. | 
| std::unordered_set<FrameSinkId, FrameSinkIdHash> child_frame_sinks_; | 
|  | 
| +  std::map<gpu::Mailbox, std::unique_ptr<SingleReleaseCallback>> | 
| +      release_callbacks_; | 
| + | 
| base::WeakPtrFactory<CompositorFrameSinkSupport> weak_factory_; | 
|  | 
| DISALLOW_COPY_AND_ASSIGN(CompositorFrameSinkSupport); | 
|  |