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