# HG changeset patch # User Morris Tseng Bug 709490 - Part 4 interdiff. diff --git a/dom/canvas/test/mochitest.ini b/dom/canvas/test/mochitest.ini index 6dec65d..5e98447 100644 --- a/dom/canvas/test/mochitest.ini +++ b/dom/canvas/test/mochitest.ini @@ -22,18 +22,19 @@ support-files = image_rrgg-256x256.png image_transparent.png image_transparent50.png image_yellow.png image_yellow75.png imagebitmap_on_worker.js imagebitmap_structuredclone.js imagebitmap_structuredclone_iframe.html - workercanvas.js - workercanvas_neuter.js + offscreencanvas.js + offscreencanvas_neuter.js + offscreencanvas_serviceworker_inner.html [test_2d.clearRect.image.offscreen.html] [test_2d.clip.winding.html] [test_2d.composite.canvas.color-burn.html] skip-if = (toolkit == 'android' && processor == 'x86') #x86 only bug 913662 [test_2d.composite.canvas.color-dodge.html] skip-if = (toolkit == 'android' && processor == 'x86') #x86 only bug 913662 [test_2d.composite.canvas.color.html] @@ -257,18 +258,22 @@ skip-if = buildapp == 'mulet' || (buildapp == 'b2g' && toolkit != 'gonk') [test_toDataURL_parameters.html] [test_windingRuleUndefined.html] [test_2d.fillText.gradient.html] skip-if = (buildapp == 'b2g' && toolkit != 'gonk') # bug 1040965 [test_2d_composite_canvaspattern_setTransform.html] [test_createPattern_broken.html] [test_setlinedash.html] [test_filter.html] -[test_workercanvas_basic_webgl.html] -tags = workercanvas -[test_workercanvas_neuter.html] -tags = workercanvas -[test_workercanvas_many.html] -tags = workercanvas -[test_workercanvas_sizechange.html] -tags = workercanvas -[test_workercanvas_subworker.html] -tags = workercanvas +[test_offscreencanvas_basic_webgl.html] +tags = offscreencanvas +[test_offscreencanvas_sharedworker.html] +tags = offscreencanvas +[test_offscreencanvas_serviceworker.html] +tags = offscreencanvas +[test_offscreencanvas_neuter.html] +tags = offscreencanvas +[test_offscreencanvas_many.html] +tags = offscreencanvas +[test_offscreencanvas_sizechange.html] +tags = offscreencanvas +[test_offscreencanvas_subworker.html] +tags = offscreencanvas diff --git a/dom/canvas/test/workercanvas.js b/dom/canvas/test/offscreencanvas.js similarity index 85% rename from dom/canvas/test/workercanvas.js rename to dom/canvas/test/offscreencanvas.js index f284c65..69f84c9 100644 --- a/dom/canvas/test/workercanvas.js +++ b/dom/canvas/test/offscreencanvas.js @@ -1,37 +1,42 @@ -/* WebWorker for test_workercanvas_*.html */ +/* WebWorker for test_offscreencanvas_*.html */ +var port = null; function ok(expect, msg) { - postMessage({type: "test", result: !!expect, name: msg}); -} - -function todo(msg) { - postMessage({type: "todo", name: msg}); + if (port) { + port.postMessage({type: "test", result: !!expect, name: msg}); + } else { + postMessage({type: "test", result: !!expect, name: msg}); + } } function finish() { - postMessage({type: "finish"}); + if (port) { + port.postMessage({type: "finish"}); + } else { + postMessage({type: "finish"}); + } } //-------------------------------------------------------------------- // WebGL Drawing Functions //-------------------------------------------------------------------- function createDrawFunc(canvas) { var gl; try { - gl = canvas.getContext("webgl"); + gl = canvas.getContext("experimental-webgl"); } catch (e) {} if (!gl) { - todo("WebGL is unavailable"); + ok(false, "WebGL is unavailable"); return null; } var vertSrc = "attribute vec2 position; \ void main(void) { \ gl_Position = vec4(position, 0.0, 1.0); \ }"; @@ -141,27 +146,27 @@ function createDrawFunc(canvas) { preDraw(prefix); gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4); postDraw(prefix); checkGLError(prefix); }; } /* entry point */ -onmessage = function(evt) { +function entryFunction(testStr, subtests, offscreenCanvas) { - var test = evt.data.test; - var canvas = evt.data.canvas; + var test = testStr; + var canvas = offscreenCanvas; if (test != "subworker") { ok(canvas, "Canvas successfully transfered to worker"); ok(canvas.getContext, "Canvas has getContext"); - ok(canvas.width == 64, "WorkerCanvas width should be 64"); - ok(canvas.height == 64, "WorkerCanvas height should be 64"); + ok(canvas.width == 64, "OffscreenCanvas width should be 64"); + ok(canvas.height == 64, "OffscreenCanvas height should be 64"); } var draw; //------------------------------------------------------------------------ // Basic WebGL test //------------------------------------------------------------------------ if (test == "webgl") { @@ -212,24 +217,24 @@ onmessage = function(evt) { ok(true, "Worker is done"); finish(); }, 0); }, 0); }, 0); } //------------------------------------------------------------------------ - // Using WorkerCanvas from sub workers + // Using OffscreenCanvas from sub workers //------------------------------------------------------------------------ else if (test == "subworker") { /* subworker tests take a list of tests to run on children */ var stillRunning = 0; - evt.data.subtests.forEach(function (subtest) { + subtests.forEach(function (subtest) { ++stillRunning; - var subworker = new Worker('workercanvas.js'); + var subworker = new Worker('offscreencanvas.js'); subworker.onmessage = function(evt) { /* report finish to parent when all children are finished */ if (evt.data.type == "finish") { subworker.terminate(); if (--stillRunning == 0) { ok(true, "Worker is done"); finish(); } @@ -244,8 +249,23 @@ onmessage = function(evt) { return [].concat.apply([], t.subtests.map(findTransferables)); return [t.canvas]; }; subworker.postMessage(subtest, findTransferables(subtest)); }); } }; + +onmessage = function(evt) { + port = evt.ports[0]; + entryFunction(evt.data.test, evt.data.subtests, evt.data.canvas); +}; + +onconnect = function(e) { + port = e.ports[0]; + + port.addEventListener('message', function(e) { + entryFunction(e.data.test, e.data.subtests, e.data.canvas); + }); + + port.start(); +}; diff --git a/dom/canvas/test/offscreencanvas_neuter.js b/dom/canvas/test/offscreencanvas_neuter.js new file mode 100644 index 0000000..30648d7 --- /dev/null +++ b/dom/canvas/test/offscreencanvas_neuter.js @@ -0,0 +1 @@ +/* empty worker for test_offscreencanvas_disable.html */ diff --git a/dom/canvas/test/offscreencanvas_serviceworker_inner.html b/dom/canvas/test/offscreencanvas_serviceworker_inner.html new file mode 100644 index 0000000..b153f95 --- /dev/null +++ b/dom/canvas/test/offscreencanvas_serviceworker_inner.html @@ -0,0 +1,32 @@ + + + +WebGL in OffscreenCanvas + + + + + + diff --git a/dom/canvas/test/test_workercanvas_basic_webgl.html b/dom/canvas/test/test_offscreencanvas_basic_webgl.html similarity index 61% rename from dom/canvas/test/test_workercanvas_basic_webgl.html rename to dom/canvas/test/test_offscreencanvas_basic_webgl.html index 140ec47..dd3ac21 100644 --- a/dom/canvas/test/test_workercanvas_basic_webgl.html +++ b/dom/canvas/test/test_offscreencanvas_basic_webgl.html @@ -1,51 +1,48 @@ -WebGL in WorkerCanvas +WebGL in OffscreenCanvas diff --git a/dom/canvas/test/test_workercanvas_many.html b/dom/canvas/test/test_offscreencanvas_many.html similarity index 76% rename from dom/canvas/test/test_workercanvas_many.html rename to dom/canvas/test/test_offscreencanvas_many.html index 252ea34..d7b8661 100644 --- a/dom/canvas/test/test_workercanvas_many.html +++ b/dom/canvas/test/test_offscreencanvas_many.html @@ -1,16 +1,21 @@ -WebGL in WorkerCanvas +WebGL in OffscreenCanvas +
@@ -20,45 +25,42 @@ SimpleTest.waitForExplicitFinish(); function runTest() { var stillRunning = 0; var startWorker = function(canvas, test) { stillRunning++; - var worker = new Worker("workercanvas.js"); + var worker = new Worker("offscreencanvas.js"); worker.onmessage = function(evt) { var msg = evt.data || {}; if (msg.type == "test") { ok(msg.result, msg.name); } - if (msg.type == "todo") { - todo(false, msg.name); - } if (msg.type == "finish") { worker.terminate(); if (--stillRunning == 0) SimpleTest.finish(); } } - var workerCanvas = htmlCanvas.transferControlToWorker(); - worker.postMessage({test: test, canvas: workerCanvas}, [workerCanvas]); + var offscreenCanvas = htmlCanvas.transferControlToOffscreen(); + worker.postMessage({test: test, canvas: offscreenCanvas}, [offscreenCanvas]); } /* create 4 workers that do the regular drawing test and 4 workers that do the size change test */ for (var i = 1; i < 9; i++) { var htmlCanvas = document.getElementById("c" + i); startWorker(htmlCanvas, i % 2 == 0 ? 'webgl' : 'webgl_changesize'); } } SpecialPowers.pushPrefEnv({'set': [ - ['gfx.workercanvas.enabled', true], + ['gfx.offscreencanvas.enabled', true], ['webgl.force-enabled', true] ]}, runTest); diff --git a/dom/canvas/test/test_offscreencanvas_neuter.html b/dom/canvas/test/test_offscreencanvas_neuter.html new file mode 100644 index 0000000..2af080c --- /dev/null +++ b/dom/canvas/test/test_offscreencanvas_neuter.html @@ -0,0 +1,78 @@ + + + +OffscreenCanvas: Test neutering + + + + + + + + diff --git a/dom/canvas/test/test_offscreencanvas_serviceworker.html b/dom/canvas/test/test_offscreencanvas_serviceworker.html new file mode 100644 index 0000000..187538a --- /dev/null +++ b/dom/canvas/test/test_offscreencanvas_serviceworker.html @@ -0,0 +1,48 @@ + + + +WebGL in OffscreenCanvas + + + + +
+ + + diff --git a/dom/canvas/test/test_offscreencanvas_sharedworker.html b/dom/canvas/test/test_offscreencanvas_sharedworker.html new file mode 100644 index 0000000..3dea29b --- /dev/null +++ b/dom/canvas/test/test_offscreencanvas_sharedworker.html @@ -0,0 +1,48 @@ + + + +WebGL in OffscreenCanvas + + + + + + + + diff --git a/dom/canvas/test/test_workercanvas_sizechange.html b/dom/canvas/test/test_offscreencanvas_sizechange.html similarity index 66% rename from dom/canvas/test/test_workercanvas_sizechange.html rename to dom/canvas/test/test_offscreencanvas_sizechange.html index 22ce840..cecbac3 100644 --- a/dom/canvas/test/test_workercanvas_sizechange.html +++ b/dom/canvas/test/test_offscreencanvas_sizechange.html @@ -1,44 +1,41 @@ -WebGL in WorkerCanvas +WebGL in OffscreenCanvas diff --git a/dom/canvas/test/test_workercanvas_subworker.html b/dom/canvas/test/test_offscreencanvas_subworker.html similarity index 84% rename from dom/canvas/test/test_workercanvas_subworker.html rename to dom/canvas/test/test_offscreencanvas_subworker.html index 5564d33..49cb628 100644 --- a/dom/canvas/test/test_workercanvas_subworker.html +++ b/dom/canvas/test/test_offscreencanvas_subworker.html @@ -1,16 +1,21 @@ -WorkerCanvas: Test subworkers +OffscreenCanvas: Test subworkers +
@@ -18,35 +23,32 @@
diff --git a/dom/canvas/test/test_workercanvas_neuter.html b/dom/canvas/test/test_workercanvas_neuter.html deleted file mode 100644 index 5051ee7..0000000 --- a/dom/canvas/test/test_workercanvas_neuter.html +++ /dev/null @@ -1,68 +0,0 @@ - - - -WorkerCanvas: Test neutering - - - - - - - - diff --git a/dom/canvas/test/workercanvas_neuter.js b/dom/canvas/test/workercanvas_neuter.js deleted file mode 100644 index 748e5ba..0000000 --- a/dom/canvas/test/workercanvas_neuter.js +++ /dev/null @@ -1,2 +0,0 @@ - -/* empty worker for test_workercanvas_disable.html */