Rollout r190446 for the moment. It broke the build.
authordino@apple.com <dino@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 2 Oct 2015 02:15:11 +0000 (02:15 +0000)
committerdino@apple.com <dino@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 2 Oct 2015 02:15:11 +0000 (02:15 +0000)
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@190449 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/fast/canvas/webgl/webgl-debug-renderer-info-expected.txt [deleted file]
LayoutTests/fast/canvas/webgl/webgl-debug-renderer-info.html [deleted file]
Source/WebCore/ChangeLog
Source/WebCore/html/canvas/WebGL2RenderingContext.cpp
Source/WebCore/html/canvas/WebGLRenderingContext.cpp
Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp
Source/WebCore/html/canvas/WebGLRenderingContextBase.h
Source/WebCore/page/Settings.in
Source/WebCore/platform/graphics/opengl/Extensions3DOpenGL.cpp

index 00988e2..8f6fed3 100644 (file)
@@ -1,5 +1,12 @@
 2015-10-01  Dean Jackson  <dino@apple.com>
 
+        Rollout r190446 for the moment. It broke the build.
+
+        * fast/canvas/webgl/webgl-debug-renderer-info-expected.txt: Removed.
+        * fast/canvas/webgl/webgl-debug-renderer-info.html: Removed.
+
+2015-10-01  Dean Jackson  <dino@apple.com>
+
         Expose WEBGL_debug_renderer_info
         https://bugs.webkit.org/show_bug.cgi?id=149735
         <rdar://problem/18343500>
diff --git a/LayoutTests/fast/canvas/webgl/webgl-debug-renderer-info-expected.txt b/LayoutTests/fast/canvas/webgl/webgl-debug-renderer-info-expected.txt
deleted file mode 100644 (file)
index 640beee..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-CONSOLE MESSAGE: line 97: WebGL: INVALID_ENUM: getParameter: invalid parameter name, WEBGL_debug_renderer_info not enabled
-CONSOLE MESSAGE: line 101: WebGL: INVALID_ENUM: getParameter: invalid parameter name, WEBGL_debug_renderer_info not enabled
-This test verifies the functionality of the WEBGL_debug_renderer_info extension, if it is available.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-PASS WebGL context exists
-Testing enums with extension disabled
-PASS getError was expected value: INVALID_ENUM : UNMASKED_VENDOR_WEBGL should not be queryable if extension is disabled
-PASS getError was expected value: INVALID_ENUM : UNMASKED_RENDERER_WEBGL should not be queryable if extension is disabled
-PASS Successfully enabled WEBGL_debug_renderer_info extension
-PASS WEBGL_debug_renderer_info listed as supported and getExtension succeeded
-Testing enums with extension enabled
-PASS ext.UNMASKED_VENDOR_WEBGL is 0x9245
-PASS getError was expected value: NO_ERROR : UNMASKED_VENDOR_WEBGL query should succeed if extension is enable
-PASS ext.UNMASKED_RENDERER_WEBGL is 0x9246
-PASS getError was expected value: NO_ERROR : UNMASKED_RENDERER_WEBGL query should succeed if extension is enable
-
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
diff --git a/LayoutTests/fast/canvas/webgl/webgl-debug-renderer-info.html b/LayoutTests/fast/canvas/webgl/webgl-debug-renderer-info.html
deleted file mode 100644 (file)
index 9505cb3..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-<!--
-
-/*
-** Copyright (c) 2012 The Khronos Group Inc.
-**
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be included
-** in all copies or substantial portions of the Materials.
-**
-** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-
--->
-
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8">
-<title>WebGL WebGL_debug_renderer_info Conformance Tests</title>
-<script src="resources/desktop-gl-constants.js" type="text/javascript"></script>
-<script src="../../../resources/js-test-pre.js"></script>
-<script src="resources/webgl-test.js"></script>
-<script src="resources/webgl-test-utils.js"></script>
-</head>
-<body>
-<div id="description"></div>
-<canvas id="canvas" style="width: 1px; height: 1px;"> </canvas>
-<div id="console"></div>
-
-<script>
-"use strict";
-description("This test verifies the functionality of the WEBGL_debug_renderer_info extension, if it is available.");
-
-debug("");
-
-var wtu = WebGLTestUtils;
-var gl = wtu.create3DContext("canvas");
-var ext = null;
-var vao = null;
-
-if (!gl) {
-    testFailed("WebGL context does not exist");
-} else {
-    testPassed("WebGL context exists");
-
-    // Run tests with extension disabled
-    runTestDisabled();
-
-    // Query the extension and store globally so shouldBe can access it
-    ext = gl.getExtension("WEBGL_debug_renderer_info");
-    if (!ext) {
-        testFailed("No WEBGL_debug_renderer_info support");
-    } else {
-        testPassed("Successfully enabled WEBGL_debug_renderer_info extension");
-
-        runSupportedTest(true);
-        runTestEnabled();
-    }
-}
-
-function runSupportedTest(extensionEnabled) {
-    var supported = gl.getSupportedExtensions();
-    if (supported.indexOf("WEBGL_debug_renderer_info") >= 0) {
-        if (extensionEnabled) {
-            testPassed("WEBGL_debug_renderer_info listed as supported and getExtension succeeded");
-        } else {
-            testFailed("WEBGL_debug_renderer_info listed as supported but getExtension failed");
-        }
-    } else {
-        if (extensionEnabled) {
-            testFailed("WEBGL_debug_renderer_info not listed as supported but getExtension succeeded");
-        } else {
-            testPassed("WEBGL_debug_renderer_info not listed as supported and getExtension failed -- this is legal");
-        }
-    }
-}
-
-function runTestDisabled() {
-    debug("Testing enums with extension disabled");
-
-    // Use the constants directly as we don't have the extension
-
-    var UNMASKED_VENDOR_WEBGL = 0x9245;
-    gl.getParameter(UNMASKED_VENDOR_WEBGL);
-    glErrorShouldBe(gl, gl.INVALID_ENUM, "UNMASKED_VENDOR_WEBGL should not be queryable if extension is disabled");
-
-    var UNMASKED_RENDERER_WEBGL = 0x9246;
-    gl.getParameter(UNMASKED_RENDERER_WEBGL);
-    glErrorShouldBe(gl, gl.INVALID_ENUM, "UNMASKED_RENDERER_WEBGL should not be queryable if extension is disabled");
-}
-
-function runTestEnabled() {
-    debug("Testing enums with extension enabled");
-
-    shouldBe("ext.UNMASKED_VENDOR_WEBGL", "0x9245");
-    gl.getParameter(ext.UNMASKED_VENDOR_WEBGL);
-    glErrorShouldBe(gl, gl.NO_ERROR, "UNMASKED_VENDOR_WEBGL query should succeed if extension is enable");
-
-    shouldBe("ext.UNMASKED_RENDERER_WEBGL", "0x9246");
-    gl.getParameter(ext.UNMASKED_RENDERER_WEBGL);
-    glErrorShouldBe(gl, gl.NO_ERROR, "UNMASKED_RENDERER_WEBGL query should succeed if extension is enable");
-}
-
-debug("");
-var successfullyParsed = true;
-</script>
-<script src="../../../resources/js-test-post.js"></script>
-
-</body>
-</html>
index 4359788..e18075b 100644 (file)
@@ -1,3 +1,20 @@
+2015-10-01  Dean Jackson  <dino@apple.com>
+
+        Rollout r190446 for the moment. It broke the build.
+
+        * html/canvas/WebGL2RenderingContext.cpp:
+        (WebCore::WebGL2RenderingContext::getExtension):
+        (WebCore::WebGL2RenderingContext::getSupportedExtensions):
+        * html/canvas/WebGLRenderingContext.cpp:
+        (WebCore::WebGLRenderingContext::getExtension):
+        (WebCore::WebGLRenderingContext::getSupportedExtensions):
+        * html/canvas/WebGLRenderingContextBase.cpp:
+        (WebCore::WebGLRenderingContextBase::allowPrivilegedExtensions):
+        * html/canvas/WebGLRenderingContextBase.h:
+        * page/Settings.in:
+        * platform/graphics/opengl/Extensions3DOpenGL.cpp:
+        (WebCore::Extensions3DOpenGL::supportsExtension): Deleted.
+
 2015-10-01  Jaehun Lim  <ljaehun.lim@samsung.com>
 
         Unreviewed, fix build warning after r190434
index 2d63b0b..3810f16 100644 (file)
@@ -1021,18 +1021,20 @@ WebGLExtension* WebGL2RenderingContext::getExtension(const String& name)
         }
         return m_webglDepthTexture.get();
     }
-    if (equalIgnoringCase(name, "WEBGL_debug_renderer_info")) {
-        if (!m_webglDebugRendererInfo)
-            m_webglDebugRendererInfo = std::make_unique<WebGLDebugRendererInfo>(this);
-        return m_webglDebugRendererInfo.get();
-    }
-    if (equalIgnoringCase(name, "WEBGL_debug_shaders")
-        && m_context->getExtensions()->supports("GL_ANGLE_translated_shader_source")) {
-        if (!m_webglDebugShaders)
-            m_webglDebugShaders = std::make_unique<WebGLDebugShaders>(this);
-        return m_webglDebugShaders.get();
+    if (allowPrivilegedExtensions()) {
+        if (equalIgnoringCase(name, "WEBGL_debug_renderer_info")) {
+            if (!m_webglDebugRendererInfo)
+                m_webglDebugRendererInfo = std::make_unique<WebGLDebugRendererInfo>(this);
+            return m_webglDebugRendererInfo.get();
+        }
+        if (equalIgnoringCase(name, "WEBGL_debug_shaders")
+            && m_context->getExtensions()->supports("GL_ANGLE_translated_shader_source")) {
+            if (!m_webglDebugShaders)
+                m_webglDebugShaders = std::make_unique<WebGLDebugShaders>(this);
+            return m_webglDebugShaders.get();
+        }
     }
-
+    
     return nullptr;
 }
 
@@ -1062,10 +1064,12 @@ Vector<String> WebGL2RenderingContext::getSupportedExtensions()
     if (WebGLDepthTexture::supported(graphicsContext3D()))
         result.append("WEBGL_depth_texture");
     result.append("WEBGL_lose_context");
-    if (m_context->getExtensions()->supports("GL_ANGLE_translated_shader_source"))
-        result.append("WEBGL_debug_shaders");
-    result.append("WEBGL_debug_renderer_info");
-
+    if (allowPrivilegedExtensions()) {
+        if (m_context->getExtensions()->supports("GL_ANGLE_translated_shader_source"))
+            result.append("WEBGL_debug_shaders");
+        result.append("WEBGL_debug_renderer_info");
+    }
+    
     return result;
 }
 
index e7367d2..b7e6a2a 100644 (file)
@@ -230,18 +230,20 @@ WebGLExtension* WebGLRenderingContext::getExtension(const String& name)
         }
         return m_angleInstancedArrays.get();
     }
-    if (equalIgnoringCase(name, "WEBGL_debug_renderer_info")) {
-        if (!m_webglDebugRendererInfo)
-            m_webglDebugRendererInfo = std::make_unique<WebGLDebugRendererInfo>(this);
-        return m_webglDebugRendererInfo.get();
-    }
-    if (equalIgnoringCase(name, "WEBGL_debug_shaders")
-        && m_context->getExtensions()->supports("GL_ANGLE_translated_shader_source")) {
-        if (!m_webglDebugShaders)
-            m_webglDebugShaders = std::make_unique<WebGLDebugShaders>(this);
-        return m_webglDebugShaders.get();
+    if (allowPrivilegedExtensions()) {
+        if (equalIgnoringCase(name, "WEBGL_debug_renderer_info")) {
+            if (!m_webglDebugRendererInfo)
+                m_webglDebugRendererInfo = std::make_unique<WebGLDebugRendererInfo>(this);
+            return m_webglDebugRendererInfo.get();
+        }
+        if (equalIgnoringCase(name, "WEBGL_debug_shaders")
+            && m_context->getExtensions()->supports("GL_ANGLE_translated_shader_source")) {
+            if (!m_webglDebugShaders)
+                m_webglDebugShaders = std::make_unique<WebGLDebugShaders>(this);
+            return m_webglDebugShaders.get();
+        }
     }
-
+    
     return nullptr;
 }
 
@@ -289,10 +291,13 @@ Vector<String> WebGLRenderingContext::getSupportedExtensions()
         result.append("WEBGL_draw_buffers");
     if (ANGLEInstancedArrays::supported(this))
         result.append("ANGLE_instanced_arrays");
-    if (m_context->getExtensions()->supports("GL_ANGLE_translated_shader_source"))
-        result.append("WEBGL_debug_shaders");
-    result.append("WEBGL_debug_renderer_info");
-
+    
+    if (allowPrivilegedExtensions()) {
+        if (m_context->getExtensions()->supports("GL_ANGLE_translated_shader_source"))
+            result.append("WEBGL_debug_shaders");
+        result.append("WEBGL_debug_renderer_info");
+    }
+    
     return result;
 }
 
index 6dae802..614da43 100644 (file)
@@ -576,6 +576,13 @@ void WebGLRenderingContextBase::setupFlags()
     m_isRobustnessEXTSupported = m_context->getExtensions()->isEnabled("GL_EXT_robustness");
 }
 
+bool WebGLRenderingContextBase::allowPrivilegedExtensions() const
+{
+    if (Page* page = canvas()->document().page())
+        return page->settings().privilegedWebGLExtensionsEnabled();
+    return false;
+}
+
 void WebGLRenderingContextBase::addCompressedTextureFormat(GC3Denum format)
 {
     if (!m_compressedTextureFormats.contains(format))
index e09c2a4..73c2231 100644 (file)
@@ -800,6 +800,10 @@ protected:
     // Helper for restoration after context lost.
     void maybeRestoreContext();
 
+    // Determine if we are running privileged code in the browser, for example,
+    // a Safari or Chrome extension.
+    bool allowPrivilegedExtensions() const;
+
     enum ConsoleDisplayPreference {
         DisplayInConsole,
         DontDisplayInConsole
index d90589a..95dba92 100644 (file)
@@ -103,6 +103,7 @@ experimentalNotificationsEnabled initial=false
 webGLEnabled initial=false
 webGLErrorsToConsoleEnabled initial=true
 openGLMultisamplingEnabled initial=true
+privilegedWebGLExtensionsEnabled initial=false
 forceSoftwareWebGLRendering initial=false
 accelerated2dCanvasEnabled initial=false
 antialiased2dCanvasEnabled initial=true
index e754e98..acb1fc5 100644 (file)
@@ -167,12 +167,6 @@ bool Extensions3DOpenGL::supportsExtension(const String& name)
             && (m_availableExtensions.contains("GL_ARB_draw_instanced") || m_availableExtensions.contains("GL_EXT_draw_instanced"));
     }
 
-    // We explicitly do not support this extension until
-    // we fix the following bug:
-    // https://bugs.webkit.org/show_bug.cgi?id=149734
-    if (name == "GL_ANGLE_translated_shader_source")
-        return false;
-
     if (name == "GL_EXT_sRGB")
 #if PLATFORM(IOS)
         return m_availableExtensions.contains("GL_EXT_sRGB");