Diff
Modified: trunk/LayoutTests/ChangeLog (221966 => 221967)
--- trunk/LayoutTests/ChangeLog 2017-09-13 11:17:27 UTC (rev 221966)
+++ trunk/LayoutTests/ChangeLog 2017-09-13 11:47:44 UTC (rev 221967)
@@ -1,3 +1,15 @@
+2017-09-13 Ms2ger <ms2...@igalia.com>
+
+ Disallow passing null values to various WebGL2 methods.
+ https://bugs.webkit.org/show_bug.cgi?id=176829
+
+ Reviewed by Yusuke Suzuki.
+
+ This matches the specification as well as Gecko and Chromium.
+
+ * fast/canvas/webgl/webgl2/bindings-expected.txt:
+ * fast/canvas/webgl/webgl2/bindings.html:
+
2017-09-13 Sergio Villar Senin <svil...@igalia.com>
[WebVR] Add IDLs and stubs
Modified: trunk/LayoutTests/fast/canvas/webgl/webgl2/bindings-expected.txt (221966 => 221967)
--- trunk/LayoutTests/fast/canvas/webgl/webgl2/bindings-expected.txt 2017-09-13 11:17:27 UTC (rev 221966)
+++ trunk/LayoutTests/fast/canvas/webgl/webgl2/bindings-expected.txt 2017-09-13 11:47:44 UTC (rev 221967)
@@ -9,5 +9,25 @@
PASS uniformMatrix4x2fv with null data
PASS uniformMatrix3x4fv with null data
PASS uniformMatrix4x3fv with null data
+PASS vertexAttribI4iv with null values
+PASS vertexAttribI4uiv with null values
+PASS clearBufferiv with null values
+PASS clearBufferuiv with null values
+PASS clearBufferfv with null values
+PASS samplerParameteri with null sampler
+PASS samplerParameterf with null sampler
PASS framebufferTextureLayer with integer texture
+PASS beginQuery with null query
+PASS getQueryParameter with null query
+PASS getSamplerParameter with null sampler
+PASS clientWaitSync with null sync
+PASS waitSync with null sync
+PASS getSyncParameter with null sync
+PASS transformFeedbackVaryings with null program
+PASS getTransformFeedbackVarying with null program
+PASS getUniformIndices with null program
+PASS getUniformBlockIndex with null program
+PASS getActiveUniformBlockParameter with null program
+PASS getActiveUniformBlockName with null program
+PASS uniformBlockBinding with null program
Modified: trunk/LayoutTests/fast/canvas/webgl/webgl2/bindings.html (221966 => 221967)
--- trunk/LayoutTests/fast/canvas/webgl/webgl2/bindings.html 2017-09-13 11:17:27 UTC (rev 221966)
+++ trunk/LayoutTests/fast/canvas/webgl/webgl2/bindings.html 2017-09-13 11:47:44 UTC (rev 221967)
@@ -20,7 +20,29 @@
for (let dim of ["2x3", "3x2", "2x4", "4x2", "3x4", "4x3"]) {
error_methods.push([`uniformMatrix${dim}fv`, [null, false, null], `uniformMatrix${dim}fv with null data`]);
}
+ for (let type of ["i", "ui"]) {
+ error_methods.push([`vertexAttribI4${type}v`, [0, null], `vertexAttribI4${type}v with null values`]);
+ }
+ for (let type of ["i", "ui", "f"]) {
+ error_methods.push([`clearBuffer${type}v`, [context.COLOR, 0, null], `clearBuffer${type}v with null values`]);
+ }
+ for (let type of ["i", "f"]) {
+ error_methods.push([`samplerParameter${type}`, [null, 0, 0], `samplerParameter${type} with null sampler`]);
+ }
error_methods.push(["framebufferTextureLayer", [0, 0, 0, 0, 0], "framebufferTextureLayer with integer texture"]);
+ error_methods.push(["beginQuery", [0, null], "beginQuery with null query"]);
+ error_methods.push(["getQueryParameter", [null, 0], "getQueryParameter with null query"]);
+ error_methods.push(["getSamplerParameter", [null, 0], "getSamplerParameter with null sampler"]);
+ error_methods.push(["clientWaitSync", [null, 0, 0], "clientWaitSync with null sync"]);
+ error_methods.push(["waitSync", [null, 0, 0], "waitSync with null sync"]);
+ error_methods.push(["getSyncParameter", [null, 0], "getSyncParameter with null sync"]);
+ error_methods.push(["transformFeedbackVaryings", [null, [], 0], "transformFeedbackVaryings with null program"]);
+ error_methods.push(["getTransformFeedbackVarying", [null, 0], "getTransformFeedbackVarying with null program"]);
+ error_methods.push(["getUniformIndices", [null, []], "getUniformIndices with null program"]);
+ error_methods.push(["getUniformBlockIndex", [null, ""], "getUniformBlockIndex with null program"]);
+ error_methods.push(["getActiveUniformBlockParameter", [null, 0, 0], "getActiveUniformBlockParameter with null program"]);
+ error_methods.push(["getActiveUniformBlockName", [null, 0], "getActiveUniformBlockName with null program"]);
+ error_methods.push(["uniformBlockBinding", [null, 0, 0], "uniformBlockBinding with null program"]);
});
for (var [method, args, name] of error_methods) {
Modified: trunk/Source/WebCore/ChangeLog (221966 => 221967)
--- trunk/Source/WebCore/ChangeLog 2017-09-13 11:17:27 UTC (rev 221966)
+++ trunk/Source/WebCore/ChangeLog 2017-09-13 11:47:44 UTC (rev 221967)
@@ -1,3 +1,33 @@
+2017-09-13 Ms2ger <ms2...@igalia.com>
+
+ Disallow passing null values to various WebGL2 methods.
+ https://bugs.webkit.org/show_bug.cgi?id=176829
+
+ Reviewed by Yusuke Suzuki.
+
+ This matches the specification as well as Gecko and Chromium.
+
+ Test: fast/canvas/webgl/webgl2/bindings.html
+
+ * html/canvas/WebGL2RenderingContext.cpp:
+ (WebCore::WebGL2RenderingContext::beginQuery):
+ (WebCore::WebGL2RenderingContext::getQueryParameter):
+ (WebCore::WebGL2RenderingContext::samplerParameteri):
+ (WebCore::WebGL2RenderingContext::samplerParameterf):
+ (WebCore::WebGL2RenderingContext::getSamplerParameter):
+ (WebCore::WebGL2RenderingContext::clientWaitSync):
+ (WebCore::WebGL2RenderingContext::waitSync):
+ (WebCore::WebGL2RenderingContext::getSyncParameter):
+ (WebCore::WebGL2RenderingContext::transformFeedbackVaryings):
+ (WebCore::WebGL2RenderingContext::getTransformFeedbackVarying):
+ (WebCore::WebGL2RenderingContext::getUniformIndices):
+ (WebCore::WebGL2RenderingContext::getUniformBlockIndex):
+ (WebCore::WebGL2RenderingContext::getActiveUniformBlockParameter):
+ (WebCore::WebGL2RenderingContext::getActiveUniformBlockName):
+ (WebCore::WebGL2RenderingContext::uniformBlockBinding):
+ * html/canvas/WebGL2RenderingContext.h:
+ * html/canvas/WebGL2RenderingContext.idl:
+
2017-09-13 Sergio Villar Senin <svil...@igalia.com>
[WebVR] Add IDLs and stubs
Modified: trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.cpp (221966 => 221967)
--- trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.cpp 2017-09-13 11:17:27 UTC (rev 221966)
+++ trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.cpp 2017-09-13 11:47:44 UTC (rev 221967)
@@ -770,7 +770,7 @@
return false;
}
-void WebGL2RenderingContext::beginQuery(GC3Denum, WebGLQuery*)
+void WebGL2RenderingContext::beginQuery(GC3Denum, WebGLQuery&)
{
}
@@ -783,7 +783,7 @@
return nullptr;
}
-WebGLAny WebGL2RenderingContext::getQueryParameter(WebGLQuery*, GC3Denum)
+WebGLAny WebGL2RenderingContext::getQueryParameter(WebGLQuery&, GC3Denum)
{
return nullptr;
}
@@ -806,15 +806,15 @@
{
}
-void WebGL2RenderingContext::samplerParameteri(WebGLSampler*, GC3Denum, GC3Dint)
+void WebGL2RenderingContext::samplerParameteri(WebGLSampler&, GC3Denum, GC3Dint)
{
}
-void WebGL2RenderingContext::samplerParameterf(WebGLSampler*, GC3Denum, GC3Dfloat)
+void WebGL2RenderingContext::samplerParameterf(WebGLSampler&, GC3Denum, GC3Dfloat)
{
}
-WebGLAny WebGL2RenderingContext::getSamplerParameter(WebGLSampler*, GC3Denum)
+WebGLAny WebGL2RenderingContext::getSamplerParameter(WebGLSampler&, GC3Denum)
{
return nullptr;
}
@@ -833,16 +833,16 @@
{
}
-GC3Denum WebGL2RenderingContext::clientWaitSync(WebGLSync*, GC3Dbitfield, GC3Duint64)
+GC3Denum WebGL2RenderingContext::clientWaitSync(WebGLSync&, GC3Dbitfield, GC3Duint64)
{
return 0;
}
-void WebGL2RenderingContext::waitSync(WebGLSync*, GC3Dbitfield, GC3Duint64)
+void WebGL2RenderingContext::waitSync(WebGLSync&, GC3Dbitfield, GC3Duint64)
{
}
-WebGLAny WebGL2RenderingContext::getSyncParameter(WebGLSync*, GC3Denum)
+WebGLAny WebGL2RenderingContext::getSyncParameter(WebGLSync&, GC3Denum)
{
return nullptr;
}
@@ -873,11 +873,11 @@
{
}
-void WebGL2RenderingContext::transformFeedbackVaryings(WebGLProgram*, const Vector<String>&, GC3Denum)
+void WebGL2RenderingContext::transformFeedbackVaryings(WebGLProgram&, const Vector<String>&, GC3Denum)
{
}
-RefPtr<WebGLActiveInfo> WebGL2RenderingContext::getTransformFeedbackVarying(WebGLProgram*, GC3Duint)
+RefPtr<WebGLActiveInfo> WebGL2RenderingContext::getTransformFeedbackVarying(WebGLProgram&, GC3Duint)
{
return nullptr;
}
@@ -915,7 +915,7 @@
}
}
-Uint32Array* WebGL2RenderingContext::getUniformIndices(WebGLProgram*, const Vector<String>&)
+Uint32Array* WebGL2RenderingContext::getUniformIndices(WebGLProgram&, const Vector<String>&)
{
return nullptr;
}
@@ -944,22 +944,22 @@
}
}
-GC3Duint WebGL2RenderingContext::getUniformBlockIndex(WebGLProgram*, const String&)
+GC3Duint WebGL2RenderingContext::getUniformBlockIndex(WebGLProgram&, const String&)
{
return 0;
}
-WebGLAny WebGL2RenderingContext::getActiveUniformBlockParameter(WebGLProgram*, GC3Duint, GC3Denum)
+WebGLAny WebGL2RenderingContext::getActiveUniformBlockParameter(WebGLProgram&, GC3Duint, GC3Denum)
{
return nullptr;
}
-WebGLAny WebGL2RenderingContext::getActiveUniformBlockName(WebGLProgram*, GC3Duint)
+WebGLAny WebGL2RenderingContext::getActiveUniformBlockName(WebGLProgram&, GC3Duint)
{
return nullptr;
}
-void WebGL2RenderingContext::uniformBlockBinding(WebGLProgram*, GC3Duint, GC3Duint)
+void WebGL2RenderingContext::uniformBlockBinding(WebGLProgram&, GC3Duint, GC3Duint)
{
}
Modified: trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.h (221966 => 221967)
--- trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.h 2017-09-13 11:17:27 UTC (rev 221966)
+++ trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.h 2017-09-13 11:47:44 UTC (rev 221967)
@@ -117,10 +117,10 @@
RefPtr<WebGLQuery> createQuery();
void deleteQuery(WebGLQuery*);
GC3Dboolean isQuery(WebGLQuery*);
- void beginQuery(GC3Denum target, WebGLQuery*);
+ void beginQuery(GC3Denum target, WebGLQuery&);
void endQuery(GC3Denum target);
RefPtr<WebGLQuery> getQuery(GC3Denum target, GC3Denum pname);
- WebGLAny getQueryParameter(WebGLQuery*, GC3Denum pname);
+ WebGLAny getQueryParameter(WebGLQuery&, GC3Denum pname);
// Sampler objects
RefPtr<WebGLSampler> createSampler();
@@ -127,17 +127,17 @@
void deleteSampler(WebGLSampler*);
GC3Dboolean isSampler(WebGLSampler*);
void bindSampler(GC3Duint unit, WebGLSampler*);
- void samplerParameteri(WebGLSampler*, GC3Denum pname, GC3Dint param);
- void samplerParameterf(WebGLSampler*, GC3Denum pname, GC3Dfloat param);
- WebGLAny getSamplerParameter(WebGLSampler*, GC3Denum pname);
+ void samplerParameteri(WebGLSampler&, GC3Denum pname, GC3Dint param);
+ void samplerParameterf(WebGLSampler&, GC3Denum pname, GC3Dfloat param);
+ WebGLAny getSamplerParameter(WebGLSampler&, GC3Denum pname);
// Sync objects
RefPtr<WebGLSync> fenceSync(GC3Denum condition, GC3Dbitfield flags);
GC3Dboolean isSync(WebGLSync*);
void deleteSync(WebGLSync*);
- GC3Denum clientWaitSync(WebGLSync*, GC3Dbitfield flags, GC3Duint64 timeout);
- void waitSync(WebGLSync*, GC3Dbitfield flags, GC3Duint64 timeout);
- WebGLAny getSyncParameter(WebGLSync*, GC3Denum pname);
+ GC3Denum clientWaitSync(WebGLSync&, GC3Dbitfield flags, GC3Duint64 timeout);
+ void waitSync(WebGLSync&, GC3Dbitfield flags, GC3Duint64 timeout);
+ WebGLAny getSyncParameter(WebGLSync&, GC3Denum pname);
// Transform feedback
RefPtr<WebGLTransformFeedback> createTransformFeedback();
@@ -146,8 +146,8 @@
void bindTransformFeedback(GC3Denum target, WebGLTransformFeedback* id);
void beginTransformFeedback(GC3Denum primitiveMode);
void endTransformFeedback();
- void transformFeedbackVaryings(WebGLProgram*, const Vector<String>& varyings, GC3Denum bufferMode);
- RefPtr<WebGLActiveInfo> getTransformFeedbackVarying(WebGLProgram*, GC3Duint index);
+ void transformFeedbackVaryings(WebGLProgram&, const Vector<String>& varyings, GC3Denum bufferMode);
+ RefPtr<WebGLActiveInfo> getTransformFeedbackVarying(WebGLProgram&, GC3Duint index);
void pauseTransformFeedback();
void resumeTransformFeedback();
@@ -155,12 +155,12 @@
void bindBufferBase(GC3Denum target, GC3Duint index, WebGLBuffer*);
void bindBufferRange(GC3Denum target, GC3Duint index, WebGLBuffer*, GC3Dint64 offset, GC3Dint64 size);
WebGLAny getIndexedParameter(GC3Denum target, GC3Duint index);
- Uint32Array* getUniformIndices(WebGLProgram*, const Vector<String>& uniformNames);
+ Uint32Array* getUniformIndices(WebGLProgram&, const Vector<String>& uniformNames);
WebGLAny getActiveUniforms(WebGLProgram&, const Vector<GC3Duint>& uniformIndices, GC3Denum pname);
- GC3Duint getUniformBlockIndex(WebGLProgram*, const String& uniformBlockName);
- WebGLAny getActiveUniformBlockParameter(WebGLProgram*, GC3Duint uniformBlockIndex, GC3Denum pname);
- WebGLAny getActiveUniformBlockName(WebGLProgram*, GC3Duint uniformBlockIndex);
- void uniformBlockBinding(WebGLProgram*, GC3Duint uniformBlockIndex, GC3Duint uniformBlockBinding);
+ GC3Duint getUniformBlockIndex(WebGLProgram&, const String& uniformBlockName);
+ WebGLAny getActiveUniformBlockParameter(WebGLProgram&, GC3Duint uniformBlockIndex, GC3Denum pname);
+ WebGLAny getActiveUniformBlockName(WebGLProgram&, GC3Duint uniformBlockIndex);
+ void uniformBlockBinding(WebGLProgram&, GC3Duint uniformBlockIndex, GC3Duint uniformBlockBinding);
// Vertex array objects
RefPtr<WebGLVertexArrayObject> createVertexArray();
Modified: trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.idl (221966 => 221967)
--- trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.idl 2017-09-13 11:17:27 UTC (rev 221966)
+++ trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.idl 2017-09-13 11:47:44 UTC (rev 221967)
@@ -388,9 +388,9 @@
void uniformMatrix3x4fv(WebGLUniformLocation? location, GLboolean transpose, Float32Array value);
void uniformMatrix4x3fv(WebGLUniformLocation? location, GLboolean transpose, Float32Array value);
void vertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w);
- void vertexAttribI4iv(GLuint index, Int32Array? v);
+ void vertexAttribI4iv(GLuint index, Int32Array v);
void vertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
- void vertexAttribI4uiv(GLuint index, Uint32Array? v);
+ void vertexAttribI4uiv(GLuint index, Uint32Array v);
void vertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
/* Writing to the drawing buffer */
@@ -401,9 +401,9 @@
/* Multiple Render Targets */
void drawBuffers(sequence<GLenum> buffers);
- void clearBufferiv(GLenum buffer, GLint drawbuffer, Int32Array? value);
- void clearBufferuiv(GLenum buffer, GLint drawbuffer, Uint32Array? value);
- void clearBufferfv(GLenum buffer, GLint drawbuffer, Float32Array? value);
+ void clearBufferiv(GLenum buffer, GLint drawbuffer, Int32Array values);
+ void clearBufferuiv(GLenum buffer, GLint drawbuffer, Uint32Array values);
+ void clearBufferfv(GLenum buffer, GLint drawbuffer, Float32Array values);
void clearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
/* Query Objects */
@@ -410,10 +410,10 @@
WebGLQuery createQuery();
void deleteQuery(WebGLQuery? query);
GLboolean isQuery(WebGLQuery? query);
- void beginQuery(GLenum target, WebGLQuery? query);
+ void beginQuery(GLenum target, WebGLQuery query);
void endQuery(GLenum target);
WebGLQuery getQuery(GLenum target, GLenum pname);
- [OverrideIDLType=IDLWebGLAny] any getQueryParameter(WebGLQuery? query, GLenum pname);
+ [OverrideIDLType=IDLWebGLAny] any getQueryParameter(WebGLQuery query, GLenum pname);
/* Sampler Objects */
WebGLSampler createSampler();
@@ -420,17 +420,17 @@
void deleteSampler(WebGLSampler? sampler);
GLboolean isSampler(WebGLSampler? sampler);
void bindSampler(GLuint unit, WebGLSampler? sampler);
- void samplerParameteri(WebGLSampler? sampler, GLenum pname, GLint param);
- void samplerParameterf(WebGLSampler? sampler, GLenum pname, GLfloat param);
- [OverrideIDLType=IDLWebGLAny] any getSamplerParameter(WebGLSampler? sampler, GLenum pname);
+ void samplerParameteri(WebGLSampler sampler, GLenum pname, GLint param);
+ void samplerParameterf(WebGLSampler sampler, GLenum pname, GLfloat param);
+ [OverrideIDLType=IDLWebGLAny] any getSamplerParameter(WebGLSampler sampler, GLenum pname);
/* Sync objects */
WebGLSync fenceSync(GLenum condition, GLbitfield flags);
GLboolean isSync(WebGLSync? sync);
void deleteSync(WebGLSync? sync);
- GLenum clientWaitSync(WebGLSync? sync, GLbitfield flags, GLuint64 timeout);
- void waitSync(WebGLSync? sync, GLbitfield flags, GLuint64 timeout);
- [OverrideIDLType=IDLWebGLAny] any getSyncParameter(WebGLSync? sync, GLenum pname);
+ GLenum clientWaitSync(WebGLSync sync, GLbitfield flags, GLuint64 timeout);
+ void waitSync(WebGLSync sync, GLbitfield flags, GLuint64 timeout);
+ [OverrideIDLType=IDLWebGLAny] any getSyncParameter(WebGLSync sync, GLenum pname);
/* Transform Feedback */
WebGLTransformFeedback createTransformFeedback();
@@ -439,8 +439,8 @@
void bindTransformFeedback(GLenum target, WebGLTransformFeedback? id);
void beginTransformFeedback(GLenum primitiveMode);
void endTransformFeedback();
- void transformFeedbackVaryings(WebGLProgram? program, sequence<DOMString> varyings, GLenum bufferMode);
- WebGLActiveInfo getTransformFeedbackVarying(WebGLProgram? program, GLuint index);
+ void transformFeedbackVaryings(WebGLProgram program, sequence<DOMString> varyings, GLenum bufferMode);
+ WebGLActiveInfo getTransformFeedbackVarying(WebGLProgram program, GLuint index);
void pauseTransformFeedback();
void resumeTransformFeedback();
@@ -448,12 +448,12 @@
void bindBufferBase(GLenum target, GLuint index, WebGLBuffer? buffer);
void bindBufferRange(GLenum target, GLuint index, WebGLBuffer? buffer, GLintptr offset, GLsizeiptr size);
[OverrideIDLType=IDLWebGLAny] any getIndexedParameter(GLenum target, GLuint index);
- Uint32Array getUniformIndices(WebGLProgram? program, sequence<DOMString> uniformNames);
+ Uint32Array getUniformIndices(WebGLProgram program, sequence<DOMString> uniformNames);
[OverrideIDLType=IDLWebGLAny] any getActiveUniforms(WebGLProgram program, sequence<GLuint> uniformIndices, GLenum pname);
- GLuint getUniformBlockIndex(WebGLProgram? program, DOMString uniformBlockName);
- [OverrideIDLType=IDLWebGLAny] any getActiveUniformBlockParameter(WebGLProgram? program, GLuint uniformBlockIndex, GLenum pname);
- [OverrideIDLType=IDLWebGLAny] any getActiveUniformBlockName(WebGLProgram? program, GLuint uniformBlockIndex);
- void uniformBlockBinding(WebGLProgram? program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
+ GLuint getUniformBlockIndex(WebGLProgram program, DOMString uniformBlockName);
+ [OverrideIDLType=IDLWebGLAny] any getActiveUniformBlockParameter(WebGLProgram program, GLuint uniformBlockIndex, GLenum pname);
+ [OverrideIDLType=IDLWebGLAny] any getActiveUniformBlockName(WebGLProgram program, GLuint uniformBlockIndex);
+ void uniformBlockBinding(WebGLProgram program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
/* Vertex Array Objects */
WebGLVertexArrayObject createVertexArray();