Index: Source/core/html/canvas/WebGLRenderingContext.cpp |
diff --git a/Source/core/html/canvas/WebGLRenderingContext.cpp b/Source/core/html/canvas/WebGLRenderingContext.cpp |
index 9e0f68e5f5d6ad35f8a3bb998145882eebcd52e2..0bfaca7674615d16ba34762c225a0bbb2d3a9e32 100644 |
--- a/Source/core/html/canvas/WebGLRenderingContext.cpp |
+++ b/Source/core/html/canvas/WebGLRenderingContext.cpp |
@@ -624,7 +624,7 @@ WebGLRenderingContext::WebGLRenderingContext(HTMLCanvasElement* passedCanvas, Pa |
registerExtension<WebGLDrawBuffers>(m_webglDrawBuffers, DraftExtension); |
// Register privileged extensions. |
- registerExtension<WebGLDebugRendererInfo>(m_webglDebugRendererInfo, PrivilegedExtension); |
+ registerExtension<WebGLDebugRendererInfo>(m_webglDebugRendererInfo, WebGLDebugRendererInfoExtension); |
registerExtension<WebGLDebugShaders>(m_webglDebugShaders, PrivilegedExtension); |
} |
@@ -728,6 +728,14 @@ bool WebGLRenderingContext::allowPrivilegedExtensions() const |
return false; |
} |
+bool WebGLRenderingContext::allowWebGLDebugRendererInfo() const |
+{ |
+ if (allowPrivilegedExtensions()) |
+ return true; |
+ Frame* frame = canvas()->document().frame(); |
+ return frame && frame->loader().client()->allowWebGLDebugRendererInfo(); |
+} |
+ |
void WebGLRenderingContext::addCompressedTextureFormat(GC3Denum format) |
{ |
if (!m_compressedTextureFormats.contains(format)) |
@@ -2177,6 +2185,8 @@ PassRefPtr<WebGLExtension> WebGLRenderingContext::getExtension(const String& nam |
for (size_t i = 0; i < m_extensions.size(); ++i) { |
ExtensionTracker* tracker = m_extensions[i]; |
if (tracker->matchesNameWithPrefixes(name)) { |
+ if (tracker->webglDebugRendererInfo() && !allowWebGLDebugRendererInfo()) |
+ return 0; |
if (tracker->privileged() && !allowPrivilegedExtensions()) |
return 0; |
if (tracker->draft() && !RuntimeEnabledFeatures::webGLDraftExtensionsEnabled()) |
@@ -2630,6 +2640,8 @@ Vector<String> WebGLRenderingContext::getSupportedExtensions() |
for (size_t i = 0; i < m_extensions.size(); ++i) { |
ExtensionTracker* tracker = m_extensions[i]; |
+ if (tracker->webglDebugRendererInfo() && !allowWebGLDebugRendererInfo()) |
+ continue; |
if (tracker->privileged() && !allowPrivilegedExtensions()) |
continue; |
if (tracker->draft() && !RuntimeEnabledFeatures::webGLDraftExtensionsEnabled()) |