mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 915421 - split social frameworker test into 2. r=mixedpuppy
This commit is contained in:
parent
7790688b05
commit
eb15fb3590
@ -11,6 +11,7 @@ MOCHITEST_BROWSER_FILES = \
|
||||
echo.sjs \
|
||||
worker_xhr.js \
|
||||
browser_frameworker.js \
|
||||
browser_frameworker_sandbox.js \
|
||||
worker_relative.js \
|
||||
relative_import.js \
|
||||
browser_workerAPI.js \
|
||||
|
@ -2,6 +2,9 @@
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
// This file tests message ports and semantics of the frameworker which aren't
|
||||
// directly related to the sandbox. See also browser_frameworker_sandbox.js.
|
||||
|
||||
function makeWorkerUrl(runner) {
|
||||
let prefix = "http://example.com/browser/toolkit/components/social/test/browser/echo.sjs?";
|
||||
if (typeof runner == "function") {
|
||||
@ -136,263 +139,6 @@ let tests = {
|
||||
worker.port.postMessage({topic: "hello", data: [1,2,3]});
|
||||
},
|
||||
|
||||
testArrayUsingBuffer: function(cbnext) {
|
||||
let run = function() {
|
||||
onconnect = function(e) {
|
||||
let port = e.ports[0];
|
||||
port.onmessage = function(e) {
|
||||
if (e.data.topic == "go") {
|
||||
let buffer = new ArrayBuffer(10);
|
||||
// this one has always worked in the past, but worth checking anyway...
|
||||
if (new Uint8Array(buffer).length != 10) {
|
||||
port.postMessage({topic: "result", reason: "first length was not 10"});
|
||||
return;
|
||||
}
|
||||
let reader = new FileReader();
|
||||
reader.onload = function(event) {
|
||||
if (new Uint8Array(buffer).length != 10) {
|
||||
port.postMessage({topic: "result", reason: "length in onload handler was not 10"});
|
||||
return;
|
||||
}
|
||||
// all seems good!
|
||||
port.postMessage({topic: "result", reason: "ok"});
|
||||
}
|
||||
let blob = new Blob([buffer], {type: "binary"});
|
||||
reader.readAsArrayBuffer(blob);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
let worker = getFrameWorkerHandle(makeWorkerUrl(run), undefined, "testArray");
|
||||
worker.port.onmessage = function(e) {
|
||||
if (e.data.topic == "result") {
|
||||
is(e.data.reason, "ok", "check the array worked");
|
||||
worker.terminate();
|
||||
cbnext();
|
||||
}
|
||||
}
|
||||
worker.port.postMessage({topic: "go"});
|
||||
},
|
||||
|
||||
testArrayUsingReader: function(cbnext) {
|
||||
let run = function() {
|
||||
onconnect = function(e) {
|
||||
let port = e.ports[0];
|
||||
port.onmessage = function(e) {
|
||||
if (e.data.topic == "go") {
|
||||
let buffer = new ArrayBuffer(10);
|
||||
let reader = new FileReader();
|
||||
reader.onload = function(event) {
|
||||
try {
|
||||
if (new Uint8Array(reader.result).length != 10) {
|
||||
port.postMessage({topic: "result", reason: "length in onload handler was not 10"});
|
||||
return;
|
||||
}
|
||||
// all seems good!
|
||||
port.postMessage({topic: "result", reason: "ok"});
|
||||
} catch (ex) {
|
||||
port.postMessage({topic: "result", reason: ex.toString()});
|
||||
}
|
||||
}
|
||||
let blob = new Blob([buffer], {type: "binary"});
|
||||
reader.readAsArrayBuffer(blob);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
let worker = getFrameWorkerHandle(makeWorkerUrl(run), undefined, "testArray");
|
||||
worker.port.onmessage = function(e) {
|
||||
if (e.data.topic == "result") {
|
||||
is(e.data.reason, "ok", "check the array worked");
|
||||
worker.terminate();
|
||||
cbnext();
|
||||
}
|
||||
}
|
||||
worker.port.postMessage({topic: "go"});
|
||||
},
|
||||
|
||||
testXHR: function(cbnext) {
|
||||
// NOTE: this url MUST be in the same origin as worker_xhr.js fetches from!
|
||||
let url = "https://example.com/browser/toolkit/components/social/test/browser/worker_xhr.js";
|
||||
let worker = getFrameWorkerHandle(url, undefined, "testXHR");
|
||||
worker.port.onmessage = function(e) {
|
||||
if (e.data.topic == "done") {
|
||||
is(e.data.result, "ok", "check the xhr test worked");
|
||||
worker.terminate();
|
||||
cbnext();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
testLocalStorage: function(cbnext) {
|
||||
let run = function() {
|
||||
onconnect = function(e) {
|
||||
let port = e.ports[0];
|
||||
try {
|
||||
localStorage.setItem("foo", "1");
|
||||
} catch(e) {
|
||||
port.postMessage({topic: "done", result: "FAILED to set localStorage, " + e.toString() });
|
||||
return;
|
||||
}
|
||||
|
||||
var ok;
|
||||
try {
|
||||
ok = localStorage["foo"] == 1;
|
||||
} catch (e) {
|
||||
port.postMessage({topic: "done", result: "FAILED to read localStorage, " + e.toString() });
|
||||
return;
|
||||
}
|
||||
port.postMessage({topic: "done", result: "ok"});
|
||||
}
|
||||
}
|
||||
let worker = getFrameWorkerHandle(makeWorkerUrl(run), undefined, "testLocalStorage", null, true);
|
||||
worker.port.onmessage = function(e) {
|
||||
if (e.data.topic == "done") {
|
||||
is(e.data.result, "ok", "check the localStorage test worked");
|
||||
worker.terminate();
|
||||
cbnext();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
testNoLocalStorage: function(cbnext) {
|
||||
let run = function() {
|
||||
onconnect = function(e) {
|
||||
let port = e.ports[0];
|
||||
try {
|
||||
localStorage.setItem("foo", "1");
|
||||
} catch(e) {
|
||||
port.postMessage({topic: "done", result: "ok"});
|
||||
return;
|
||||
}
|
||||
|
||||
port.postMessage({topic: "done", result: "FAILED because localStorage was exposed" });
|
||||
}
|
||||
}
|
||||
let worker = getFrameWorkerHandle(makeWorkerUrl(run), undefined, "testNoLocalStorage");
|
||||
worker.port.onmessage = function(e) {
|
||||
if (e.data.topic == "done") {
|
||||
is(e.data.result, "ok", "check that retrieving localStorage fails by default");
|
||||
worker.terminate();
|
||||
cbnext();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
testBase64: function (cbnext) {
|
||||
let run = function() {
|
||||
onconnect = function(e) {
|
||||
let port = e.ports[0];
|
||||
var ok = false;
|
||||
try {
|
||||
ok = btoa("1234") == "MTIzNA==";
|
||||
} catch(e) {
|
||||
port.postMessage({topic: "done", result: "FAILED to call btoa, " + e.toString() });
|
||||
return;
|
||||
}
|
||||
if (!ok) {
|
||||
port.postMessage({topic: "done", result: "FAILED calling btoa"});
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
ok = atob("NDMyMQ==") == "4321";
|
||||
} catch (e) {
|
||||
port.postMessage({topic: "done", result: "FAILED to call atob, " + e.toString() });
|
||||
return;
|
||||
}
|
||||
if (!ok) {
|
||||
port.postMessage({topic: "done", result: "FAILED calling atob"});
|
||||
return;
|
||||
}
|
||||
|
||||
port.postMessage({topic: "done", result: "ok"});
|
||||
}
|
||||
}
|
||||
let worker = getFrameWorkerHandle(makeWorkerUrl(run), undefined, "testBase64");
|
||||
worker.port.onmessage = function(e) {
|
||||
if (e.data.topic == "done") {
|
||||
is(e.data.result, "ok", "check the atob/btoa test worked");
|
||||
worker.terminate();
|
||||
cbnext();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
testTimeouts: function (cbnext) {
|
||||
let run = function() {
|
||||
onconnect = function(e) {
|
||||
let port = e.ports[0];
|
||||
|
||||
var timeout;
|
||||
try {
|
||||
timeout = setTimeout(function () {
|
||||
port.postMessage({topic: "done", result: "FAILED cancelled timeout was called"});
|
||||
}, 100);
|
||||
} catch (ex) {
|
||||
port.postMessage({topic: "done", result: "FAILED calling setTimeout: " + ex});
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
clearTimeout(timeout);
|
||||
} catch (ex) {
|
||||
port.postMessage({topic: "done", result: "FAILED calling clearTimeout: " + ex});
|
||||
return;
|
||||
}
|
||||
|
||||
var counter = 0;
|
||||
try {
|
||||
timeout = setInterval(function () {
|
||||
if (++counter == 2) {
|
||||
clearInterval(timeout);
|
||||
setTimeout(function () {
|
||||
port.postMessage({topic: "done", result: "ok"});
|
||||
return;
|
||||
}, 0);
|
||||
}
|
||||
}, 100);
|
||||
} catch (ex) {
|
||||
port.postMessage({topic: "done", result: "FAILED calling setInterval: " + ex});
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
let worker = getFrameWorkerHandle(makeWorkerUrl(run), undefined, "testTimeouts");
|
||||
worker.port.onmessage = function(e) {
|
||||
if (e.data.topic == "done") {
|
||||
is(e.data.result, "ok", "check that timeouts worked");
|
||||
worker.terminate();
|
||||
cbnext();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
testWebSocket: function (cbnext) {
|
||||
let run = function() {
|
||||
onconnect = function(e) {
|
||||
let port = e.ports[0];
|
||||
|
||||
try {
|
||||
var exampleSocket = new WebSocket("ws://mochi.test:8888/socketserver");
|
||||
} catch (e) {
|
||||
port.postMessage({topic: "done", result: "FAILED calling WebSocket constructor: " + e});
|
||||
return;
|
||||
}
|
||||
|
||||
port.postMessage({topic: "done", result: "ok"});
|
||||
}
|
||||
}
|
||||
let worker = getFrameWorkerHandle(makeWorkerUrl(run), undefined, "testWebSocket");
|
||||
worker.port.onmessage = function(e) {
|
||||
if (e.data.topic == "done") {
|
||||
is(e.data.result, "ok", "check that websockets worked");
|
||||
worker.terminate();
|
||||
cbnext();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
testSameOriginImport: function(cbnext) {
|
||||
let run = function() {
|
||||
onconnect = function(e) {
|
||||
@ -422,7 +168,6 @@ let tests = {
|
||||
worker.port.postMessage({topic: "ping"})
|
||||
},
|
||||
|
||||
|
||||
testRelativeImport: function(cbnext) {
|
||||
let url = "https://example.com/browser/toolkit/components/social/test/browser/worker_relative.js";
|
||||
let worker = getFrameWorkerHandle(url, undefined, "testSameOriginImport");
|
||||
@ -633,68 +378,4 @@ let tests = {
|
||||
}
|
||||
worker.port.postMessage({topic: "get-ready"});
|
||||
},
|
||||
|
||||
testEventSource: function(cbnext) {
|
||||
let worker = getFrameWorkerHandle("https://example.com/browser/toolkit/components/social/test/browser/worker_eventsource.js", undefined, "testEventSource");
|
||||
worker.port.onmessage = function(e) {
|
||||
let m = e.data;
|
||||
if (m.topic == "eventSourceTest") {
|
||||
if (m.result.ok != undefined)
|
||||
ok(m.result.ok, e.data.result.msg);
|
||||
if (m.result.is != undefined)
|
||||
is(m.result.is, m.result.match, m.result.msg);
|
||||
if (m.result.info != undefined)
|
||||
info(m.result.info);
|
||||
} else if (e.data.topic == "pong") {
|
||||
worker.terminate();
|
||||
cbnext();
|
||||
}
|
||||
}
|
||||
worker.port.postMessage({topic: "ping"})
|
||||
},
|
||||
|
||||
|
||||
testIndexedDB: function(cbnext) {
|
||||
let worker = getFrameWorkerHandle("https://example.com/browser/toolkit/components/social/test/browser/worker_social.js", undefined, "testIndexedDB");
|
||||
worker.port.onmessage = function(e) {
|
||||
let m = e.data;
|
||||
if (m.topic == "social.indexeddb-result") {
|
||||
is(m.data.result, "ok", "created indexeddb");
|
||||
worker.terminate();
|
||||
cbnext();
|
||||
}
|
||||
}
|
||||
worker.port.postMessage({topic: "test-indexeddb-create"})
|
||||
},
|
||||
|
||||
testSubworker: function(cbnext) {
|
||||
// the main "frameworker"...
|
||||
let mainworker = function() {
|
||||
onconnect = function(e) {
|
||||
let port = e.ports[0];
|
||||
port.onmessage = function(e) {
|
||||
if (e.data.topic == "go") {
|
||||
let suburl = e.data.data;
|
||||
let worker = new Worker(suburl);
|
||||
worker.onmessage = function(sube) {
|
||||
port.postMessage({topic: "sub-message", data: sube.data});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// The "subworker" that is actually a real, bona-fide worker.
|
||||
let subworker = function() {
|
||||
postMessage("hello");
|
||||
}
|
||||
let worker = getFrameWorkerHandle(makeWorkerUrl(mainworker), undefined, "testSubWorker");
|
||||
worker.port.onmessage = function(e) {
|
||||
if (e.data.topic == "sub-message" && e.data.data == "hello") {
|
||||
worker.terminate();
|
||||
cbnext();
|
||||
}
|
||||
}
|
||||
worker.port.postMessage({topic: "go", data: makeWorkerUrl(subworker)});
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,347 @@
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
// This file tests features made available to the frameworker via the sandbox.
|
||||
// For other frameworker tests, see browser_frameworker.js
|
||||
|
||||
function makeWorkerUrl(runner) {
|
||||
let prefix = "http://example.com/browser/toolkit/components/social/test/browser/echo.sjs?";
|
||||
if (typeof runner == "function") {
|
||||
runner = "var run=" + runner.toSource() + ";run();";
|
||||
}
|
||||
return prefix + encodeURI(runner);
|
||||
}
|
||||
|
||||
var getFrameWorkerHandle;
|
||||
function test() {
|
||||
waitForExplicitFinish();
|
||||
|
||||
let scope = {};
|
||||
Cu.import("resource://gre/modules/FrameWorker.jsm", scope);
|
||||
getFrameWorkerHandle = scope.getFrameWorkerHandle;
|
||||
|
||||
runTests(tests);
|
||||
}
|
||||
|
||||
let tests = {
|
||||
testArrayUsingBuffer: function(cbnext) {
|
||||
let run = function() {
|
||||
onconnect = function(e) {
|
||||
let port = e.ports[0];
|
||||
port.onmessage = function(e) {
|
||||
if (e.data.topic == "go") {
|
||||
let buffer = new ArrayBuffer(10);
|
||||
// this one has always worked in the past, but worth checking anyway...
|
||||
if (new Uint8Array(buffer).length != 10) {
|
||||
port.postMessage({topic: "result", reason: "first length was not 10"});
|
||||
return;
|
||||
}
|
||||
let reader = new FileReader();
|
||||
reader.onload = function(event) {
|
||||
if (new Uint8Array(buffer).length != 10) {
|
||||
port.postMessage({topic: "result", reason: "length in onload handler was not 10"});
|
||||
return;
|
||||
}
|
||||
// all seems good!
|
||||
port.postMessage({topic: "result", reason: "ok"});
|
||||
}
|
||||
let blob = new Blob([buffer], {type: "binary"});
|
||||
reader.readAsArrayBuffer(blob);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
let worker = getFrameWorkerHandle(makeWorkerUrl(run), undefined, "testArray");
|
||||
worker.port.onmessage = function(e) {
|
||||
if (e.data.topic == "result") {
|
||||
is(e.data.reason, "ok", "check the array worked");
|
||||
worker.terminate();
|
||||
cbnext();
|
||||
}
|
||||
}
|
||||
worker.port.postMessage({topic: "go"});
|
||||
},
|
||||
|
||||
testArrayUsingReader: function(cbnext) {
|
||||
let run = function() {
|
||||
onconnect = function(e) {
|
||||
let port = e.ports[0];
|
||||
port.onmessage = function(e) {
|
||||
if (e.data.topic == "go") {
|
||||
let buffer = new ArrayBuffer(10);
|
||||
let reader = new FileReader();
|
||||
reader.onload = function(event) {
|
||||
try {
|
||||
if (new Uint8Array(reader.result).length != 10) {
|
||||
port.postMessage({topic: "result", reason: "length in onload handler was not 10"});
|
||||
return;
|
||||
}
|
||||
// all seems good!
|
||||
port.postMessage({topic: "result", reason: "ok"});
|
||||
} catch (ex) {
|
||||
port.postMessage({topic: "result", reason: ex.toString()});
|
||||
}
|
||||
}
|
||||
let blob = new Blob([buffer], {type: "binary"});
|
||||
reader.readAsArrayBuffer(blob);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
let worker = getFrameWorkerHandle(makeWorkerUrl(run), undefined, "testArray");
|
||||
worker.port.onmessage = function(e) {
|
||||
if (e.data.topic == "result") {
|
||||
is(e.data.reason, "ok", "check the array worked");
|
||||
worker.terminate();
|
||||
cbnext();
|
||||
}
|
||||
}
|
||||
worker.port.postMessage({topic: "go"});
|
||||
},
|
||||
|
||||
testXHR: function(cbnext) {
|
||||
// NOTE: this url MUST be in the same origin as worker_xhr.js fetches from!
|
||||
let url = "https://example.com/browser/toolkit/components/social/test/browser/worker_xhr.js";
|
||||
let worker = getFrameWorkerHandle(url, undefined, "testXHR");
|
||||
worker.port.onmessage = function(e) {
|
||||
if (e.data.topic == "done") {
|
||||
is(e.data.result, "ok", "check the xhr test worked");
|
||||
worker.terminate();
|
||||
cbnext();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
testLocalStorage: function(cbnext) {
|
||||
let run = function() {
|
||||
onconnect = function(e) {
|
||||
let port = e.ports[0];
|
||||
try {
|
||||
localStorage.setItem("foo", "1");
|
||||
} catch(e) {
|
||||
port.postMessage({topic: "done", result: "FAILED to set localStorage, " + e.toString() });
|
||||
return;
|
||||
}
|
||||
|
||||
var ok;
|
||||
try {
|
||||
ok = localStorage["foo"] == 1;
|
||||
} catch (e) {
|
||||
port.postMessage({topic: "done", result: "FAILED to read localStorage, " + e.toString() });
|
||||
return;
|
||||
}
|
||||
port.postMessage({topic: "done", result: "ok"});
|
||||
}
|
||||
}
|
||||
let worker = getFrameWorkerHandle(makeWorkerUrl(run), undefined, "testLocalStorage", null, true);
|
||||
worker.port.onmessage = function(e) {
|
||||
if (e.data.topic == "done") {
|
||||
is(e.data.result, "ok", "check the localStorage test worked");
|
||||
worker.terminate();
|
||||
cbnext();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
testNoLocalStorage: function(cbnext) {
|
||||
let run = function() {
|
||||
onconnect = function(e) {
|
||||
let port = e.ports[0];
|
||||
try {
|
||||
localStorage.setItem("foo", "1");
|
||||
} catch(e) {
|
||||
port.postMessage({topic: "done", result: "ok"});
|
||||
return;
|
||||
}
|
||||
|
||||
port.postMessage({topic: "done", result: "FAILED because localStorage was exposed" });
|
||||
}
|
||||
}
|
||||
let worker = getFrameWorkerHandle(makeWorkerUrl(run), undefined, "testNoLocalStorage");
|
||||
worker.port.onmessage = function(e) {
|
||||
if (e.data.topic == "done") {
|
||||
is(e.data.result, "ok", "check that retrieving localStorage fails by default");
|
||||
worker.terminate();
|
||||
cbnext();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
testBase64: function (cbnext) {
|
||||
let run = function() {
|
||||
onconnect = function(e) {
|
||||
let port = e.ports[0];
|
||||
var ok = false;
|
||||
try {
|
||||
ok = btoa("1234") == "MTIzNA==";
|
||||
} catch(e) {
|
||||
port.postMessage({topic: "done", result: "FAILED to call btoa, " + e.toString() });
|
||||
return;
|
||||
}
|
||||
if (!ok) {
|
||||
port.postMessage({topic: "done", result: "FAILED calling btoa"});
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
ok = atob("NDMyMQ==") == "4321";
|
||||
} catch (e) {
|
||||
port.postMessage({topic: "done", result: "FAILED to call atob, " + e.toString() });
|
||||
return;
|
||||
}
|
||||
if (!ok) {
|
||||
port.postMessage({topic: "done", result: "FAILED calling atob"});
|
||||
return;
|
||||
}
|
||||
|
||||
port.postMessage({topic: "done", result: "ok"});
|
||||
}
|
||||
}
|
||||
let worker = getFrameWorkerHandle(makeWorkerUrl(run), undefined, "testBase64");
|
||||
worker.port.onmessage = function(e) {
|
||||
if (e.data.topic == "done") {
|
||||
is(e.data.result, "ok", "check the atob/btoa test worked");
|
||||
worker.terminate();
|
||||
cbnext();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
testTimeouts: function (cbnext) {
|
||||
let run = function() {
|
||||
onconnect = function(e) {
|
||||
let port = e.ports[0];
|
||||
|
||||
var timeout;
|
||||
try {
|
||||
timeout = setTimeout(function () {
|
||||
port.postMessage({topic: "done", result: "FAILED cancelled timeout was called"});
|
||||
}, 100);
|
||||
} catch (ex) {
|
||||
port.postMessage({topic: "done", result: "FAILED calling setTimeout: " + ex});
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
clearTimeout(timeout);
|
||||
} catch (ex) {
|
||||
port.postMessage({topic: "done", result: "FAILED calling clearTimeout: " + ex});
|
||||
return;
|
||||
}
|
||||
|
||||
var counter = 0;
|
||||
try {
|
||||
timeout = setInterval(function () {
|
||||
if (++counter == 2) {
|
||||
clearInterval(timeout);
|
||||
setTimeout(function () {
|
||||
port.postMessage({topic: "done", result: "ok"});
|
||||
return;
|
||||
}, 0);
|
||||
}
|
||||
}, 100);
|
||||
} catch (ex) {
|
||||
port.postMessage({topic: "done", result: "FAILED calling setInterval: " + ex});
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
let worker = getFrameWorkerHandle(makeWorkerUrl(run), undefined, "testTimeouts");
|
||||
worker.port.onmessage = function(e) {
|
||||
if (e.data.topic == "done") {
|
||||
is(e.data.result, "ok", "check that timeouts worked");
|
||||
worker.terminate();
|
||||
cbnext();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
testWebSocket: function (cbnext) {
|
||||
let run = function() {
|
||||
onconnect = function(e) {
|
||||
let port = e.ports[0];
|
||||
|
||||
try {
|
||||
var exampleSocket = new WebSocket("ws://mochi.test:8888/socketserver");
|
||||
} catch (e) {
|
||||
port.postMessage({topic: "done", result: "FAILED calling WebSocket constructor: " + e});
|
||||
return;
|
||||
}
|
||||
|
||||
port.postMessage({topic: "done", result: "ok"});
|
||||
}
|
||||
}
|
||||
let worker = getFrameWorkerHandle(makeWorkerUrl(run), undefined, "testWebSocket");
|
||||
worker.port.onmessage = function(e) {
|
||||
if (e.data.topic == "done") {
|
||||
is(e.data.result, "ok", "check that websockets worked");
|
||||
worker.terminate();
|
||||
cbnext();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
testEventSource: function(cbnext) {
|
||||
let worker = getFrameWorkerHandle("https://example.com/browser/toolkit/components/social/test/browser/worker_eventsource.js", undefined, "testEventSource");
|
||||
worker.port.onmessage = function(e) {
|
||||
let m = e.data;
|
||||
if (m.topic == "eventSourceTest") {
|
||||
if (m.result.ok != undefined)
|
||||
ok(m.result.ok, e.data.result.msg);
|
||||
if (m.result.is != undefined)
|
||||
is(m.result.is, m.result.match, m.result.msg);
|
||||
if (m.result.info != undefined)
|
||||
info(m.result.info);
|
||||
} else if (e.data.topic == "pong") {
|
||||
worker.terminate();
|
||||
cbnext();
|
||||
}
|
||||
}
|
||||
worker.port.postMessage({topic: "ping"})
|
||||
},
|
||||
|
||||
testIndexedDB: function(cbnext) {
|
||||
let worker = getFrameWorkerHandle("https://example.com/browser/toolkit/components/social/test/browser/worker_social.js", undefined, "testIndexedDB");
|
||||
worker.port.onmessage = function(e) {
|
||||
let m = e.data;
|
||||
if (m.topic == "social.indexeddb-result") {
|
||||
is(m.data.result, "ok", "created indexeddb");
|
||||
worker.terminate();
|
||||
cbnext();
|
||||
}
|
||||
}
|
||||
worker.port.postMessage({topic: "test-indexeddb-create"})
|
||||
},
|
||||
|
||||
testSubworker: function(cbnext) {
|
||||
// the main "frameworker"...
|
||||
let mainworker = function() {
|
||||
onconnect = function(e) {
|
||||
let port = e.ports[0];
|
||||
port.onmessage = function(e) {
|
||||
if (e.data.topic == "go") {
|
||||
let suburl = e.data.data;
|
||||
let worker = new Worker(suburl);
|
||||
worker.onmessage = function(sube) {
|
||||
port.postMessage({topic: "sub-message", data: sube.data});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// The "subworker" that is actually a real, bona-fide worker.
|
||||
let subworker = function() {
|
||||
postMessage("hello");
|
||||
}
|
||||
let worker = getFrameWorkerHandle(makeWorkerUrl(mainworker), undefined, "testSubWorker");
|
||||
worker.port.onmessage = function(e) {
|
||||
if (e.data.topic == "sub-message" && e.data.data == "hello") {
|
||||
worker.terminate();
|
||||
cbnext();
|
||||
}
|
||||
}
|
||||
worker.port.postMessage({topic: "go", data: makeWorkerUrl(subworker)});
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user