| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 /** | 5 /** |
| 6 * @fileoverview | 6 * @fileoverview |
| 7 * Simple utilities for making XHRs more pleasant. | 7 * Simple utilities for making XHRs more pleasant. |
| 8 */ | 8 */ |
| 9 | 9 |
| 10 'use strict'; | 10 'use strict'; |
| 11 | 11 |
| 12 /** @suppress {duplicate} */ | 12 /** @suppress {duplicate} */ |
| 13 var remoting = remoting || {}; | 13 var remoting = remoting || {}; |
| 14 | 14 |
| 15 /** Namespace for XHR functions */ | 15 /** Namespace for XHR functions */ |
| 16 /** @type {Object} */ |
| 16 remoting.xhr = remoting.xhr || {}; | 17 remoting.xhr = remoting.xhr || {}; |
| 17 | 18 |
| 18 (function() { | |
| 19 | |
| 20 /** | 19 /** |
| 21 * Takes an associative array of parameters and urlencodes it. | 20 * Takes an associative array of parameters and urlencodes it. |
| 22 * | 21 * |
| 23 * @param {Object.<string>} paramHash The parameter key/value pairs. | 22 * @param {Object.<string>} paramHash The parameter key/value pairs. |
| 24 * @return {string} URLEncoded version of paramHash. | 23 * @return {string} URLEncoded version of paramHash. |
| 25 */ | 24 */ |
| 26 remoting.xhr.urlencodeParamHash = function(paramHash) { | 25 remoting.xhr.urlencodeParamHash = function(paramHash) { |
| 27 var paramArray = []; | 26 var paramArray = []; |
| 28 for (var key in paramHash) { | 27 for (var key in paramHash) { |
| 29 paramArray.push(encodeURIComponent(key) + | 28 paramArray.push(encodeURIComponent(key) + |
| 30 '=' + encodeURIComponent(paramHash[key])); | 29 '=' + encodeURIComponent(paramHash[key])); |
| 31 } | 30 } |
| 32 if (paramArray.length > 0) { | 31 if (paramArray.length > 0) { |
| 33 return paramArray.join('&'); | 32 return paramArray.join('&'); |
| 34 } | 33 } |
| 35 return ''; | 34 return ''; |
| 36 } | 35 }; |
| 37 | 36 |
| 38 /** | 37 /** |
| 39 * Execute an XHR GET asynchronously. | 38 * Execute an XHR GET asynchronously. |
| 40 * | 39 * |
| 41 * @param {string} url The base URL to GET, excluding parameters. | 40 * @param {string} url The base URL to GET, excluding parameters. |
| 42 * @param {function(XMLHttpRequest):void} onDone The function to call on | 41 * @param {function(XMLHttpRequest):void} onDone The function to call on |
| 43 * completion. | 42 * completion. |
| 44 * @param {(string|Object.<string>)} opt_parameters The request parameters, | 43 * @param {(string|Object.<string>)=} opt_parameters The request parameters, |
| 45 * either as an associative array, or a string. If it is a string, do | 44 * either as an associative array, or a string. If it is a string, do |
| 46 * not include the ? and be sure it is correctly URLEncoded. | 45 * not include the ? and be sure it is correctly URLEncoded. |
| 47 * @param {Object.<string>} opt_headers Additional headers to include on the | 46 * @param {Object.<string>=} opt_headers Additional headers to include on the |
| 48 * request. | 47 * request. |
| 49 * @param {boolean} opt_withCredentials Set the withCredentials flags in the | 48 * @param {boolean=} opt_withCredentials Set the withCredentials flags in the |
| 50 * XHR. | 49 * XHR. |
| 51 * @return {XMLHttpRequest} The request object. | 50 * @return {XMLHttpRequest} The request object. |
| 52 */ | 51 */ |
| 53 remoting.xhr.get = function(url, onDone, opt_parameters, opt_headers, | 52 remoting.xhr.get = function(url, onDone, opt_parameters, opt_headers, |
| 54 opt_withCredentials) { | 53 opt_withCredentials) { |
| 54 /** @type {XMLHttpRequest} */ |
| 55 var xhr = new XMLHttpRequest(); | 55 var xhr = new XMLHttpRequest(); |
| 56 xhr.onreadystatechange = function() { | 56 xhr.onreadystatechange = function() { |
| 57 if (xhr.readyState != 4) { | 57 if (xhr.readyState != 4) { |
| 58 return; | 58 return; |
| 59 } | 59 } |
| 60 onDone(xhr); | 60 onDone(xhr); |
| 61 }; | 61 }; |
| 62 | 62 |
| 63 // Add parameters into URL. | 63 // Add parameters into URL. |
| 64 if (typeof(opt_parameters) === 'string') { | 64 if (typeof(opt_parameters) === 'string') { |
| (...skipping 23 matching lines...) Expand all Loading... |
| 88 } else { | 88 } else { |
| 89 throw 'opt_headers must be associative array.'; | 89 throw 'opt_headers must be associative array.'; |
| 90 } | 90 } |
| 91 | 91 |
| 92 if (opt_withCredentials) { | 92 if (opt_withCredentials) { |
| 93 xhr.withCredentials = true; | 93 xhr.withCredentials = true; |
| 94 } | 94 } |
| 95 | 95 |
| 96 xhr.send(null); | 96 xhr.send(null); |
| 97 return xhr; | 97 return xhr; |
| 98 } | 98 }; |
| 99 | 99 |
| 100 /** | 100 /** |
| 101 * Execute an XHR POST asynchronously. | 101 * Execute an XHR POST asynchronously. |
| 102 * | 102 * |
| 103 * @param {string} url The base URL to POST, excluding parameters. | 103 * @param {string} url The base URL to POST, excluding parameters. |
| 104 * @param {function(XMLHttpRequest):void} onDone The function to call on | 104 * @param {function(XMLHttpRequest):void} onDone The function to call on |
| 105 * completion. | 105 * completion. |
| 106 * @param {(string|Object.<string>)} opt_parameters The request parameters, | 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 | 107 * either as an associative array, or a string. If it is a string, be |
| 108 * sure it is correctly URLEncoded. | 108 * sure it is correctly URLEncoded. |
| 109 * @param {Object.<string>} opt_headers Additional headers to include on the | 109 * @param {Object.<string>=} opt_headers Additional headers to include on the |
| 110 * request. | 110 * request. |
| 111 * @param {boolean} opt_withCredentials Set the withCredentials flags in the | 111 * @param {boolean=} opt_withCredentials Set the withCredentials flags in the |
| 112 * XHR. | 112 * XHR. |
| 113 * @return {void} Nothing. | 113 * @return {void} Nothing. |
| 114 */ | 114 */ |
| 115 remoting.xhr.post = function(url, onDone, opt_parameters, opt_headers, | 115 remoting.xhr.post = function(url, onDone, opt_parameters, opt_headers, |
| 116 opt_withCredentials) { | 116 opt_withCredentials) { |
| 117 /** @type {XMLHttpRequest} */ |
| 117 var xhr = new XMLHttpRequest(); | 118 var xhr = new XMLHttpRequest(); |
| 118 xhr.onreadystatechange = function() { | 119 xhr.onreadystatechange = function() { |
| 119 if (xhr.readyState != 4) { | 120 if (xhr.readyState != 4) { |
| 120 return; | 121 return; |
| 121 } | 122 } |
| 122 onDone(xhr); | 123 onDone(xhr); |
| 123 }; | 124 }; |
| 124 | 125 |
| 125 // Add parameters into URL. | 126 // Add parameters into URL. |
| 126 var postData = ''; | 127 var postData = ''; |
| (...skipping 19 matching lines...) Expand all Loading... |
| 146 // No problem here. Do nothing. | 147 // No problem here. Do nothing. |
| 147 } else { | 148 } else { |
| 148 throw 'opt_headers must be associative array.'; | 149 throw 'opt_headers must be associative array.'; |
| 149 } | 150 } |
| 150 | 151 |
| 151 if (opt_withCredentials) { | 152 if (opt_withCredentials) { |
| 152 xhr.withCredentials = true; | 153 xhr.withCredentials = true; |
| 153 } | 154 } |
| 154 | 155 |
| 155 xhr.send(postData); | 156 xhr.send(postData); |
| 156 } | 157 }; |
| 157 | |
| 158 }()); | |
| OLD | NEW |