| Index: appengine/monorail/static/js/graveyard/xmlhttp.js
|
| diff --git a/appengine/monorail/static/js/graveyard/xmlhttp.js b/appengine/monorail/static/js/graveyard/xmlhttp.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..b19fb845b58bea2cae5ee24a7c35a642101c72c6
|
| --- /dev/null
|
| +++ b/appengine/monorail/static/js/graveyard/xmlhttp.js
|
| @@ -0,0 +1,141 @@
|
| +/* Copyright 2016 The Chromium Authors. All Rights Reserved.
|
| + *
|
| + * Use of this source code is governed by a BSD-style
|
| + * license that can be found in the LICENSE file or at
|
| + * https://developers.google.com/open-source/licenses/bsd
|
| + */
|
| +
|
| +/**
|
| + * @fileoverview A bunch of XML HTTP recipes used to do RPC from JavaScript
|
| + */
|
| +
|
| +
|
| +/**
|
| + * The active x identifier used for ie.
|
| + * @type String
|
| + * @private
|
| + */
|
| +var XH_ieProgId_;
|
| +
|
| +
|
| +// Domain for XMLHttpRequest readyState
|
| +var XML_READY_STATE_UNINITIALIZED = 0;
|
| +var XML_READY_STATE_LOADING = 1;
|
| +var XML_READY_STATE_LOADED = 2;
|
| +var XML_READY_STATE_INTERACTIVE = 3;
|
| +var XML_READY_STATE_COMPLETED = 4;
|
| +
|
| +
|
| +/**
|
| + * Initialize the private state used by other functions.
|
| + * @private
|
| + */
|
| +function XH_XmlHttpInit_() {
|
| + // The following blog post describes what PROG IDs to use to create the
|
| + // XMLHTTP object in Internet Explorer:
|
| + // http://blogs.msdn.com/xmlteam/archive/2006/10/23/using-the-right-version-of-msxml-in-internet-explorer.aspx
|
| + // However we do not (yet) fully trust that this will be OK for old versions
|
| + // of IE on Win9x so we therefore keep the last 2.
|
| + // Versions 4 and 5 have been removed because 3.0 is the preferred "fallback"
|
| + // per the article above.
|
| + // - Version 5 was built for Office applications and is not recommended for
|
| + // web applications.
|
| + // - Version 4 has been superseded by 6 and is only intended for legacy apps.
|
| + // - Version 3 has a wide install base and is serviced regularly with the OS.
|
| +
|
| + /**
|
| + * Candidate Active X types.
|
| + * @type Array.<String>
|
| + * @private
|
| + */
|
| + var XH_ACTIVE_X_IDENTS = ["MSXML2.XMLHTTP.6.0", "MSXML2.XMLHTTP.3.0",
|
| + "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];
|
| +
|
| + if (typeof XMLHttpRequest == "undefined" &&
|
| + typeof ActiveXObject != "undefined") {
|
| + for (var i = 0; i < XH_ACTIVE_X_IDENTS.length; i++) {
|
| + var candidate = XH_ACTIVE_X_IDENTS[i];
|
| +
|
| + try {
|
| + new ActiveXObject(candidate);
|
| + XH_ieProgId_ = candidate;
|
| + break;
|
| + } catch (e) {
|
| + // do nothing; try next choice
|
| + }
|
| + }
|
| +
|
| + // couldn't find any matches
|
| + if (!XH_ieProgId_) {
|
| + throw Error("Could not create ActiveXObject. ActiveX might be disabled," +
|
| + " or MSXML might not be installed.");
|
| + }
|
| + }
|
| +}
|
| +
|
| +
|
| +XH_XmlHttpInit_();
|
| +
|
| +
|
| +/**
|
| + * Create and return an xml http request object that can be passed to
|
| + * {@link #XH_XmlHttpGET} or {@link #XH_XmlHttpPOST}.
|
| + */
|
| +function XH_XmlHttpCreate() {
|
| + if (XH_ieProgId_) {
|
| + return new ActiveXObject(XH_ieProgId_);
|
| + } else {
|
| + return new XMLHttpRequest();
|
| + }
|
| +}
|
| +
|
| +
|
| +/**
|
| + * Send a get request.
|
| + * @param {XMLHttpRequest} xmlHttp as from {@link XH_XmlHttpCreate}.
|
| + * @param {string} url the service to contact
|
| + * @param {Function} handler function called when the response is received.
|
| + */
|
| +function XH_XmlHttpGET(xmlHttp, url, handler) {
|
| + xmlHttp.open("GET", url, true);
|
| + xmlHttp.onreadystatechange = handler;
|
| + XH_XmlHttpSend(xmlHttp, null);
|
| +}
|
| +
|
| +/**
|
| + * Send a post request.
|
| + * @param {XMLHttpRequest} xmlHttp as from {@link XH_XmlHttpCreate}.
|
| + * @param {string} url the service to contact
|
| + * @param {string} data the request content.
|
| + * @param {Function} handler function called when the response is received.
|
| + */
|
| +function XH_XmlHttpPOST(xmlHttp, url, data, handler) {
|
| + xmlHttp.open("POST", url, true);
|
| + xmlHttp.onreadystatechange = handler;
|
| + xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
|
| + XH_XmlHttpSend(xmlHttp, data);
|
| +}
|
| +
|
| +/**
|
| + * Calls 'send' on the XMLHttpRequest object and calls a function called 'log'
|
| + * if any error occured.
|
| + *
|
| + * @deprecated This dependes on a function called 'log'. You are better off
|
| + * handling your errors on application level.
|
| + *
|
| + * @param {XMLHttpRequest} xmlHttp as from {@link XH_XmlHttpCreate}.
|
| + * @param {string|null} data the request content.
|
| + */
|
| +function XH_XmlHttpSend(xmlHttp, data) {
|
| + try {
|
| + xmlHttp.send(data);
|
| + } catch (e) {
|
| + // You may want to log/debug this error one that you should be aware of is
|
| + // e.number == -2146697208, which occurs when the 'Languages...' setting in
|
| + // IE is empty.
|
| + // This is not entirely true. The same error code is used when the user is
|
| + // off line.
|
| + console.log('XMLHttpSend failed ' + e.toString() + '<br>' + e.stack);
|
| + throw e;
|
| + }
|
| +}
|
|
|