| Index: third_party/WebKit/Source/platform/graphics/CanvasSurfaceLayerBridge.cpp
|
| diff --git a/third_party/WebKit/Source/platform/graphics/CanvasSurfaceLayerBridge.cpp b/third_party/WebKit/Source/platform/graphics/CanvasSurfaceLayerBridge.cpp
|
| index 03926147fbe145186792c2cc665dd285f81227be..222cbb6c999dacfdb3b7278153644a7e9782de3f 100644
|
| --- a/third_party/WebKit/Source/platform/graphics/CanvasSurfaceLayerBridge.cpp
|
| +++ b/third_party/WebKit/Source/platform/graphics/CanvasSurfaceLayerBridge.cpp
|
| @@ -4,25 +4,53 @@
|
|
|
| #include "platform/graphics/CanvasSurfaceLayerBridge.h"
|
|
|
| -#include "cc/layers/solid_color_layer.h"
|
| +#include "cc/layers/surface_layer.h"
|
| +#include "cc/surfaces/surface_id.h"
|
| +#include "cc/surfaces/surface_sequence.h"
|
| #include "platform/graphics/GraphicsLayer.h"
|
| +#include "platform/mojo/MojoHelper.h"
|
| #include "public/platform/Platform.h"
|
| #include "public/platform/WebCompositorSupport.h"
|
| #include "public/platform/WebLayer.h"
|
| +#include "ui/gfx/geometry/size.h"
|
| +#include "wtf/Functional.h"
|
| #include "wtf/PtrUtil.h"
|
|
|
| namespace blink {
|
|
|
| -CanvasSurfaceLayerBridge::CanvasSurfaceLayerBridge()
|
| +CanvasSurfaceLayerBridge::CanvasSurfaceLayerBridge(std::unique_ptr<CanvasSurfaceLayerBridgeClient> client)
|
| {
|
| - m_solidColorLayer = cc::SolidColorLayer::Create();
|
| - m_solidColorLayer->SetBackgroundColor(SK_ColorBLUE);
|
| - m_webLayer = wrapUnique(Platform::current()->compositorSupport()->createLayerFromCCLayer(m_solidColorLayer.get()));
|
| - GraphicsLayer::registerContentsLayer(m_webLayer.get());
|
| + m_client = std::move(client);
|
| }
|
|
|
| CanvasSurfaceLayerBridge::~CanvasSurfaceLayerBridge()
|
| {
|
| }
|
|
|
| +bool CanvasSurfaceLayerBridge::createSurfaceLayer(int canvasWidth, int canvasHeight)
|
| +{
|
| + if (!m_client->syncGetSurfaceId(&m_surfaceId))
|
| + return false;
|
| +
|
| + m_client->asyncRequestSurfaceCreation(m_surfaceId);
|
| + cc::SurfaceLayer::SatisfyCallback satisfyCallback = createBaseCallback(bind<cc::SurfaceSequence>(&CanvasSurfaceLayerBridge::satisfyCallback, this));
|
| + cc::SurfaceLayer::RequireCallback requireCallback = createBaseCallback(bind<cc::SurfaceId, cc::SurfaceSequence>(&CanvasSurfaceLayerBridge::requireCallback, this));
|
| + m_surfaceLayer = cc::SurfaceLayer::Create(std::move(satisfyCallback), std::move(requireCallback));
|
| + m_surfaceLayer->SetSurfaceId(m_surfaceId, 1.f, gfx::Size(canvasWidth, canvasHeight));
|
| +
|
| + m_webLayer = wrapUnique(Platform::current()->compositorSupport()->createLayerFromCCLayer(m_surfaceLayer.get()));
|
| + GraphicsLayer::registerContentsLayer(m_webLayer.get());
|
| + return true;
|
| +}
|
| +
|
| +void CanvasSurfaceLayerBridge::satisfyCallback(cc::SurfaceSequence sequence)
|
| +{
|
| + m_client->asyncSatisfy(sequence);
|
| +}
|
| +
|
| +void CanvasSurfaceLayerBridge::requireCallback(cc::SurfaceId surfaceId, cc::SurfaceSequence sequence)
|
| +{
|
| + m_client->asyncRequire(surfaceId, sequence);
|
| }
|
| +
|
| +} // namespace blink
|
|
|