blob: d62283396fa60c61d906a0ded57e2d63d0c4073a [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 OffscreenCanvasFrameDispatcherImpl_h
#define OffscreenCanvasFrameDispatcherImpl_h
#include "cc/ipc/mojo_compositor_frame_sink.mojom-blink.h"
#include "cc/surfaces/surface_id.h"
#include "mojo/public/cpp/bindings/binding.h"
#include "platform/graphics/OffscreenCanvasFrameDispatcher.h"
#include "platform/graphics/StaticBitmapImage.h"
#include "wtf/Compiler.h"
#include <memory>
namespace blink {
class PLATFORM_EXPORT OffscreenCanvasFrameDispatcherImpl final : public OffscreenCanvasFrameDispatcher
, WTF_NON_EXPORTED_BASE(public cc::mojom::blink::MojoCompositorFrameSinkClient) {
public:
explicit OffscreenCanvasFrameDispatcherImpl(uint32_t clientId, uint32_t localId, uint64_t nonce, int width, int height);
// OffscreenCanvasFrameDispatcher implementation.
~OffscreenCanvasFrameDispatcherImpl() override {}
void dispatchFrame(RefPtr<StaticBitmapImage>) override;
// OffscreenCanvasFrameReceiverClient implementation.
void ReturnResources(Vector<cc::mojom::blink::ReturnedResourcePtr> resources) override;
private:
const cc::SurfaceId m_surfaceId;
const int m_width;
const int m_height;
cc::mojom::blink::MojoCompositorFrameSinkPtr m_sink;
HashMap<unsigned, RefPtr<StaticBitmapImage>> m_cachedImages;
mojo::Binding<cc::mojom::blink::MojoCompositorFrameSinkClient> m_binding;
};
} // namespace blink
#endif // OffscreenCanvasFrameDispatcherImpl_h