Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Unified Diff: third_party/polymer/v0_8/components-chromium/iron-ajax/iron-request-extracted.js

Issue 1162563004: Upgrade to 1.0 and switch clients to dom-repeat where needed. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix a layout import and remove the gzipped webanimation in reproduce.sh Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/polymer/v0_8/components-chromium/iron-ajax/iron-request-extracted.js
diff --git a/third_party/polymer/v0_8/components-chromium/iron-ajax/iron-request-extracted.js b/third_party/polymer/v0_8/components-chromium/iron-ajax/iron-request-extracted.js
new file mode 100644
index 0000000000000000000000000000000000000000..93800bd7ddd6ef8f60ad1f134b1a75547544420e
--- /dev/null
+++ b/third_party/polymer/v0_8/components-chromium/iron-ajax/iron-request-extracted.js
@@ -0,0 +1,241 @@
+
+ Polymer({
+ is: 'iron-request',
+
+ properties: {
+
+ /**
+ * A reference to the XMLHttpRequest instance used to generate the
+ * network request.
+ *
+ * @attribute xhr
+ * @type XMLHttpRequest
+ * @default `new XMLHttpRequest`
+ */
+ xhr: {
+ type: Object,
+ notify: true,
+ readOnly: true,
+ value: function() {
+ return new XMLHttpRequest();
+ }
+ },
+
+ /**
+ * A reference to the parsed response body, if the `xhr` has completely
+ * resolved.
+ *
+ * @attribute response
+ * @type Object
+ * @default null
+ */
+ response: {
+ type: Object,
+ notify: true,
+ readOnly: true,
+ value: function() {
+ return null;
+ }
+ },
+
+ /**
+ * A promise that resolves when the `xhr` response comes back, or rejects
+ * if there is an error before the `xhr` completes.
+ *
+ * @attribute completes
+ * @type Promise
+ * @default `new Promise`
+ */
+ completes: {
+ type: Object,
+ readOnly: true,
+ notify: true,
+ value: function() {
+ return new Promise(function (resolve, reject) {
+ this.resolveCompletes = resolve;
+ this.rejectCompletes = reject;
+ }.bind(this));
+ }
+ },
+
+ /**
+ * An object that contains progress information emitted by the XHR if
+ * available.
+ *
+ * @attribute progress
+ * @type Object
+ * @default {}
+ */
+ progress: {
+ type: Object,
+ notify: true,
+ readOnly: true,
+ value: function() {
+ return {};
+ }
+ },
+
+ /**
+ * Aborted will be true if an abort of the request is attempted.
+ *
+ * @attribute aborted
+ * @type boolean
+ * @default false
+ */
+ aborted: {
+ type: Boolean,
+ notify: true,
+ readOnly: true,
+ value: false,
+ }
+ },
+
+ /**
+ * Succeeded is true if the request succeeded. The request succeeded if the
+ * status code is greater-than-or-equal-to 200, and less-than 300. Also,
+ * the status code 0 is accepted as a success even though the outcome may
+ * be ambiguous.
+ *
+ * @return boolean
+ */
+ get succeeded() {
+ var status = this.xhr.status || 0;
+
+ // Note: if we are using the file:// protocol, the status code will be 0
+ // for all outcomes (successful or otherwise).
+ return status === 0 ||
+ (status >= 200 && status < 300);
+ },
+
+ /**
+ * Sends an HTTP request to the server and returns the XHR object.
+ *
+ * @method request
+ * @param {{
+ * url: string,
+ * method: (string|undefined),
+ * async: (boolean|undefined),
+ * body: (ArrayBuffer|ArrayBufferView|Blob|Document|FormData|null|string|undefined),
+ * headers: (Object|undefined),
+ * handleAs: (string|undefined),
+ * withCredentials: (boolean|undefined)}} options -
+ * url The url to which the request is sent.
+ * method The HTTP method to use, default is GET.
+ * async By default, all requests are sent asynchronously. To send synchronous requests,
+ * set to true.
+ * body The content for the request body for POST method.
+ * headers HTTP request headers.
+ * handleAs The response type. Default is 'text'.
+ * withCredentials Whether or not to send credentials on the request. Default is false.
+ * @return Promise
+ */
+ send: function (options) {
+ var xhr = this.xhr;
+
+ if (xhr.readyState > 0) {
+ return;
+ }
+
+ xhr.addEventListener('readystatechange', function () {
+ if (xhr.readyState === 4 && !this.aborted) {
+
+ if (!this.succeeded) {
+ this.rejectCompletes(new Error('The request failed with status code: ' + this.xhr.status));
+ return;
+ }
+
+ this._setResponse(this.parseResponse());
+ this.resolveCompletes(this);
+ }
+ }.bind(this));
+
+ xhr.addEventListener('progress', function (progress) {
+ this._setProgress({
+ lengthComputable: progress.lengthComputable,
+ loaded: progress.loaded,
+ total: progress.total
+ });
+ }.bind(this))
+
+ xhr.addEventListener('error', function (error) {
+ this.rejectCompletes(error);
+ }.bind(this));
+
+ xhr.addEventListener('abort', function () {
+ this.rejectCompletes(new Error('Request aborted.'));
+ }.bind(this));
+
+ xhr.open(
+ options.method || 'GET',
+ options.url,
+ options.async !== false
+ );
+
+ if (options.headers) {
+ Object.keys(options.headers).forEach(function (requestHeader) {
+ xhr.setRequestHeader(
+ requestHeader,
+ options.headers[requestHeader]
+ );
+ }, this);
+ }
+
+ // In IE, `xhr.responseType` is an empty string when the response
+ // returns. Hence, caching it as `xhr._responseType`.
+ xhr.responseType = xhr._responseType = (options.handleAs || 'text');
+ xhr.withCredentials = !!options.withCredentials;
+
+ xhr.send(options.body);
+
+ return this.completes;
+ },
+
+ parseResponse: function () {
+ var xhr = this.xhr;
+ var responseType = this.xhr.responseType ||
+ this.xhr._responseType;
+ // If we don't have a natural `xhr.responseType`, we prefer parsing
+ // `xhr.responseText` over returning `xhr.response`..
+ var preferResponseText = !this.xhr.responseType;
+
+ try {
+ switch (responseType) {
+ case 'json':
+ // If xhr.response is undefined, responseType `json` may
+ // not be supported.
+ if (preferResponseText || xhr.response === undefined) {
+ // If accessing `xhr.responseText` throws, responseType `json`
+ // is supported and the result is rightly `undefined`.
+ try {
+ xhr.responseText;
+ } catch (e) {
+ return xhr.response;
+ }
+
+ // Otherwise, attempt to parse `xhr.responseText` as JSON.
+ if (xhr.responseText) {
+ return JSON.parse(xhr.responseText);
+ }
+ }
+
+ return xhr.response;
+ case 'xml':
+ return xhr.responseXML;
+ case 'blob':
+ case 'document':
+ case 'arraybuffer':
+ return xhr.response;
+ case 'text':
+ default:
+ return xhr.responseText;
+ }
+ } catch (e) {
+ this.rejectCompletes(new Error('Could not parse response. ' + e.message));
+ }
+ },
+
+ abort: function () {
+ this._setAborted(true);
+ this.xhr.abort();
+ }
+ });

Powered by Google App Engine
This is Rietveld 408576698