diff --git a/components/script/dom/webgl2renderingcontext.rs b/components/script/dom/webgl2renderingcontext.rs index 1f6bc4f853a..81a1688c68b 100644 --- a/components/script/dom/webgl2renderingcontext.rs +++ b/components/script/dom/webgl2renderingcontext.rs @@ -241,7 +241,7 @@ impl WebGL2RenderingContextMethods for WebGL2RenderingContext { } /// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.5 - fn BufferSubData(&self, target: u32, offset: i64, data: Option) { + fn BufferSubData(&self, target: u32, offset: i64, data: ArrayBufferViewOrArrayBuffer) { self.base.BufferSubData(target, offset, data) } diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs index 31dcc7b647f..eca047d66d8 100644 --- a/components/script/dom/webglrenderingcontext.rs +++ b/components/script/dom/webglrenderingcontext.rs @@ -1711,13 +1711,11 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { } // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.5 - fn BufferSubData(&self, target: u32, offset: i64, data: Option) { + fn BufferSubData(&self, target: u32, offset: i64, data: ArrayBufferViewOrArrayBuffer) { let data_vec = match data { // Typed array is rooted, so we can safely temporarily retrieve its slice - Some(ArrayBufferViewOrArrayBuffer::ArrayBuffer(mut inner)) => inner.to_vec(), - Some(ArrayBufferViewOrArrayBuffer::ArrayBufferView(mut inner)) => inner.to_vec(), - // Spec: If data is null then an INVALID_VALUE error is generated. - None => return self.webgl_error(InvalidValue), + ArrayBufferViewOrArrayBuffer::ArrayBuffer(mut inner) => inner.to_vec(), + ArrayBufferViewOrArrayBuffer::ArrayBufferView(mut inner) => inner.to_vec(), }; let bound_buffer = handle_potential_webgl_error!(self, self.bound_buffer(target), return); diff --git a/components/script/dom/webidls/WebGLRenderingContext.webidl b/components/script/dom/webidls/WebGLRenderingContext.webidl index cd89abccee4..9eded76a9ec 100644 --- a/components/script/dom/webidls/WebGLRenderingContext.webidl +++ b/components/script/dom/webidls/WebGLRenderingContext.webidl @@ -496,7 +496,7 @@ interface WebGLRenderingContextBase void bufferData(GLenum target, object? data, GLenum usage); [Throws] void bufferData(GLenum target, GLsizeiptr size, GLenum usage); - void bufferSubData(GLenum target, GLintptr offset, /*[AllowShared]*/ BufferSource? data); + void bufferSubData(GLenum target, GLintptr offset, /*[AllowShared]*/ BufferSource data); [WebGLHandlesContextLoss] GLenum checkFramebufferStatus(GLenum target); void clear(GLbitfield mask);