1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/browser/devtools/shadereditor/test/browser_webgl-actor-test-13.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,67 @@ 1.4 +/* Any copyright is dedicated to the Public Domain. 1.5 + http://creativecommons.org/publicdomain/zero/1.0/ */ 1.6 + 1.7 +/** 1.8 + * Tests if multiple WebGL contexts are correctly handled. 1.9 + */ 1.10 + 1.11 +function ifWebGLSupported() { 1.12 + let [target, debuggee, front] = yield initBackend(MULTIPLE_CONTEXTS_URL); 1.13 + front.setup({ reload: true }); 1.14 + 1.15 + let [firstProgramActor, secondProgramActor] = yield getPrograms(front, 2); 1.16 + 1.17 + isnot(firstProgramActor, secondProgramActor, 1.18 + "Two distinct program actors were recevide from two separate contexts."); 1.19 + 1.20 + let firstVertexShader = yield firstProgramActor.getVertexShader(); 1.21 + let firstFragmentShader = yield firstProgramActor.getFragmentShader(); 1.22 + let secondVertexShader = yield secondProgramActor.getVertexShader(); 1.23 + let secondFragmentShader = yield secondProgramActor.getFragmentShader(); 1.24 + 1.25 + isnot(firstVertexShader, secondVertexShader, 1.26 + "The two programs should have distinct vertex shaders."); 1.27 + isnot(firstFragmentShader, secondFragmentShader, 1.28 + "The two programs should have distinct fragment shaders."); 1.29 + 1.30 + let firstVertSource = yield firstVertexShader.getText(); 1.31 + let firstFragSource = yield firstFragmentShader.getText(); 1.32 + let secondVertSource = yield secondVertexShader.getText(); 1.33 + let secondFragSource = yield secondFragmentShader.getText(); 1.34 + 1.35 + is(firstVertSource, secondVertSource, 1.36 + "The vertex shaders should have identical sources."); 1.37 + is(firstFragSource, secondFragSource, 1.38 + "The vertex shaders should have identical sources."); 1.39 + 1.40 + yield ensurePixelIs(debuggee, { x: 0, y: 0 }, { r: 255, g: 255, b: 0, a: 255 }, true, "#canvas1"); 1.41 + yield ensurePixelIs(debuggee, { x: 0, y: 0 }, { r: 0, g: 255, b: 255, a: 255 }, true, "#canvas2"); 1.42 + yield ensurePixelIs(debuggee, { x: 127, y: 127 }, { r: 255, g: 255, b: 0, a: 255 }, true, "#canvas1"); 1.43 + yield ensurePixelIs(debuggee, { x: 127, y: 127 }, { r: 0, g: 255, b: 255, a: 255 }, true, "#canvas2"); 1.44 + ok(true, "The two canvases are correctly drawn."); 1.45 + 1.46 + yield firstProgramActor.highlight([1, 0, 0, 1]); 1.47 + yield ensurePixelIs(debuggee, { x: 0, y: 0 }, { r: 255, g: 0, b: 0, a: 255 }, true, "#canvas1"); 1.48 + yield ensurePixelIs(debuggee, { x: 0, y: 0 }, { r: 0, g: 255, b: 255, a: 255 }, true, "#canvas2"); 1.49 + yield ensurePixelIs(debuggee, { x: 127, y: 127 }, { r: 255, g: 0, b: 0, a: 255 }, true, "#canvas1"); 1.50 + yield ensurePixelIs(debuggee, { x: 127, y: 127 }, { r: 0, g: 255, b: 255, a: 255 }, true, "#canvas2"); 1.51 + ok(true, "The first canvas was correctly filled after highlighting."); 1.52 + 1.53 + yield secondProgramActor.highlight([0, 1, 0, 1]); 1.54 + yield ensurePixelIs(debuggee, { x: 0, y: 0 }, { r: 255, g: 0, b: 0, a: 255 }, true, "#canvas1"); 1.55 + yield ensurePixelIs(debuggee, { x: 0, y: 0 }, { r: 0, g: 255, b: 0, a: 255 }, true, "#canvas2"); 1.56 + yield ensurePixelIs(debuggee, { x: 127, y: 127 }, { r: 255, g: 0, b: 0, a: 255 }, true, "#canvas1"); 1.57 + yield ensurePixelIs(debuggee, { x: 127, y: 127 }, { r: 0, g: 255, b: 0, a: 255 }, true, "#canvas2"); 1.58 + ok(true, "The second canvas was correctly filled after highlighting."); 1.59 + 1.60 + yield firstProgramActor.unhighlight(); 1.61 + yield secondProgramActor.unhighlight(); 1.62 + yield ensurePixelIs(debuggee, { x: 0, y: 0 }, { r: 255, g: 255, b: 0, a: 255 }, true, "#canvas1"); 1.63 + yield ensurePixelIs(debuggee, { x: 0, y: 0 }, { r: 0, g: 255, b: 255, a: 255 }, true, "#canvas2"); 1.64 + yield ensurePixelIs(debuggee, { x: 127, y: 127 }, { r: 255, g: 255, b: 0, a: 255 }, true, "#canvas1"); 1.65 + yield ensurePixelIs(debuggee, { x: 127, y: 127 }, { r: 0, g: 255, b: 255, a: 255 }, true, "#canvas2"); 1.66 + ok(true, "The two canvases were correctly filled after unhighlighting."); 1.67 + 1.68 + yield removeTab(target.tab); 1.69 + finish(); 1.70 +}