| Index: third_party/gsutil/third_party/protorpc/experimental/javascript/closure/xmlhttp.js
|
| diff --git a/third_party/gsutil/third_party/protorpc/experimental/javascript/closure/xmlhttp.js b/third_party/gsutil/third_party/protorpc/experimental/javascript/closure/xmlhttp.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d9d7e5b816cec44c13f371bf13b84ccbc99358b3
|
| --- /dev/null
|
| +++ b/third_party/gsutil/third_party/protorpc/experimental/javascript/closure/xmlhttp.js
|
| @@ -0,0 +1,215 @@
|
| +// Copyright 2006 The Closure Library Authors. All Rights Reserved.
|
| +//
|
| +// Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
|
| +//
|
| +// Unless required by applicable law or agreed to in writing, software
|
| +// distributed under the License is distributed on an "AS-IS" BASIS,
|
| +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| +// See the License for the specific language governing permissions and
|
| +// limitations under the License.
|
| +
|
| +/**
|
| + * @fileoverview Low level handling of XMLHttpRequest.
|
| + */
|
| +
|
| +goog.provide('goog.net.DefaultXmlHttpFactory');
|
| +goog.provide('goog.net.XmlHttp');
|
| +goog.provide('goog.net.XmlHttp.OptionType');
|
| +goog.provide('goog.net.XmlHttp.ReadyState');
|
| +
|
| +goog.require('goog.net.WrapperXmlHttpFactory');
|
| +goog.require('goog.net.XmlHttpFactory');
|
| +
|
| +
|
| +/**
|
| + * Static class for creating XMLHttpRequest objects.
|
| + * @return {!(XMLHttpRequest|GearsHttpRequest)} A new XMLHttpRequest object.
|
| + */
|
| +goog.net.XmlHttp = function() {
|
| + return goog.net.XmlHttp.factory_.createInstance();
|
| +};
|
| +
|
| +
|
| +/**
|
| + * Gets the options to use with the XMLHttpRequest objects obtained using
|
| + * the static methods.
|
| + * @return {Object} The options.
|
| + */
|
| +goog.net.XmlHttp.getOptions = function() {
|
| + return goog.net.XmlHttp.factory_.getOptions();
|
| +};
|
| +
|
| +
|
| +/**
|
| + * Type of options that an XmlHttp object can have.
|
| + * @enum {number}
|
| + */
|
| +goog.net.XmlHttp.OptionType = {
|
| + /**
|
| + * Whether a goog.nullFunction should be used to clear the onreadystatechange
|
| + * handler instead of null.
|
| + */
|
| + USE_NULL_FUNCTION: 0,
|
| +
|
| + /**
|
| + * NOTE(user): In IE if send() errors on a *local* request the readystate
|
| + * is still changed to COMPLETE. We need to ignore it and allow the
|
| + * try/catch around send() to pick up the error.
|
| + */
|
| + LOCAL_REQUEST_ERROR: 1
|
| +};
|
| +
|
| +
|
| +/**
|
| + * Status constants for XMLHTTP, matches:
|
| + * http://msdn.microsoft.com/library/default.asp?url=/library/
|
| + * en-us/xmlsdk/html/0e6a34e4-f90c-489d-acff-cb44242fafc6.asp
|
| + * @enum {number}
|
| + */
|
| +goog.net.XmlHttp.ReadyState = {
|
| + /**
|
| + * Constant for when xmlhttprequest.readyState is uninitialized
|
| + */
|
| + UNINITIALIZED: 0,
|
| +
|
| + /**
|
| + * Constant for when xmlhttprequest.readyState is loading.
|
| + */
|
| + LOADING: 1,
|
| +
|
| + /**
|
| + * Constant for when xmlhttprequest.readyState is loaded.
|
| + */
|
| + LOADED: 2,
|
| +
|
| + /**
|
| + * Constant for when xmlhttprequest.readyState is in an interactive state.
|
| + */
|
| + INTERACTIVE: 3,
|
| +
|
| + /**
|
| + * Constant for when xmlhttprequest.readyState is completed
|
| + */
|
| + COMPLETE: 4
|
| +};
|
| +
|
| +
|
| +/**
|
| + * The global factory instance for creating XMLHttpRequest objects.
|
| + * @type {goog.net.XmlHttpFactory}
|
| + * @private
|
| + */
|
| +goog.net.XmlHttp.factory_;
|
| +
|
| +
|
| +/**
|
| + * Sets the factories for creating XMLHttpRequest objects and their options.
|
| + * @param {Function} factory The factory for XMLHttpRequest objects.
|
| + * @param {Function} optionsFactory The factory for options.
|
| + * @deprecated Use setGlobalFactory instead.
|
| + */
|
| +goog.net.XmlHttp.setFactory = function(factory, optionsFactory) {
|
| + goog.net.XmlHttp.setGlobalFactory(new goog.net.WrapperXmlHttpFactory(
|
| + (/** @type {function() : !(XMLHttpRequest|GearsHttpRequest)} */ factory),
|
| + (/** @type {function() : !Object}*/ optionsFactory)));
|
| +};
|
| +
|
| +
|
| +/**
|
| + * Sets the global factory object.
|
| + * @param {!goog.net.XmlHttpFactory} factory New global factory object.
|
| + */
|
| +goog.net.XmlHttp.setGlobalFactory = function(factory) {
|
| + goog.net.XmlHttp.factory_ = factory;
|
| +};
|
| +
|
| +
|
| +
|
| +/**
|
| + * Default factory to use when creating xhr objects. You probably shouldn't be
|
| + * instantiating this directly, but rather using it via goog.net.XmlHttp.
|
| + * @extends {goog.net.XmlHttpFactory}
|
| + * @constructor
|
| + */
|
| +goog.net.DefaultXmlHttpFactory = function() {
|
| + goog.net.XmlHttpFactory.call(this);
|
| +};
|
| +goog.inherits(goog.net.DefaultXmlHttpFactory, goog.net.XmlHttpFactory);
|
| +
|
| +
|
| +/** @inheritDoc */
|
| +goog.net.DefaultXmlHttpFactory.prototype.createInstance = function() {
|
| + var progId = this.getProgId_();
|
| + if (progId) {
|
| + return new ActiveXObject(progId);
|
| + } else {
|
| + return new XMLHttpRequest();
|
| + }
|
| +};
|
| +
|
| +
|
| +/** @inheritDoc */
|
| +goog.net.DefaultXmlHttpFactory.prototype.internalGetOptions = function() {
|
| + var progId = this.getProgId_();
|
| + var options = {};
|
| + if (progId) {
|
| + options[goog.net.XmlHttp.OptionType.USE_NULL_FUNCTION] = true;
|
| + options[goog.net.XmlHttp.OptionType.LOCAL_REQUEST_ERROR] = true;
|
| + }
|
| + return options;
|
| +};
|
| +
|
| +
|
| +/**
|
| + * The ActiveX PROG ID string to use to create xhr's in IE. Lazily initialized.
|
| + * @type {?string}
|
| + * @private
|
| + */
|
| +goog.net.DefaultXmlHttpFactory.prototype.ieProgId_ = null;
|
| +
|
| +
|
| +/**
|
| + * Initialize the private state used by other functions.
|
| + * @return {string} The ActiveX PROG ID string to use to create xhr's in IE.
|
| + * @private
|
| + */
|
| +goog.net.DefaultXmlHttpFactory.prototype.getProgId_ = function() {
|
| + // 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.
|
| + if (!this.ieProgId_ && typeof XMLHttpRequest == 'undefined' &&
|
| + typeof ActiveXObject != 'undefined') {
|
| + // Candidate Active X types.
|
| + var ACTIVE_X_IDENTS = ['MSXML2.XMLHTTP.6.0', 'MSXML2.XMLHTTP.3.0',
|
| + 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];
|
| + for (var i = 0; i < ACTIVE_X_IDENTS.length; i++) {
|
| + var candidate = ACTIVE_X_IDENTS[i];
|
| + /** @preserveTry */
|
| + try {
|
| + new ActiveXObject(candidate);
|
| + // NOTE(user): cannot assign progid and return candidate in one line
|
| + // because JSCompiler complaings: BUG 658126
|
| + this.ieProgId_ = candidate;
|
| + return candidate;
|
| + } catch (e) {
|
| + // do nothing; try next choice
|
| + }
|
| + }
|
| +
|
| + // couldn't find any matches
|
| + throw Error('Could not create ActiveXObject. ActiveX might be disabled,' +
|
| + ' or MSXML might not be installed');
|
| + }
|
| +
|
| + return /** @type {string} */ (this.ieProgId_);
|
| +};
|
| +
|
| +
|
| +//Set the global factory to an instance of the default factory.
|
| +goog.net.XmlHttp.setGlobalFactory(new goog.net.DefaultXmlHttpFactory());
|
|
|