function ok(what, msg) { postMessage({ event: msg, test: "ok", a: what }); } function is(a, b, msg) { postMessage({ event: msg, test: "is", a, b }); } // This is a copy of dom/xhr/tests/test_XHR_parameters.js var validParameters = [ undefined, null, {}, { mozSystem: "" }, { mozSystem: 0 }, { mozAnon: 1 }, { mozAnon: [] }, { get mozAnon() { return true; }, }, 0, 7, Math.PI, "string", true, false, ]; var invalidParameters = [ { get mozSystem() { throw new Error("Bla"); }, }, ]; function testParameters(havePrivileges) { function testValidParameter(value) { var xhr; try { xhr = new XMLHttpRequest(value); } catch (ex) { ok(false, "Got unexpected exception: " + ex); return; } ok(!!xhr, "passed " + JSON.stringify(value)); // If the page doesnt have privileges to create a system or anon XHR, // these flags will always be false no matter what is passed. var expectedAnon = false; var expectedSystem = false; if (havePrivileges) { expectedAnon = Boolean(value && value.mozAnon); expectedSystem = Boolean(value && value.mozSystem); } is(xhr.mozAnon, expectedAnon, "testing mozAnon"); is(xhr.mozSystem, expectedSystem, "testing mozSystem"); } function testInvalidParameter(value) { try { new XMLHttpRequest(value); ok( false, "invalid parameter did not cause exception: " + JSON.stringify(value) ); } catch (ex) { ok( true, "invalid parameter raised exception as expected: " + JSON.stringify(ex) ); } } validParameters.forEach(testValidParameter); invalidParameters.forEach(testInvalidParameter); } self.onmessage = function onmessage(event) { testParameters(event.data); postMessage({ test: "finish" }); };