mirror of
https://github.com/servo/servo.git
synced 2025-08-04 13:10:20 +01:00
Auto merge of #20669 - simartin:issue_20623, r=jdm
Issue #20623: Check the input to WebGLRenderingContext's clear(). Validate the input to this function as per specifications. --- - [X] `./mach build -d` does not report any errors - [X] `./mach build-geckolib` does not report any errors - [X] `./mach test-tidy` does not report any errors - [X] These changes fix #20623 - [X] There are tests for these changes <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/20669) <!-- Reviewable:end -->
This commit is contained in:
commit
0b5720547e
3 changed files with 36 additions and 0 deletions
|
@ -1878,6 +1878,9 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
||||||
if !self.validate_framebuffer_complete() {
|
if !self.validate_framebuffer_complete() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if mask & !(constants::DEPTH_BUFFER_BIT | constants::STENCIL_BUFFER_BIT | constants::COLOR_BUFFER_BIT) != 0 {
|
||||||
|
return self.webgl_error(InvalidValue);
|
||||||
|
}
|
||||||
|
|
||||||
self.send_command(WebGLCommand::Clear(mask));
|
self.send_command(WebGLCommand::Clear(mask));
|
||||||
self.mark_as_dirty();
|
self.mark_as_dirty();
|
||||||
|
|
|
@ -39293,6 +39293,12 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"mozilla/webgl/clear.html": [
|
||||||
|
[
|
||||||
|
"/_mozilla/mozilla/webgl/clear.html",
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"mozilla/webgl/context_creation_error.html": [
|
"mozilla/webgl/context_creation_error.html": [
|
||||||
[
|
[
|
||||||
"/_mozilla/mozilla/webgl/context_creation_error.html",
|
"/_mozilla/mozilla/webgl/context_creation_error.html",
|
||||||
|
@ -70956,6 +70962,10 @@
|
||||||
"c333c7b99156d63fcd3ad28014c7915a12cf8169",
|
"c333c7b99156d63fcd3ad28014c7915a12cf8169",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
|
"mozilla/webgl/clear.html": [
|
||||||
|
"14cc534be5da96b0cc128d5c44f662b2fdfb294c",
|
||||||
|
"testharness"
|
||||||
|
],
|
||||||
"mozilla/webgl/clearcolor.html": [
|
"mozilla/webgl/clearcolor.html": [
|
||||||
"942ee78ec987d17f63253ed97d6de958dbe8730d",
|
"942ee78ec987d17f63253ed97d6de958dbe8730d",
|
||||||
"reftest"
|
"reftest"
|
||||||
|
|
23
tests/wpt/mozilla/tests/mozilla/webgl/clear.html
Normal file
23
tests/wpt/mozilla/tests/mozilla/webgl/clear.html
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
<!doctype html>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>WebGLRenderingContext.clear testing (issue #20623)</title>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<script>
|
||||||
|
test(function() {
|
||||||
|
var gl = document.createElement("canvas").getContext("webgl");
|
||||||
|
// Valid values
|
||||||
|
gl.clear(gl.DEPTH_BUFFER_BIT);
|
||||||
|
assert_equals(gl.NO_ERROR, gl.getError());
|
||||||
|
gl.clear(gl.STENCIL_BUFFER_BIT);
|
||||||
|
assert_equals(gl.NO_ERROR, gl.getError());
|
||||||
|
gl.clear(gl.COLOR_BUFFER_BIT);
|
||||||
|
assert_equals(gl.NO_ERROR, gl.getError());
|
||||||
|
gl.clear(gl.DEPTH_BUFFER_BIT | gl.STENCIL_BUFFER_BIT | gl.COLOR_BUFFER_BIT);
|
||||||
|
assert_equals(gl.NO_ERROR, gl.getError());
|
||||||
|
|
||||||
|
// Invalid value
|
||||||
|
gl.clear(42);
|
||||||
|
assert_equals(gl.INVALID_VALUE, gl.getError());
|
||||||
|
});
|
||||||
|
</script>
|
Loading…
Add table
Add a link
Reference in a new issue