gecko-dev/addon-sdk/source/test/test-xhr.js
Dave Townsend b04aa5bc06 Bug 935220: Uplift Add-on SDK to Firefox. r=me
https://github.com/mozilla/addon-sdk/compare/firefox27...50697e6182cb4f79f9605b7cd1d1f5084cfaf03f

--HG--
rename : addon-sdk/source/data/index.html => addon-sdk/source/test/addons/addon-page/data/index.html
rename : addon-sdk/source/test/favicon-helpers.js => addon-sdk/source/test/addons/places/favicon-helpers.js
rename : addon-sdk/source/test/places-helper.js => addon-sdk/source/test/addons/places/places-helper.js
rename : addon-sdk/source/data/test-trusted-document.html => addon-sdk/source/test/addons/symbiont/data/test-trusted-document.html
rename : addon-sdk/source/data/index.html => addon-sdk/source/test/fixtures/index.html
rename : addon-sdk/source/data/mofo_logo.SVG => addon-sdk/source/test/fixtures/mofo_logo.SVG
rename : addon-sdk/source/data/moz_favicon.ico => addon-sdk/source/test/fixtures/moz_favicon.ico
rename : addon-sdk/source/data/pagemod-css-include-file.css => addon-sdk/source/test/fixtures/pagemod-css-include-file.css
rename : addon-sdk/source/data/test-content-symbiont.js => addon-sdk/source/test/fixtures/test-content-symbiont.js
rename : addon-sdk/source/data/test-context-menu.js => addon-sdk/source/test/fixtures/test-context-menu.js
rename : addon-sdk/source/data/test-iframe-postmessage.html => addon-sdk/source/test/fixtures/test-iframe-postmessage.html
rename : addon-sdk/source/data/test-iframe.html => addon-sdk/source/test/fixtures/test-iframe.html
rename : addon-sdk/source/data/test-iframe.js => addon-sdk/source/test/fixtures/test-iframe.js
rename : addon-sdk/source/data/test-message-manager.js => addon-sdk/source/test/fixtures/test-message-manager.js
rename : addon-sdk/source/data/test-net-url.txt => addon-sdk/source/test/fixtures/test-net-url.txt
rename : addon-sdk/source/data/test-page-mod.html => addon-sdk/source/test/fixtures/test-page-mod.html
rename : addon-sdk/source/data/test-page-worker.html => addon-sdk/source/test/fixtures/test-page-worker.html
rename : addon-sdk/source/data/test-page-worker.js => addon-sdk/source/test/fixtures/test-page-worker.js
rename : addon-sdk/source/data/test-sidebar-addon-global.html => addon-sdk/source/test/fixtures/test-sidebar-addon-global.html
rename : addon-sdk/source/data/test-trusted-document.html => addon-sdk/source/test/fixtures/test-trusted-document.html
rename : addon-sdk/source/data/test.html => addon-sdk/source/test/fixtures/test.html
rename : addon-sdk/source/data/testLocalXhr.json => addon-sdk/source/test/fixtures/testLocalXhr.json
2013-11-05 13:51:58 -08:00

90 lines
2.8 KiB
JavaScript

/* 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/. */
'use strict'
const { XMLHttpRequest } = require('sdk/net/xhr');
const { LoaderWithHookedConsole } = require('sdk/test/loader');
const { set: setPref } = require("sdk/preferences/service");
const data = require("./fixtures");
const DEPRECATE_PREF = "devtools.errorconsole.deprecation_warnings";
exports.testAPIExtension = function(assert) {
let { loader, messages } = LoaderWithHookedConsole(module);
let { XMLHttpRequest } = loader.require("sdk/net/xhr");
setPref(DEPRECATE_PREF, true);
let xhr = new XMLHttpRequest();
assert.equal(typeof(xhr.forceAllowThirdPartyCookie), "function",
"forceAllowThirdPartyCookie is defined");
assert.equal(xhr.forceAllowThirdPartyCookie(), undefined,
"function can be called");
assert.ok(messages[0].msg.indexOf("`xhr.forceAllowThirdPartyCookie()` is deprecated") >= 0,
"deprecation warning was dumped");
assert.ok(xhr.mozBackgroundRequest, "is background request");
loader.unload();
};
exports.testAbortedXhr = function(assert, done) {
let req = new XMLHttpRequest();
req.open('GET', data.url('testLocalXhr.json'));
req.addEventListener("abort", function() {
assert.pass("request was aborted");
done();
});
req.send(null);
req.abort();
};
exports.testLocalXhr = function(assert, done) {
let req = new XMLHttpRequest();
let ready = false;
req.overrideMimeType('text/plain');
req.open('GET', data.url('testLocalXhr.json'));
req.onreadystatechange = function() {
if (req.readyState == 4 && (req.status == 0 || req.status == 200)) {
ready = true;
assert.equal(req.responseText, '{}\n', 'XMLHttpRequest should get local files');
}
};
req.addEventListener('load', function onload() {
req.removeEventListener('load', onload);
assert.pass('addEventListener for load event worked');
assert.ok(ready, 'onreadystatechange listener worked');
done();
});
req.send(null);
};
exports.testResponseHeaders = function(assert, done) {
let req = new XMLHttpRequest();
req.overrideMimeType('text/plain');
req.open('GET', module.uri);
req.onreadystatechange = function() {
if (req.readyState == 4 && (req.status == 0 || req.status == 200)) {
var headers = req.getAllResponseHeaders();
headers = headers.split("\r\n");
if (headers.length == 1) {
headers = headers[0].split("\n");
}
for (let i in headers) {
if (headers[i] && headers[i].search('Content-Type') >= 0) {
assert.equal(headers[i], 'Content-Type: text/plain',
'XHR\'s headers are valid');
}
}
done();
}
};
req.send(null);
}
require('test').run(exports);