1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>Test for XMLHttpRequest with system privileges</title>
- <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
- </head>
- <body onload="runTests();">
- <p id="display">
- </p>
- <div id="content" style="display: none">
- </div>
- <pre id="test">
- <script class="testbody" type="application/javascript;version=1.8">
- function runTests() {
- SimpleTest.waitForExplicitFinish();
- let validParameters = [
- undefined,
- null,
- {},
- {mozSystem: ""},
- {mozSystem: 0},
- {mozAnon: 1},
- {mozAnon: []},
- {get mozAnon() { return true; }},
- 0,
- 7,
- Math.PI,
- "string",
- true,
- false,
- ];
- let invalidParameters = [
- {get mozSystem() { throw "Bla"; } },
- ];
- let havePrivileges = false;
- function testValidParameter(value) {
- let xhr;
- try {
- xhr = new XMLHttpRequest(value);
- } catch (ex) {
- ok(false, "Got unexpected exception: " + ex);
- return;
- }
- ok(xhr instanceof XMLHttpRequest, "passed " + JSON.stringify(value));
- // If the page doesnt have privileges to create a system XHR,
- // this flag will always be false no matter what is passed.
- let expectedAnon = Boolean(value && value.mozAnon);
- let expectedSystem = false;
- if (havePrivileges) {
- expectedSystem = Boolean(value && value.mozSystem);
- }
- is(xhr.mozAnon, expectedAnon, "testing mozAnon");
- is(xhr.mozSystem, expectedSystem, "testing mozSystem");
- }
- function testInvalidParameter(value) {
- let expectedError;
- try {
- new XMLHttpRequest(value);
- ok(false, "invalid parameter did not cause exception: " +
- JSON.stringify(value));
- } catch (ex) {
- expectedError = ex;
- }
- ok(expectedError, "invalid parameter raised exception as expected: " +
- JSON.stringify(expectedError))
- }
- // Run the tests once without API privileges...
- validParameters.forEach(testValidParameter);
- invalidParameters.forEach(testInvalidParameter);
- // ...and once with privileges.
- havePrivileges = true;
- SpecialPowers.pushPermissions([{'type': 'systemXHR', 'allow': true, 'context': document}], function() {
- validParameters.forEach(testValidParameter);
- invalidParameters.forEach(testInvalidParameter);
- SimpleTest.finish();
- });
- }
- </script>
- </pre>
- </body>
- </html>
|