Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / LayoutTests / inspector / profiler / webgl / webgl-get-resource-state-buffer-data.html
1 <html>
2 <head>
3     <script src="../../../http/tests/inspector/inspector-test.js"></script>
4     <script src="../canvas-profiler-test.js"></script>
5 <script>
6 if (window.internals)
7     window.internals.settings.setWebGLErrorsToConsoleEnabled(false);
8
9 var gl;
10
11 function createCanvasContext()
12 {
13     gl = createWebGLContext(document.getElementById("canvas"));
14     console.assert(gl, "Failed to create a WebGL context");
15 }
16
17 function doCanvasCalls()
18 {
19     gl.bindBuffer(gl.ARRAY_BUFFER, gl.createBuffer());
20     gl.bufferData(gl.ARRAY_BUFFER, 5, gl.STATIC_DRAW); // 5 zeros
21
22     var bufferView = new Uint16Array([0x0000, 0x1122, 0x3344, 0x5566, 0x7788, 0x99aa, 0xbbcc, 0xddee, 0xffff]);
23     gl.bufferData(gl.ARRAY_BUFFER, bufferView, gl.DYNAMIC_DRAW);
24
25     var bufferView2 = new Int8Array([1, 1, 2, 2, 3, 3]);
26     gl.bufferSubData(gl.ARRAY_BUFFER, 2, bufferView2);
27
28     gl.bufferSubData(gl.ARRAY_BUFFER, 8, new ArrayBuffer(4)); // zero out [0x7788, 0x99aa]
29
30     var subBufferView = new Uint8Array(bufferView.buffer, 14, 4); // refers to [0xddee, 0xffff]
31     gl.bufferSubData(gl.ARRAY_BUFFER, 0, subBufferView);
32
33     gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([-1, 0, 1]), gl.DYNAMIC_DRAW);
34     gl.bufferSubData(gl.ARRAY_BUFFER, 0, new Uint32Array([1, 2, 3]));                             // full replacement
35     gl.bufferSubData(gl.ARRAY_BUFFER, 0, new Int16Array([-1, -2, -3, -4, -5, -6]));               // full replacement
36     gl.bufferSubData(gl.ARRAY_BUFFER, 0, new Int8Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])); // full replacement
37     gl.bufferSubData(gl.ARRAY_BUFFER, 1, new Uint32Array([0xffffffff, 0xffffffff])); // -1 x8
38
39     var err = gl.getError();
40     console.assert(err === gl.NO_ERROR, "Should be no GL errors, but was: " + err);
41 }
42
43 function test()
44 {
45     var traceLog;
46     var traceLogId;
47     var resourceIds;
48
49     InspectorTest.enableCanvasAgent(step1);
50     function step1()
51     {
52         InspectorTest.evaluateInPage("createCanvasContext()", step2);
53     }
54     function step2()
55     {
56         CanvasAgent.startCapturing(didStartCapturing);
57     }
58     function didStartCapturing(error, id)
59     {
60         InspectorTest.assertTrue(!error && !!id, "Unexpected error: " + error);
61         InspectorTest.addResult("\nStarted capturing.");
62         traceLogId = id;
63         InspectorTest.evaluateInPage("doCanvasCalls()", didCanvasCalls);
64     }
65     function didCanvasCalls()
66     {
67         CanvasAgent.stopCapturing(traceLogId, didStopCapturing);
68     }
69     function didStopCapturing()
70     {
71         InspectorTest.addResult("Stopped capturing.");
72         CanvasAgent.getTraceLog(traceLogId, 0, undefined, didReceiveTraceLog);
73     }
74     function didReceiveTraceLog(error, traceLogValue)
75     {
76         traceLog = traceLogValue;
77         InspectorTest.assertTrue(!error && !!traceLog, "Unexpected error: " + error);
78         InspectorTest.assertTrue(traceLog.calls.length > 0, "Expected not empty trace log calls array");
79         resourceIds = InspectorTest.collectResourceIdsFromTraceLog(traceLog);
80         replayUntilNextBufferDataCall(0);
81     }
82     function replayUntilNextBufferDataCall(offset)
83     {
84         var bufferDataCalls = ["bindBuffer", "bufferData", "bufferSubData"];
85         var calls = traceLog.calls;
86         for (var i = offset, n = calls.length; i < n; ++i) {
87             var call = calls[i];
88             if (bufferDataCalls.indexOf(call.functionName) !== -1) {
89                 CanvasAgent.replayTraceLog(traceLogId, i, didReplayTraceLog.bind(null, i));
90                 return;
91             }
92         }
93         InspectorTest.completeTest();
94     }
95     function didReplayTraceLog(stepNo)
96     {
97         InspectorTest.addResult("\nReplayed call #" + stepNo);
98         CanvasAgent.getResourceState(traceLogId, resourceIds["WebGLBuffer@1"], didGetResourceState);
99
100         function didGetResourceState(error, resourceState)
101         {
102             InspectorTest.assertTrue(!error && !!resourceState, "Unexpected error: " + error);
103             var descriptor = InspectorTest.findResourceStateDescriptor(resourceState, "bufferData");
104             if (!descriptor)
105                 InspectorTest.addResult("No bufferData available");
106             else {
107                 var remoteObject = descriptor.value && descriptor.value.remoteObject;
108                 if (!remoteObject)
109                     InspectorTest.addResult("FAIL: Internal error in the protocol: no \"remoteObject\" property in a CallArgument");
110                 else {
111                     var obj = WebInspector.runtimeModel.createRemoteObject(remoteObject);
112                     obj.getOwnProperties(didGetOwnProperties.bind(null, descriptor.value.description));
113                     return;
114                 }
115             }
116             replayUntilNextBufferDataCall(stepNo + 1);
117         }
118
119         function didGetOwnProperties(description, properties)
120         {
121             function formatNumber(value)
122             {
123                 if (/^Uint16Array/.test(description)) {
124                     var str = "0000" + Number(value || 0).toString(16);
125                     str = str.replace(/^0+(.{4,})$/, "$1");
126                     return "0x" + str;
127                 }
128                 return value;
129             }
130
131             var result = [];
132             for (var i = 0; i < properties.length; ++i) {
133                 var index = properties[i].name;
134                 var value = properties[i].value;
135                 if (!isNaN(index))
136                     result[+index] = formatNumber(value && value.value);
137             }
138             InspectorTest.addResult("bufferData: " + description + ": [" + result.join(", ") + "]");
139             replayUntilNextBufferDataCall(stepNo + 1);
140         }
141     }
142 }
143
144 </script>
145 </head>
146 <body onload="runTest()">
147 <p>
148 Tests WebGLBuffer data state during the replay.
149 </p>
150 <canvas id="canvas"></canvas>
151 </body>
152 </html>