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

Side by Side Diff: remoting/webapp/me2mom/xhr.js

Issue 9148043: Rename webapp_it2me to remoting_webapp and move it from webapp/me2mom to webapp/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: add webapp_it2me back Created 8 years, 11 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « remoting/webapp/me2mom/wcs_loader.js ('k') | remoting/webapp/oauth2.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 /**
6 * @fileoverview
7 * Simple utilities for making XHRs more pleasant.
8 */
9
10 'use strict';
11
12 /** @suppress {duplicate} */
13 var remoting = remoting || {};
14
15 /** Namespace for XHR functions */
16 /** @type {Object} */
17 remoting.xhr = remoting.xhr || {};
18
19 /**
20 * Takes an associative array of parameters and urlencodes it.
21 *
22 * @param {Object.<string>} paramHash The parameter key/value pairs.
23 * @return {string} URLEncoded version of paramHash.
24 */
25 remoting.xhr.urlencodeParamHash = function(paramHash) {
26 var paramArray = [];
27 for (var key in paramHash) {
28 paramArray.push(encodeURIComponent(key) +
29 '=' + encodeURIComponent(paramHash[key]));
30 }
31 if (paramArray.length > 0) {
32 return paramArray.join('&');
33 }
34 return '';
35 };
36
37 /**
38 * Execute an XHR GET asynchronously.
39 *
40 * @param {string} url The base URL to GET, excluding parameters.
41 * @param {function(XMLHttpRequest):void} onDone The function to call on
42 * completion.
43 * @param {(string|Object.<string>)=} opt_parameters The request parameters,
44 * either as an associative array, or a string. If it is a string, do
45 * not include the ? and be sure it is correctly URLEncoded.
46 * @param {Object.<string>=} opt_headers Additional headers to include on the
47 * request.
48 * @param {boolean=} opt_withCredentials Set the withCredentials flags in the
49 * XHR.
50 * @return {XMLHttpRequest} The request object.
51 */
52 remoting.xhr.get = function(url, onDone, opt_parameters, opt_headers,
53 opt_withCredentials) {
54 return remoting.xhr.doMethod('GET', url, onDone, opt_parameters,
55 opt_headers, opt_withCredentials);
56 };
57
58 /**
59 * Execute an XHR POST asynchronously.
60 *
61 * @param {string} url The base URL to POST, excluding parameters.
62 * @param {function(XMLHttpRequest):void} onDone The function to call on
63 * completion.
64 * @param {(string|Object.<string>)=} opt_parameters The request parameters,
65 * either as an associative array, or a string. If it is a string, be
66 * sure it is correctly URLEncoded.
67 * @param {Object.<string>=} opt_headers Additional headers to include on the
68 * request.
69 * @param {boolean=} opt_withCredentials Set the withCredentials flags in the
70 * XHR.
71 * @return {XMLHttpRequest} The request object.
72 */
73 remoting.xhr.post = function(url, onDone, opt_parameters, opt_headers,
74 opt_withCredentials) {
75 return remoting.xhr.doMethod('POST', url, onDone, opt_parameters,
76 opt_headers, opt_withCredentials);
77 };
78
79 /**
80 * Execute an XHR DELETE asynchronously.
81 *
82 * @param {string} url The base URL to DELETE, excluding parameters.
83 * @param {function(XMLHttpRequest):void} onDone The function to call on
84 * completion.
85 * @param {(string|Object.<string>)=} opt_parameters The request parameters,
86 * either as an associative array, or a string. If it is a string, be
87 * sure it is correctly URLEncoded.
88 * @param {Object.<string>=} opt_headers Additional headers to include on the
89 * request.
90 * @param {boolean=} opt_withCredentials Set the withCredentials flags in the
91 * XHR.
92 * @return {XMLHttpRequest} The request object.
93 */
94 remoting.xhr.remove = function(url, onDone, opt_parameters, opt_headers,
95 opt_withCredentials) {
96 return remoting.xhr.doMethod('DELETE', url, onDone, opt_parameters,
97 opt_headers, opt_withCredentials);
98 };
99
100 /**
101 * Execute an XHR PUT asynchronously.
102 *
103 * @param {string} url The base URL to PUT, excluding parameters.
104 * @param {function(XMLHttpRequest):void} onDone The function to call on
105 * completion.
106 * @param {(string|Object.<string>)=} opt_parameters The request parameters,
107 * either as an associative array, or a string. If it is a string, be
108 * sure it is correctly URLEncoded.
109 * @param {Object.<string>=} opt_headers Additional headers to include on the
110 * request.
111 * @param {boolean=} opt_withCredentials Set the withCredentials flags in the
112 * XHR.
113 * @return {XMLHttpRequest} The request object.
114 */
115 remoting.xhr.put = function(url, onDone, opt_parameters, opt_headers,
116 opt_withCredentials) {
117 return remoting.xhr.doMethod('PUT', url, onDone, opt_parameters,
118 opt_headers, opt_withCredentials);
119 };
120
121 /**
122 * Execute an arbitrary HTTP method asynchronously.
123 *
124 * @param {string} methodName The HTTP method name, e.g. "GET", "POST" etc.
125 * @param {string} url The base URL, excluding parameters.
126 * @param {function(XMLHttpRequest):void} onDone The function to call on
127 * completion.
128 * @param {(string|Object.<string>)=} opt_parameters The request parameters,
129 * either as an associative array, or a string. If it is a string, be
130 * sure it is correctly URLEncoded.
131 * @param {Object.<string>=} opt_headers Additional headers to include on the
132 * request.
133 * @param {boolean=} opt_withCredentials Set the withCredentials flags in the
134 * XHR.
135 * @return {XMLHttpRequest} The XMLHttpRequest object.
136 */
137 remoting.xhr.doMethod = function(methodName, url, onDone,
138 opt_parameters, opt_headers,
139 opt_withCredentials) {
140 /** @type {XMLHttpRequest} */
141 var xhr = new XMLHttpRequest();
142 xhr.onreadystatechange = function() {
143 if (xhr.readyState != 4) {
144 return;
145 }
146 onDone(xhr);
147 };
148
149 var parameterString = '';
150 if (typeof(opt_parameters) === 'string') {
151 parameterString = opt_parameters;
152 } else if (typeof(opt_parameters) === 'object') {
153 parameterString = remoting.xhr.urlencodeParamHash(opt_parameters);
154 } else if (opt_parameters === undefined) {
155 // No problem here. Do nothing.
156 } else {
157 throw 'opt_parameters must be string or associated array.';
158 }
159
160 var useBody = (methodName == 'POST') || (methodName == 'PUT');
161
162 if (!useBody && parameterString != '') {
163 url = url + '?' + parameterString;
164 }
165
166 xhr.open(methodName, url, true);
167 if (methodName == 'POST') {
168 xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
169 }
170 // Add in request headers.
171 if (typeof(opt_headers) === 'object') {
172 for (var key in opt_headers) {
173 xhr.setRequestHeader(key, opt_headers[key]);
174 }
175 } else if (opt_headers === undefined) {
176 // No problem here. Do nothing.
177 } else {
178 throw 'opt_headers must be associative array.';
179 }
180
181 if (opt_withCredentials) {
182 xhr.withCredentials = true;
183 }
184
185 xhr.send(useBody ? parameterString : null);
186 return xhr;
187 };
OLDNEW
« no previous file with comments | « remoting/webapp/me2mom/wcs_loader.js ('k') | remoting/webapp/oauth2.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698