OLD | NEW |
| (Empty) |
1 <html> | |
2 <head> | |
3 <script type="text/javascript"> | |
4 var canvas; | |
5 var w, h; | |
6 var gl; | |
7 var extension; | |
8 | |
9 function testHorizontalBands() { | |
10 gl.enable(gl.SCISSOR_TEST); | |
11 | |
12 gl.clearColor(1, 0, 0, 1); | |
13 gl.scissor(0, 0, w, h/2); | |
14 gl.clear(gl.COLOR_BUFFER_BIT); | |
15 | |
16 gl.clearColor(0, 1, 0, 1); | |
17 gl.scissor(0, h/2, w, h/2); | |
18 gl.clear(gl.COLOR_BUFFER_BIT); | |
19 | |
20 gl.disable(gl.SCISSOR_TEST); | |
21 | |
22 var size = w * h * 4; | |
23 var array = new Uint8Array(size); | |
24 gl.readPixels(0, 0, w, h, gl.RGBA, gl.UNSIGNED_BYTE, array); | |
25 | |
26 return array[0] == 255 && array[1] == 0 && | |
27 array[size - 4] == 0 && array[size - 3] == 255; | |
28 } | |
29 | |
30 function testContextLost(e) { | |
31 e.preventDefault(); | |
32 setTimeout(function() { | |
33 extension.restoreContext(); | |
34 }, 0); | |
35 } | |
36 | |
37 function testContextRestored() { | |
38 gl = canvas.getContext("experimental-webgl"); | |
39 if (!gl || gl.isContextLost()) { | |
40 document.title = "FAILED: could not get recovered context"; | |
41 return; | |
42 } | |
43 gl.clearColor(0, 0, 1, 1); | |
44 gl.clear(gl.COLOR_BUFFER_BIT); | |
45 | |
46 var a = new Uint8Array(w * h * 4); | |
47 gl.readPixels(0, 0, w, h, gl.RGBA, gl.UNSIGNED_BYTE, a); | |
48 | |
49 window.domAutomationController.setAutomationId(1); | |
50 if (a[0] == 0 && a[1] == 0 && a[2] == 255) | |
51 window.domAutomationController.send("SUCCESS"); | |
52 else | |
53 window.domAutomationController.send("FAILED"); | |
54 } | |
55 | |
56 function contextLostTest(kind) | |
57 { | |
58 switch (kind) { | |
59 case "WEBGL_lose_context": { | |
60 extension = gl.getExtension("WEBKIT_WEBGL_lose_context") || | |
61 gl.getExtension("WEBGL_lose_context"); | |
62 extension.loseContext(); | |
63 break; | |
64 } | |
65 case "kill": | |
66 // nothing -- the browser test navigates to about:gpucrash and kills | |
67 // the GPU process. | |
68 break; | |
69 } | |
70 } | |
71 | |
72 function onLoad() { | |
73 canvas = document.getElementById("canvas1"); | |
74 w = canvas.width; | |
75 h = canvas.height; | |
76 if (!canvas) { | |
77 document.title = "FAILED: canvas element not found"; | |
78 return; | |
79 } | |
80 canvas.addEventListener("webglcontextlost", testContextLost, false); | |
81 canvas.addEventListener("webglcontextrestored", testContextRestored, false); | |
82 | |
83 gl = canvas.getContext("experimental-webgl"); | |
84 if (!gl) { | |
85 document.title = "FAILED: could not get webgl context for canvas"; | |
86 return; | |
87 } | |
88 | |
89 if (!testHorizontalBands()) { | |
90 document.title = "FAILED: did not render correctly"; | |
91 return; | |
92 } | |
93 | |
94 var query = /query=(.*)/.exec(window.location.href); | |
95 if (query) { | |
96 contextLostTest(query[1]); | |
97 } else { | |
98 var renderer = gl.getParameter(gl.RENDERER); | |
99 document.title = "SUCCESS: " + renderer; | |
100 } | |
101 } | |
102 </script> | |
103 </head> | |
104 <body onload="onLoad()"> | |
105 <canvas id="canvas1" width="16px" height="32px"> | |
106 </canvas> | |
107 </body> | |
108 </html> | |
OLD | NEW |