Unreviewed, rolling out r250114.
[WebKit-https.git] / LayoutTests / inspector / canvas / recording-webgl2-snapshots.html
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <script src="../../http/tests/inspector/resources/inspector-test.js"></script>
5 <script src="resources/recording-utilities.js"></script>
6 <script src="resources/shaderProgram-utilities.js"></script>
7 <script id="vertex-shader" type="x-shader/x-vertex">
8     attribute vec3 position;
9     void main(void) {
10         gl_Position = vec4(position, 1.0);
11     }
12 </script>
13 <script id="fragment-shader" type="x-shader/x-fragment">
14     precision mediump float;
15
16     void main(void) {
17         gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);
18     }
19 </script>
20 <script>
21 if (window.internals) {
22     window.internals.settings.setWebGLErrorsToConsoleEnabled(false);
23     window.internals.settings.setWebGL2Enabled(true);
24 }
25
26 let vertexBuffer = null;
27 let indexBuffer = null;
28 let position = null;
29
30 function load() {
31     createProgram("webgl2");
32     linkProgram("vertex-shader", "fragment-shader");
33     context.useProgram(program);
34
35     vertexBuffer = context.createBuffer();
36     context.bindBuffer(context.ARRAY_BUFFER, vertexBuffer);
37
38     indexBuffer = context.createBuffer();
39     context.bindBuffer(context.ELEMENT_ARRAY_BUFFER, indexBuffer);
40
41     position = context.getUniformLocation(program, "position");
42     context.vertexAttribPointer(position, 3, context.FLOAT, false, 0, 0); 
43     context.enableVertexAttribArray(position);
44
45     document.body.appendChild(context.canvas);
46
47     runTest();
48 }
49
50 function cancelActions() {
51     // This function is expected by "resources/recording-utilities.js".
52 }
53
54 function performActions() {
55     context.useProgram(program);
56
57     function clearContext() {
58         context.clearColor(0.0, 0.0, 0.0, 1.0);
59         context.clear(context.COLOR_BUFFER_BIT);
60     }
61
62     function drawArrays() {
63         let vertexes = [
64             -0.5,  0.5,  0.0,
65             -0.5, -0.5,  0.0,
66              0.5, -0.5,  0.0,
67         ];
68         context.bufferData(context.ARRAY_BUFFER, new Float32Array(vertexes), context.STATIC_DRAW);
69
70         context.drawArrays(context.TRIANGLES, 0, 3);
71     }
72
73     function drawElements() {
74         let vertexes = [
75              0.5,  0.5,  0.0,
76             -0.5, -0.5,  0.0,
77              0.5, -0.5,  0.0,
78         ];
79         context.bufferData(context.ARRAY_BUFFER, new Float32Array(vertexes), context.STATIC_DRAW);
80
81         let indexes = [0, 1, 2];
82         context.bufferData(context.ELEMENT_ARRAY_BUFFER, new Uint16Array(indexes), context.STATIC_DRAW);
83
84         context.drawElements(context.TRIANGLES, indexes.length, context.UNSIGNED_SHORT, 0);
85     }
86
87     clearContext();
88     drawArrays();
89     clearContext();
90     drawElements();
91     clearContext();
92
93     setTimeout(() => {
94         TestPage.dispatchEventToFrontend("LastFrame");
95     }, 0);
96 }
97
98 function test() {
99     let suite = InspectorTest.createAsyncSuite("Canvas.recordingWebGL2");
100
101     suite.addTestCase({
102         name: "Canvas.recordingWebGL2.snapshots",
103         description: "Check that the snapshot taken after each visual action is different.",
104         test(resolve, reject) {
105             startRecording(WI.Canvas.ContextType.WebGL2, resolve, reject, {frameCount: 1, checkForContentChange: true});
106         },
107         timeout: -1,
108     });
109
110     suite.runTestCasesAndFinish();
111 }
112 </script>
113 </head>
114 <body onload="load()">
115     <p>Test that CanvasManager is able to record actions made to WebGL2 canvas contexts.</p>
116 </body>
117 </html>