/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is Mozilla Skywriter. * * The Initial Developer of the Original Code is * Mozilla. * Portions created by the Initial Developer are Copyright (C) 2009 * the Initial Developer. All Rights Reserved. * * Contributor(s): * Julian Viereck (jviereck@mozilla.com) * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ define(function(require, exports, module) { var Promise = require('pilot/promise').Promise; exports.xhr = function(method, url, async, beforeSendCallback) { var pr = new Promise(); if (!skywriter.proxy || !skywriter.proxy.xhr) { var req = new XMLHttpRequest(); req.onreadystatechange = function() { if (req.readyState !== 4) { return; } var status = req.status; if (status !== 0 && status !== 200) { var error = new Error(req.responseText + ' (Status ' + req.status + ")"); error.xhr = req; pr.reject(error); return; } pr.resolve(req.responseText); }.bind(this); req.open("GET", url, async); if (beforeSendCallback) { beforeSendCallback(req); } req.send(); } else { skywriter.proxy.xhr.call(this, method, url, async, beforeSendCallback, pr); } return pr; }; exports.Worker = function(url) { if (!skywriter.proxy || !skywriter.proxy.worker) { return new Worker(url); } else { return new skywriter.proxy.worker(url); } }; });