| Index: content/browser/renderer_host/offscreen_canvas_surface_service_impl.cc
|
| diff --git a/content/browser/renderer_host/offscreen_canvas_surface_service_impl.cc b/content/browser/renderer_host/offscreen_canvas_surface_service_impl.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..61e5fa458b6567ff1f92c9aa269245a0e227b7fc
|
| --- /dev/null
|
| +++ b/content/browser/renderer_host/offscreen_canvas_surface_service_impl.cc
|
| @@ -0,0 +1,86 @@
|
| +// 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.
|
| +
|
| +#include "content/browser/renderer_host/offscreen_canvas_surface_service_impl.h"
|
| +
|
| +#include "base/bind_helpers.h"
|
| +#include "cc/surfaces/surface.h"
|
| +#include "cc/surfaces/surface_manager.h"
|
| +#include "content/browser/compositor/surface_utils.h"
|
| +#include "content/public/browser/browser_thread.h"
|
| +
|
| +namespace content {
|
| +
|
| +// static
|
| +void OffscreenCanvasSurfaceServiceImpl::Create(
|
| + mojo::InterfaceRequest<blink::mojom::OffscreenCanvasSurfaceService>
|
| + request) {
|
| + // |binding_| will take ownership of OffscreenCanvasSurfaceServiceImpl
|
| + new OffscreenCanvasSurfaceServiceImpl(std::move(request));
|
| +}
|
| +
|
| +OffscreenCanvasSurfaceServiceImpl::OffscreenCanvasSurfaceServiceImpl(
|
| + mojo::InterfaceRequest<blink::mojom::OffscreenCanvasSurfaceService> request)
|
| + : id_allocator_(CreateSurfaceIdAllocator())
|
| + , binding_(this, std::move(request))
|
| +{
|
| +}
|
| +
|
| +OffscreenCanvasSurfaceServiceImpl::~OffscreenCanvasSurfaceServiceImpl() {
|
| + if (surface_factory_) {
|
| + surface_factory_->DestroyAll();
|
| + }
|
| +}
|
| +
|
| +void OffscreenCanvasSurfaceServiceImpl::GetSurfaceId(
|
| + const GetSurfaceIdCallback& callback) {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| +
|
| + cc::SurfaceId surface_id = id_allocator_->GenerateId();
|
| +
|
| + callback.Run(surface_id);
|
| +}
|
| +
|
| +void OffscreenCanvasSurfaceServiceImpl::RequestSurfaceCreation(
|
| + const cc::SurfaceId& surface_id) {
|
| + cc::SurfaceManager* manager = GetSurfaceManager();
|
| + if (!surface_factory_) {
|
| + surface_factory_ = base::MakeUnique<cc::SurfaceFactory>(manager, this);
|
| + }
|
| + surface_factory_->Create(surface_id);
|
| +}
|
| +
|
| +void OffscreenCanvasSurfaceServiceImpl::Require(
|
| + const cc::SurfaceId& surface_id,
|
| + const cc::SurfaceSequence& sequence) {
|
| + cc::SurfaceManager* manager = GetSurfaceManager();
|
| + cc::Surface* surface = manager->GetSurfaceForId(surface_id);
|
| + if (!surface) {
|
| + DLOG(ERROR) << "Attempting to require callback on nonexistent surface";
|
| + return;
|
| + }
|
| + surface->AddDestructionDependency(sequence);
|
| +}
|
| +
|
| +void OffscreenCanvasSurfaceServiceImpl::Satisfy(
|
| + const cc::SurfaceSequence& sequence) {
|
| + std::vector<uint32_t> sequences;
|
| + sequences.push_back(sequence.sequence);
|
| + cc::SurfaceManager* manager = GetSurfaceManager();
|
| + manager->DidSatisfySequences(sequence.id_namespace, &sequences);
|
| +}
|
| +
|
| +// TODO(619136): Implement cc::SurfaceFactoryClient functions for resources
|
| +// return.
|
| +void OffscreenCanvasSurfaceServiceImpl::ReturnResources(
|
| + const cc::ReturnedResourceArray& resources) {}
|
| +
|
| +void OffscreenCanvasSurfaceServiceImpl::WillDrawSurface(
|
| + cc::SurfaceId id,
|
| + const gfx::Rect& damage_rect) {}
|
| +
|
| +void OffscreenCanvasSurfaceServiceImpl::SetBeginFrameSource(
|
| + cc::BeginFrameSource* begin_frame_source) {}
|
| +
|
| +} // namespace content
|
|
|