| Index: LayoutTests/compositing/webgl/webgl-copy-image.html
|
| diff --git a/LayoutTests/compositing/webgl/webgl-copy-image.html b/LayoutTests/compositing/webgl/webgl-copy-image.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d934006f5673e3477d17cc1d9b544e937795677a
|
| --- /dev/null
|
| +++ b/LayoutTests/compositing/webgl/webgl-copy-image.html
|
| @@ -0,0 +1,78 @@
|
| +<!-- This is a test for crbug.com/392765, in which Copy image for
|
| + WebGL elements were crashing. Must be run with the threaded
|
| + compositor enabled. -->
|
| +<head>
|
| +<script src="../../resources/js-test.js"></script>
|
| +<script>
|
| +
|
| +function main()
|
| +{
|
| + if (!window.testRunner) {
|
| + testFailed("Requires window.testRunner");
|
| + } else {
|
| + testRunner.waitUntilDone();
|
| + testRunner.dumpAsText();
|
| + window.requestAnimationFrame(initTest);
|
| + }
|
| +}
|
| +
|
| +var tolerance = 1;
|
| +
|
| +function initTest() {
|
| + var canvas = document.getElementById("c");
|
| + var gl = canvas.getContext("webgl");
|
| + if (!gl) {
|
| + testFailed("Test requires WebGL");
|
| + testRunner.notifyDone();
|
| + return;
|
| + }
|
| +
|
| + gl.clearColor(1, 0, 0, 1);
|
| + gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
|
| +
|
| + window.requestAnimationFrame(runTest);
|
| +}
|
| +
|
| +function runTest() {
|
| + try {
|
| + testRunner.copyImageAtAndCapturePixelsAsyncThen(50, 50, completionCallback);
|
| + } catch (e) {
|
| + debug('error in runTest');
|
| + debug(e);
|
| + testRunner.notifyDone();
|
| + }
|
| +}
|
| +
|
| +var pixel;
|
| +function fetchPixelAt(x, y, width, height, snapshot) {
|
| + var data = new Uint8Array(snapshot);
|
| + pixel = [
|
| + data[4 * (width * y + x) + 0],
|
| + data[4 * (width * y + x) + 1],
|
| + data[4 * (width * y + x) + 2],
|
| + data[4 * (width * y + x) + 3]
|
| + ];
|
| +}
|
| +
|
| +function completionCallback(width, height, snapshot) {
|
| + try {
|
| + fetchPixelAt(50, 50, width, height, snapshot);
|
| + shouldBeCloseTo('pixel[0]', 255, tolerance);
|
| + shouldBeCloseTo('pixel[1]', 0, tolerance);
|
| + shouldBeCloseTo('pixel[2]', 0, tolerance);
|
| + } catch (e) {
|
| + debug('error in completionCallback');
|
| + debug(e);
|
| + testRunner.notifyDone();
|
| + return;
|
| + }
|
| + testRunner.notifyDone();
|
| +}
|
| +
|
| +main();
|
| +</script>
|
| +</head>
|
| +<body>
|
| +<canvas id="c" width="200" height="200" class="nomargin"></canvas>
|
| +<div id="console"></div>
|
| +</body>
|
|
|