| Index: content/browser/compositor/vulkan_browser_compositor_output_surface.cc
 | 
| diff --git a/content/browser/compositor/vulkan_browser_compositor_output_surface.cc b/content/browser/compositor/vulkan_browser_compositor_output_surface.cc
 | 
| index 31ef0b7808f61cf3e192adbe76f8e8d197b18621..da97d27459160e3b82ac538da777df23ccde225f 100644
 | 
| --- a/content/browser/compositor/vulkan_browser_compositor_output_surface.cc
 | 
| +++ b/content/browser/compositor/vulkan_browser_compositor_output_surface.cc
 | 
| @@ -11,12 +11,13 @@
 | 
|  namespace content {
 | 
|  
 | 
|  VulkanBrowserCompositorOutputSurface::VulkanBrowserCompositorOutputSurface(
 | 
| -    const scoped_refptr<cc::VulkanContextProvider>& context,
 | 
| -    const scoped_refptr<ui::CompositorVSyncManager>& vsync_manager,
 | 
| +    scoped_refptr<cc::VulkanContextProvider> context,
 | 
| +    scoped_refptr<ui::CompositorVSyncManager> vsync_manager,
 | 
|      cc::SyntheticBeginFrameSource* begin_frame_source)
 | 
| -    : BrowserCompositorOutputSurface(context,
 | 
| -                                     vsync_manager,
 | 
| -                                     begin_frame_source) {}
 | 
| +    : BrowserCompositorOutputSurface(std::move(context),
 | 
| +                                     std::move(vsync_manager),
 | 
| +                                     begin_frame_source),
 | 
| +      weak_ptr_factory_(this) {}
 | 
|  
 | 
|  VulkanBrowserCompositorOutputSurface::~VulkanBrowserCompositorOutputSurface() {
 | 
|    Destroy();
 | 
| @@ -43,17 +44,67 @@ void VulkanBrowserCompositorOutputSurface::Destroy() {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| -void VulkanBrowserCompositorOutputSurface::OnGpuSwapBuffersCompleted(
 | 
| -    const std::vector<ui::LatencyInfo>& latency_info,
 | 
| -    gfx::SwapResult result,
 | 
| -    const gpu::GpuProcessHostedCALayerTreeParamsMac* params_mac) {
 | 
| -  RenderWidgetHostImpl::CompositorFrameDrawn(latency_info);
 | 
| -  client_->DidReceiveSwapBuffersAck();
 | 
| +void VulkanBrowserCompositorOutputSurface::BindToClient(
 | 
| +    cc::OutputSurfaceClient* client) {
 | 
| +  DCHECK(client);
 | 
| +  DCHECK(!client_);
 | 
| +  client_ = client;
 | 
| +}
 | 
| +
 | 
| +void VulkanBrowserCompositorOutputSurface::EnsureBackbuffer() {
 | 
| +  NOTIMPLEMENTED();
 | 
| +}
 | 
| +
 | 
| +void VulkanBrowserCompositorOutputSurface::DiscardBackbuffer() {
 | 
| +  NOTIMPLEMENTED();
 | 
| +}
 | 
| +
 | 
| +void VulkanBrowserCompositorOutputSurface::BindFramebuffer() {
 | 
| +  NOTIMPLEMENTED();
 | 
| +}
 | 
| +
 | 
| +bool VulkanBrowserCompositorOutputSurface::IsDisplayedAsOverlayPlane() const {
 | 
| +  NOTIMPLEMENTED();
 | 
| +  return false;
 | 
| +}
 | 
| +
 | 
| +unsigned VulkanBrowserCompositorOutputSurface::GetOverlayTextureId() const {
 | 
| +  NOTIMPLEMENTED();
 | 
| +  return 0;
 | 
| +}
 | 
| +
 | 
| +bool VulkanBrowserCompositorOutputSurface::SurfaceIsSuspendForRecycle() const {
 | 
| +  NOTIMPLEMENTED();
 | 
| +  return false;
 | 
| +}
 | 
| +
 | 
| +void VulkanBrowserCompositorOutputSurface::Reshape(
 | 
| +    const gfx::Size& size,
 | 
| +    float device_scale_factor,
 | 
| +    const gfx::ColorSpace& color_space,
 | 
| +    bool has_alpha) {
 | 
| +  NOTIMPLEMENTED();
 | 
| +}
 | 
| +
 | 
| +uint32_t
 | 
| +VulkanBrowserCompositorOutputSurface::GetFramebufferCopyTextureFormat() {
 | 
| +  NOTIMPLEMENTED();
 | 
| +  return 0;
 | 
|  }
 | 
|  
 | 
|  void VulkanBrowserCompositorOutputSurface::SwapBuffers(
 | 
| -    cc::CompositorFrame* frame) {
 | 
| +    cc::OutputSurfaceFrame frame) {
 | 
|    surface_->SwapBuffers();
 | 
| +
 | 
| +  base::ThreadTaskRunnerHandle::Get()->PostTask(
 | 
| +      FROM_HERE,
 | 
| +      base::Bind(&VulkanBrowserCompositorOutputSurface::SwapBuffersAck,
 | 
| +                 weak_ptr_factory_.GetWeakPtr()));
 | 
| +}
 | 
| +
 | 
| +void VulkanBrowserCompositorOutputSurface::SwapBuffersAck() {
 | 
| +  DCHECK(client_);
 | 
| +  client_->DidReceiveSwapBuffersAck();
 | 
|  }
 | 
|  
 | 
|  }  // namespace content
 | 
| 
 |