blob: 10ab17f268d2c6a71786bd6332921f3033502bad [file] [log] [blame]
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CONTENT_BROWSER_RENDERER_HOST_OFFSCREEN_CANVAS_SURFACE_IMPL_H_
#define CONTENT_BROWSER_RENDERER_HOST_OFFSCREEN_CANVAS_SURFACE_IMPL_H_
#include "cc/surfaces/surface_id.h"
#include "cc/surfaces/surface_id_allocator.h"
#include "mojo/public/cpp/bindings/interface_request.h"
#include "mojo/public/cpp/bindings/string.h"
#include "mojo/public/cpp/bindings/strong_binding.h"
#include "third_party/WebKit/public/platform/modules/offscreencanvas/offscreen_canvas_surface.mojom.h"
namespace content {
class CONTENT_EXPORT OffscreenCanvasSurfaceImpl
: public blink::mojom::OffscreenCanvasSurface {
public:
OffscreenCanvasSurfaceImpl(
const cc::FrameSinkId& frame_sink_id,
blink::mojom::OffscreenCanvasSurfaceClientPtr client);
~OffscreenCanvasSurfaceImpl() override;
static void Create(const cc::FrameSinkId& frame_sink_id,
blink::mojom::OffscreenCanvasSurfaceClientPtr client,
blink::mojom::OffscreenCanvasSurfaceRequest request);
void OnSurfaceCreated(const cc::SurfaceId& surface_id,
const gfx::Size& frame_size,
float device_scale_factor);
// blink::mojom::OffscreenCanvasSurface implementation.
void Require(const cc::SurfaceId& surface_id,
const cc::SurfaceSequence& sequence) override;
void Satisfy(const cc::SurfaceSequence& sequence) override;
const cc::FrameSinkId& frame_sink_id() const { return frame_sink_id_; }
const cc::LocalFrameId& current_local_frame_id() const {
return current_local_frame_id_;
}
private:
blink::mojom::OffscreenCanvasSurfaceClientPtr client_;
mojo::StrongBindingPtr<blink::mojom::OffscreenCanvasSurface> binding_;
// Surface-related state
cc::FrameSinkId frame_sink_id_;
cc::LocalFrameId current_local_frame_id_;
DISALLOW_COPY_AND_ASSIGN(OffscreenCanvasSurfaceImpl);
};
} // namespace content
#endif // CONTENT_BROWSER_RENDERER_HOST_OFFSCREEN_CANVAS_SURFACE_IMPL_H_