summaryrefslogtreecommitdiffstats
path: root/content/test
diff options
context:
space:
mode:
authorzmo@chromium.org <zmo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-06 19:01:44 +0000
committerzmo@chromium.org <zmo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-06 19:01:44 +0000
commit88509b5f4f36af9ffae787c73b49e10e87e22c4d (patch)
tree45f95aa9b5dabed28dca34f3e027426f47e66ba6 /content/test
parentc79d19707a104adbed7989b4b22b588a3fa4c1ae (diff)
downloadchromium_src-88509b5f4f36af9ffae787c73b49e10e87e22c4d.zip
chromium_src-88509b5f4f36af9ffae787c73b49e10e87e22c4d.tar.gz
chromium_src-88509b5f4f36af9ffae787c73b49e10e87e22c4d.tar.bz2
Move gpu pixel tests from chrome to content.
Also some cleanup: remove the browser resize step, as it adds flakiness, and totally not necessary. This CL does not remove or turn off the chrome side test, because we need to config the build bots for the content side pixel tests once they are checked in. After everyting rungs smoothly, I'll remove the duplicated tests on chrome side. BUG=111506 TEST=gpu waterfall Review URL: https://codereview.chromium.org/12211024 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@181013 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/test')
-rw-r--r--content/test/data/gpu/pixel_canvas2d.html48
-rw-r--r--content/test/data/gpu/pixel_css3d.html54
-rw-r--r--content/test/data/gpu/pixel_webgl.html137
3 files changed, 239 insertions, 0 deletions
diff --git a/content/test/data/gpu/pixel_canvas2d.html b/content/test/data/gpu/pixel_canvas2d.html
new file mode 100644
index 0000000..1df3d4b
--- /dev/null
+++ b/content/test/data/gpu/pixel_canvas2d.html
@@ -0,0 +1,48 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<title>Canvas 2D Test: Red Box over Black Background</title>
+<style type="text/css">
+.nomargin {
+ margin: 0px auto;
+}
+</style>
+<script>
+var g_swapsBeforeAck = 15;
+
+function main()
+{
+ draw();
+ waitForFinish();
+}
+
+function draw()
+{
+ var canvas = document.getElementById("c");
+ var c2d = canvas.getContext("2d");
+ c2d.clearRect(0, 0, canvas.width, canvas.height);
+ c2d.fillStyle = "rgba(255, 0, 0, 0.5)";
+ c2d.fillRect(50, 50, 100, 100);
+}
+
+function waitForFinish()
+{
+ if (g_swapsBeforeAck == 0) {
+ domAutomationController.setAutomationId(1);
+ domAutomationController.send("SUCCESS");
+ } else {
+ g_swapsBeforeAck--;
+ document.getElementById('container').style.zIndex = g_swapsBeforeAck + 1;
+ window.webkitRequestAnimationFrame(waitForFinish);
+ }
+}
+</script>
+</head>
+<body onload="main()">
+<div style="position:relative; width:200px; height:200px; background-color:black">
+</div>
+<div id="container" style="position:absolute; top:0px; left:0px">
+<canvas id="c" width="200" height="200" class="nomargin"></canvas>
+</div>
+</body>
+</html>
diff --git a/content/test/data/gpu/pixel_css3d.html b/content/test/data/gpu/pixel_css3d.html
new file mode 100644
index 0000000..ca49d9a
--- /dev/null
+++ b/content/test/data/gpu/pixel_css3d.html
@@ -0,0 +1,54 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<title>CSS 3D Test: Projected Blue Box over Black Background</title>
+<style type="text/css">
+.nomargin {
+ margin: 0px auto;
+}
+
+#container {
+ -webkit-perspective: 500;
+}
+
+#container > div {
+ position: relative;
+ margin: 50px;
+ width: 125px;
+ height: 75px;
+}
+
+#container > :first-child {
+ background-color: blue;
+ -webkit-transform: rotateY(45deg);
+}
+</style>
+<script>
+var g_swapsBeforeAck = 15;
+
+function main()
+{
+ waitForFinish();
+}
+
+function waitForFinish()
+{
+ if (g_swapsBeforeAck == 0) {
+ domAutomationController.setAutomationId(1);
+ domAutomationController.send("SUCCESS");
+ } else {
+ g_swapsBeforeAck--;
+ document.getElementById('blue_box').style.zIndex = g_swapsBeforeAck + 1;
+ window.webkitRequestAnimationFrame(waitForFinish);
+ }
+}
+</script>
+</head>
+<body onload="main()">
+<div style="position:relative; width:200px; height:200px; background-color:black; zindex-0">
+</div>
+<div id="container" style="position:absolute; top:0px; left:0px">
+ <div id="blue_box"></div>
+</div>
+</body>
+</html>
diff --git a/content/test/data/gpu/pixel_webgl.html b/content/test/data/gpu/pixel_webgl.html
new file mode 100644
index 0000000..40240f9
--- /dev/null
+++ b/content/test/data/gpu/pixel_webgl.html
@@ -0,0 +1,137 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<title>WebGL Test: Green Triangle over Black Background</title>
+<style type="text/css">
+.nomargin {
+ margin: 0px auto;
+}
+</style>
+
+<script id="shader-vs" type="x-shader/x-vertex">
+attribute vec3 pos;
+void main(void)
+{
+ gl_Position = vec4(pos, 1.0);
+}
+</script>
+
+<script id="shader-fs" type="x-shader/x-fragment">
+precision mediump float;
+void main(void)
+{
+ gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);
+}
+</script>
+
+<script>
+var g_swapsBeforeAck = 15;
+var gl;
+
+function main()
+{
+ var canvas = document.getElementById("c");
+ gl = initGL(canvas);
+ if (gl && setup(gl)) {
+ drawSomeFrames();
+ } else {
+ domAutomationController.setAutomationId(1);
+ domAutomationController.send("FAILURE");
+ }
+}
+
+function drawSomeFrames()
+{
+ if (g_swapsBeforeAck == 0) {
+ domAutomationController.setAutomationId(1);
+ domAutomationController.send("SUCCESS");
+ } else {
+ g_swapsBeforeAck--;
+ draw(gl);
+ window.webkitRequestAnimationFrame(drawSomeFrames);
+ }
+}
+
+function initGL(canvas)
+{
+ var gl = null;
+ try {
+ gl = canvas.getContext("experimental-webgl");
+ } catch (e) {}
+ if (!gl) {
+ try {
+ gl = canvas.getContext("webgl");
+ } catch (e) { }
+ }
+ return gl;
+}
+
+function setupShader(gl, source, type) {
+ var shader = gl.createShader(type);
+ gl.shaderSource(shader, source);
+ gl.compileShader(shader);
+ if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS))
+ return null;
+ return shader;
+}
+
+function setupProgram(gl, vs_id, fs_id) {
+ var vs_node = document.getElementById(vs_id);
+ var fs_node = document.getElementById(fs_id);
+ if (!vs_node || !fs_node)
+ return null;
+ var vs = setupShader(gl, vs_node.text, gl.VERTEX_SHADER);
+ var fs = setupShader(gl, fs_node.text, gl.FRAGMENT_SHADER);
+ if (!vs || !fs)
+ return null;
+ var program = gl.createProgram();
+ gl.attachShader(program, vs);
+ gl.attachShader(program, fs);
+ gl.linkProgram(program);
+ if (!gl.getProgramParameter(program, gl.LINK_STATUS))
+ return null;
+ gl.useProgram(program);
+ return program;
+}
+
+function setupBuffer(gl) {
+ var buffer = gl.createBuffer();
+ gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
+ var vertexData = [
+ 0.0, 0.6, 0.0, // Vertex 1 position
+ -0.6, -0.6, 0.0, // Vertex 2 position
+ 0.6, -0.6, 0.0, // Vertex 3 position
+ ];
+ gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertexData), gl.STATIC_DRAW);
+}
+
+function setup(gl) {
+ var program = setupProgram(gl, "shader-vs", "shader-fs");
+ if (!program)
+ return false;
+ var posAttr = gl.getAttribLocation(program, "pos");
+ gl.enableVertexAttribArray(posAttr);
+ setupBuffer(gl);
+ var stride = 3 * Float32Array.BYTES_PER_ELEMENT;
+ gl.vertexAttribPointer(posAttr, 3, gl.FLOAT, false, stride, 0);
+ gl.clearColor(0.0, 0.0, 0.0, 0.0);
+ gl.viewport(0, 0, 200, 200);
+ gl.disable(gl.DEPTH_TEST);
+ if (gl.getError() != gl.NO_ERROR)
+ return false;
+ return true;
+}
+
+function draw(gl) {
+ gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
+ gl.drawArrays(gl.TRIANGLES, 0, 3);
+}
+</script>
+</head>
+<body onload="main()">
+<div style="position:relative; width:200px; height:200px; background-color:black"></div>
+<div style="position:absolute; top:0px; left:0px">
+<canvas id="c" width="200" height="200" class="nomargin"></canvas>
+</div>
+</body>
+</html>