Index: tools/telemetry/third_party/gsutilz/third_party/protorpc/experimental/javascript/closure/xmlhttp.js |
diff --git a/tools/telemetry/third_party/gsutilz/third_party/protorpc/experimental/javascript/closure/xmlhttp.js b/tools/telemetry/third_party/gsutilz/third_party/protorpc/experimental/javascript/closure/xmlhttp.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d9d7e5b816cec44c13f371bf13b84ccbc99358b3 |
--- /dev/null |
+++ b/tools/telemetry/third_party/gsutilz/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()); |