Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(577)

Unified Diff: LayoutTests/compositing/webgl/webgl-copy-image.html

Issue 389273002: Fix copyImage for WebGL elements. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: seperated negative test Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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>

Powered by Google App Engine
This is Rietveld 408576698