mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 19:35:51 +00:00
b=569943; validate Enable/Disable args; r=vladimir
This commit is contained in:
parent
00204343fd
commit
ccaca6a20d
@ -299,6 +299,7 @@ protected:
|
||||
PRBool SafeToCreateCanvas3DContext(nsHTMLCanvasElement *canvasElement);
|
||||
PRBool ValidateGL();
|
||||
PRBool ValidateBuffers(PRUint32 count);
|
||||
static PRBool ValidateCapabilityEnum(WebGLenum cap);
|
||||
|
||||
void Invalidate();
|
||||
|
||||
|
@ -760,9 +760,6 @@ GL_SAME_METHOD_2(DepthRangef, DepthRange, float, float)
|
||||
GL_SAME_METHOD_2(DepthRange, DepthRange, float, float)
|
||||
#endif
|
||||
|
||||
// XXX arg check!
|
||||
GL_SAME_METHOD_1(Disable, Disable, WebGLenum)
|
||||
|
||||
NS_IMETHODIMP
|
||||
WebGLContext::DisableVertexAttribArray(WebGLuint index)
|
||||
{
|
||||
@ -884,8 +881,25 @@ WebGLContext::DrawElements(WebGLenum mode, WebGLuint count, WebGLenum type, WebG
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// XXX definitely need to validate this
|
||||
GL_SAME_METHOD_1(Enable, Enable, PRUint32)
|
||||
NS_IMETHODIMP WebGLContext::Enable(WebGLenum cap)
|
||||
{
|
||||
if (!ValidateCapabilityEnum(cap))
|
||||
return ErrorInvalidEnum("Enable: invalid capability enum");
|
||||
|
||||
MakeContextCurrent();
|
||||
gl->fEnable(cap);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP WebGLContext::Disable(WebGLenum cap)
|
||||
{
|
||||
if (!ValidateCapabilityEnum(cap))
|
||||
return ErrorInvalidEnum("Disable: invalid capability enum");
|
||||
|
||||
MakeContextCurrent();
|
||||
gl->fDisable(cap);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
WebGLContext::EnableVertexAttribArray(WebGLuint index)
|
||||
@ -1939,14 +1953,18 @@ WebGLContext::IsTexture(nsIWebGLTexture *tobj, WebGLboolean *retval)
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
WebGLContext::IsEnabled(WebGLenum k, WebGLboolean *retval)
|
||||
WebGLContext::IsEnabled(WebGLenum cap, WebGLboolean *retval)
|
||||
{
|
||||
if(!ValidateCapabilityEnum(cap)) {
|
||||
*retval = 0; // as per the OpenGL ES spec
|
||||
return ErrorInvalidEnum("IsEnabled: invalid capability enum");
|
||||
}
|
||||
|
||||
MakeContextCurrent();
|
||||
*retval = gl->fIsEnabled(k);
|
||||
*retval = gl->fIsEnabled(cap);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
GL_SAME_METHOD_1(LineWidth, LineWidth, float)
|
||||
|
||||
NS_IMETHODIMP
|
||||
|
@ -103,3 +103,20 @@ WebGLContext::ValidateBuffers(PRUint32 count)
|
||||
return PR_TRUE;
|
||||
}
|
||||
|
||||
PRBool WebGLContext::ValidateCapabilityEnum(WebGLenum cap)
|
||||
{
|
||||
switch (cap) {
|
||||
case LOCAL_GL_BLEND:
|
||||
case LOCAL_GL_CULL_FACE:
|
||||
case LOCAL_GL_DEPTH_TEST:
|
||||
case LOCAL_GL_DITHER:
|
||||
case LOCAL_GL_POLYGON_OFFSET_FILL:
|
||||
case LOCAL_GL_SAMPLE_ALPHA_TO_COVERAGE:
|
||||
case LOCAL_GL_SAMPLE_COVERAGE:
|
||||
case LOCAL_GL_SCISSOR_TEST:
|
||||
case LOCAL_GL_STENCIL_TEST:
|
||||
return PR_TRUE;
|
||||
default:
|
||||
return PR_FALSE;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user