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

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: added test for negative input 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
« no previous file with comments | « no previous file | LayoutTests/compositing/webgl/webgl-copy-image-expected.txt » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..9232539dbb88a477e69f7c5627675fc72ce500a1
--- /dev/null
+++ b/LayoutTests/compositing/webgl/webgl-copy-image.html
@@ -0,0 +1,100 @@
+<!-- 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>
+var gl;
+
+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");
+ 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);
+}
+
+var testsAndExpectations = [
+ { 'point': [50, 50], 'expected': 'exists' },
+ { 'point': [400, 400], 'expected': 'does not exist' }
+];
+
+var testIndex = 0;
+function runTest() {
+ if (testIndex >= testsAndExpectations.length) {
+ testRunner.notifyDone();
+ return;
+ }
+
+ try {
+ var test = testsAndExpectations[testIndex];
+ var point = test['point'];
+ testRunner.copyImageAtAndCapturePixelsAsyncThen(point[0], point[1], 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 {
+ var test = testsAndExpectations[testIndex];
+ var point = test['point'];
+ debug('Test ' + testIndex + ": WebGL element " + test['expected'] + ' at ' + point);
+
+ if (width > 0 && height > 0) {
Ken Russell (switch to Gerrit) 2014/07/17 21:32:31 This doesn't actually verify that the attempt to f
hj.r.chung 2014/07/18 06:31:39 Done.
+ 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;
+ }
+
+ ++testIndex;
+ window.requestAnimationFrame(runTest);
+}
+
+main();
+</script>
+</head>
+<body>
+<canvas id="c" width="200" height="200" class="nomargin"></canvas>
+<div id="console"></div>
+</body>
« no previous file with comments | « no previous file | LayoutTests/compositing/webgl/webgl-copy-image-expected.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698