Index: content/browser/renderer_host/offscreen_canvas_provider_impl.cc |
diff --git a/content/browser/renderer_host/offscreen_canvas_surface_factory_impl.cc b/content/browser/renderer_host/offscreen_canvas_provider_impl.cc |
similarity index 34% |
rename from content/browser/renderer_host/offscreen_canvas_surface_factory_impl.cc |
rename to content/browser/renderer_host/offscreen_canvas_provider_impl.cc |
index 8d101f19d6ae71c9cf0d5ecc9d8a608a8bbeff7c..9d578ada2b519faf90d8e4ee2fddee75b94e9e80 100644 |
--- a/content/browser/renderer_host/offscreen_canvas_surface_factory_impl.cc |
+++ b/content/browser/renderer_host/offscreen_canvas_provider_impl.cc |
@@ -2,23 +2,24 @@ |
// 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_factory_impl.h" |
+#include "content/browser/renderer_host/offscreen_canvas_provider_impl.h" |
-#include "base/memory/ptr_util.h" |
-#include "cc/surfaces/frame_sink_id.h" |
+#include "content/browser/compositor/surface_utils.h" |
+#include "content/browser/renderer_host/offscreen_canvas_compositor_frame_sink_manager.h" |
#include "content/browser/renderer_host/offscreen_canvas_surface_impl.h" |
-#include "mojo/public/cpp/bindings/strong_binding.h" |
namespace content { |
-// static |
-void OffscreenCanvasSurfaceFactoryImpl::Create( |
- blink::mojom::OffscreenCanvasSurfaceFactoryRequest request) { |
- mojo::MakeStrongBinding(base::MakeUnique<OffscreenCanvasSurfaceFactoryImpl>(), |
- std::move(request)); |
+OffscreenCanvasProviderImpl::OffscreenCanvasProviderImpl() = default; |
+ |
+OffscreenCanvasProviderImpl::~OffscreenCanvasProviderImpl() = default; |
+ |
+void OffscreenCanvasProviderImpl::Add( |
+ blink::mojom::OffscreenCanvasProviderRequest request) { |
+ bindings_.AddBinding(this, std::move(request)); |
} |
-void OffscreenCanvasSurfaceFactoryImpl::CreateOffscreenCanvasSurface( |
+void OffscreenCanvasProviderImpl::CreateOffscreenCanvasSurface( |
const cc::FrameSinkId& parent_frame_sink_id, |
const cc::FrameSinkId& frame_sink_id, |
cc::mojom::FrameSinkManagerClientPtr client, |
@@ -27,4 +28,20 @@ void OffscreenCanvasSurfaceFactoryImpl::CreateOffscreenCanvasSurface( |
std::move(client), std::move(request)); |
} |
+void OffscreenCanvasProviderImpl::CreateCompositorFrameSink( |
+ const cc::FrameSinkId& frame_sink_id, |
+ cc::mojom::MojoCompositorFrameSinkClientPtr client, |
+ cc::mojom::MojoCompositorFrameSinkRequest request) { |
+ // TODO(kylechar): Add test for bad |frame_sink_id|. |
+ auto* manager = OffscreenCanvasCompositorFrameSinkManager::GetInstance(); |
+ auto* surface_impl = manager->GetSurfaceInstance(frame_sink_id); |
+ if (!surface_impl) { |
+ DLOG(ERROR) << "No OffscreenCanvasSurfaceImpl for " << frame_sink_id; |
+ return; |
+ } |
+ |
+ surface_impl->CreateCompositorFrameSink(std::move(client), |
+ std::move(request)); |
+} |
+ |
} // namespace content |