Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(789)

Unified Diff: Source/core/html/HTMLCanvasElement.cpp

Issue 21861002: Add canvas context type histogram (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/html/HTMLCanvasElement.cpp
diff --git a/Source/core/html/HTMLCanvasElement.cpp b/Source/core/html/HTMLCanvasElement.cpp
index 20be42fdda8dafac636a49de66da9d208560df53..46703c5054e18e7ecf0a368dddc480aa77633a63 100644
--- a/Source/core/html/HTMLCanvasElement.cpp
+++ b/Source/core/html/HTMLCanvasElement.cpp
@@ -39,6 +39,7 @@
#include "core/page/Frame.h"
#include "RuntimeEnabledFeatures.h"
#include "core/page/Settings.h"
+#include "core/platform/HistogramSupport.h"
#include "core/platform/MIMETypeRegistry.h"
#include "core/platform/graphics/GraphicsContextStateSaver.h"
#include "core/platform/graphics/ImageBuffer.h"
@@ -152,6 +153,13 @@ CanvasRenderingContext* HTMLCanvasElement::getContext(const String& type, Canvas
// context is already 2D, just return that. If the existing context is WebGL, then destroy it
// before creating a new 2D context. Vice versa when requesting a WebGL canvas. Requesting a
// context with any other type string will destroy any existing context.
+ enum ContextType {
+ Context2d,
+ ContextWebkit3d,
+ ContextExperimentalWebgl,
+ ContextWebgl,
+ ContextTypeCount,
+ };
Mark P 2013/08/02 15:40:55 Please add a note that new elements should only be
Sami 2013/08/02 16:05:25 Done.
// FIXME - The code depends on the context not going away once created, to prevent JS from
// seeing a dangling pointer. So for now we will disallow the context from being changed
@@ -160,6 +168,7 @@ CanvasRenderingContext* HTMLCanvasElement::getContext(const String& type, Canvas
if (m_context && !m_context->is2d())
return 0;
if (!m_context) {
+ HistogramSupport::histogramEnumeration("Canvas.ContextType", Context2d, ContextTypeCount);
m_context = CanvasRenderingContext2D::create(this, RuntimeEnabledFeatures::experimentalCanvasFeaturesEnabled() ? static_cast<Canvas2DContextAttributes*>(attrs) : 0, document()->inQuirksMode());
if (m_context)
scheduleLayerUpdate();
@@ -169,17 +178,24 @@ CanvasRenderingContext* HTMLCanvasElement::getContext(const String& type, Canvas
Settings* settings = document()->settings();
if (settings && settings->webGLEnabled()) {
-
// Accept the legacy "webkit-3d" name as well as the provisional "experimental-webgl" name.
- bool is3dContext = (type == "webkit-3d") || (type == "experimental-webgl");
-
// Now that WebGL is ratified, we will also accept "webgl" as the context name in Chrome.
- is3dContext |= (type == "webgl");
+ ContextType contextType;
+ bool is3dContext = true;
+ if (type == "webkit-3d")
+ contextType = ContextWebkit3d;
+ else if (type == "experimental-webgl")
+ contextType = ContextExperimentalWebgl;
+ else if (type == "webgl")
+ contextType = ContextWebgl;
+ else
+ is3dContext = false;
if (is3dContext) {
if (m_context && !m_context->is3d())
return 0;
if (!m_context) {
+ HistogramSupport::histogramEnumeration("Canvas.ContextType", contextType, ContextTypeCount);
m_context = WebGLRenderingContext::create(this, static_cast<WebGLContextAttributes*>(attrs));
if (m_context)
scheduleLayerUpdate();
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698