| Index: third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp
|
| diff --git a/third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp b/third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp
|
| index bf12c2feaf31ba82571f7577f0a1568762032aff..b6c90f28950da4bcc19196552d830a9d908e9ef6 100644
|
| --- a/third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp
|
| +++ b/third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp
|
| @@ -48,6 +48,7 @@
|
| #include "platform/MIMETypeRegistry.h"
|
| #include "platform/RuntimeEnabledFeatures.h"
|
| #include "platform/graphics/Canvas2DImageBufferSurface.h"
|
| +#include "platform/graphics/CanvasMetrics.h"
|
| #include "platform/graphics/ExpensiveCanvasHeuristicParameters.h"
|
| #include "platform/graphics/ImageBuffer.h"
|
| #include "platform/graphics/RecordingImageBufferSurface.h"
|
| @@ -117,6 +118,7 @@ inline HTMLCanvasElement::HTMLCanvasElement(Document& document)
|
| , m_imageBufferIsClear(false)
|
| {
|
| setHasCustomStyleCallbacks();
|
| + CanvasMetrics::countCanvasContextStat(CanvasMetrics::CanvasCreated);
|
| }
|
|
|
| DEFINE_NODE_FACTORY(HTMLCanvasElement)
|
| @@ -653,20 +655,30 @@ PassOwnPtr<ImageBufferSurface> HTMLCanvasElement::createImageBufferSurface(const
|
| if (document().settings())
|
| *msaaSampleCount = document().settings()->accelerated2dCanvasMSAASampleCount();
|
| OwnPtr<ImageBufferSurface> surface = adoptPtr(new Canvas2DImageBufferSurface(deviceSize, *msaaSampleCount, opacityMode, Canvas2DLayerBridge::EnableAcceleration));
|
| - if (surface->isValid())
|
| + if (surface->isValid()) {
|
| + CanvasMetrics::countCanvasContextStat(CanvasMetrics::GPUAccelerated2DCanvasImageBufferCreated);
|
| return surface.release();
|
| + }
|
| + CanvasMetrics::countCanvasContextStat(CanvasMetrics::GPUAccelerated2DCanvasImageBufferCreationFailed);
|
| }
|
|
|
| OwnPtr<RecordingImageBufferFallbackSurfaceFactory> surfaceFactory = adoptPtr(new UnacceleratedSurfaceFactory());
|
|
|
| if (shouldUseDisplayList(deviceSize)) {
|
| OwnPtr<ImageBufferSurface> surface = adoptPtr(new RecordingImageBufferSurface(deviceSize, surfaceFactory.release(), opacityMode));
|
| - if (surface->isValid())
|
| + if (surface->isValid()) {
|
| + CanvasMetrics::countCanvasContextStat(CanvasMetrics::DisplayList2DCanvasImageBufferCreated);
|
| return surface.release();
|
| + }
|
| surfaceFactory = adoptPtr(new UnacceleratedSurfaceFactory()); // recreate because previous one was released
|
| }
|
| -
|
| - return surfaceFactory->createSurface(deviceSize, opacityMode);
|
| + auto surface = surfaceFactory->createSurface(deviceSize, opacityMode);
|
| + if (!surface->isValid()) {
|
| + CanvasMetrics::countCanvasContextStat(CanvasMetrics::Unaccelerated2DCanvasImageBufferCreationFailed);
|
| + } else {
|
| + CanvasMetrics::countCanvasContextStat(CanvasMetrics::Unaccelerated2DCanvasImageBufferCreated);
|
| + }
|
| + return surface;
|
| }
|
|
|
| void HTMLCanvasElement::createImageBuffer()
|
|
|