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

Side by Side Diff: chrome/browser/resources/print_preview/cloud_print_interface.js

Issue 10827463: Fixes cloud-printer being treated as local-printer problem. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Fixes JSDoc comment. Created 8 years, 3 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
« no previous file with comments | « no previous file | chrome/browser/resources/print_preview/data/destination_store.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 cr.define('cloudprint', function() { 5 cr.define('cloudprint', function() {
6 'use strict'; 6 'use strict';
7 7
8 /** 8 /**
9 * API to the Google Cloud Print service. 9 * API to the Google Cloud Print service.
10 * @param {string} baseUrl Base part of the Google Cloud Print service URL 10 * @param {string} baseUrl Base part of the Google Cloud Print service URL
(...skipping 18 matching lines...) Expand all
29 this.xsrfToken_ = ''; 29 this.xsrfToken_ = '';
30 }; 30 };
31 31
32 /** 32 /**
33 * Event types dispatched by the interface. 33 * Event types dispatched by the interface.
34 * @enum {string} 34 * @enum {string}
35 */ 35 */
36 CloudPrintInterface.EventType = { 36 CloudPrintInterface.EventType = {
37 ERROR: 'cloudprint.CloudPrintInterface.ERROR', 37 ERROR: 'cloudprint.CloudPrintInterface.ERROR',
38 PRINTER_DONE: 'cloudprint.CloudPrintInterface.PRINTER_DONE', 38 PRINTER_DONE: 'cloudprint.CloudPrintInterface.PRINTER_DONE',
39 PRINTER_FAILED: 'cloudprint.CloudPrintInterface.PRINTER_FAILED',
39 SEARCH_DONE: 'cloudprint.CloudPrintInterface.SEARCH_DONE', 40 SEARCH_DONE: 'cloudprint.CloudPrintInterface.SEARCH_DONE',
40 SUBMIT_DONE: 'cloudprint.CloudPrintInterface.SUBMIT_DONE' 41 SUBMIT_DONE: 'cloudprint.CloudPrintInterface.SUBMIT_DONE'
41 }; 42 };
42 43
43 /** 44 /**
44 * Content type header value for a URL encoded HTTP request. 45 * Content type header value for a URL encoded HTTP request.
45 * @type {string} 46 * @type {string}
46 * @private 47 * @private
47 */ 48 */
48 CloudPrintInterface.URL_ENCODED_CONTENT_TYPE_ = 49 CloudPrintInterface.URL_ENCODED_CONTENT_TYPE_ =
(...skipping 24 matching lines...) Expand all
73 * @param {boolean} isRecent Whether to search for only recently used 74 * @param {boolean} isRecent Whether to search for only recently used
74 * printers. 75 * printers.
75 */ 76 */
76 search: function(isRecent) { 77 search: function(isRecent) {
77 var params = {}; 78 var params = {};
78 if (isRecent) { 79 if (isRecent) {
79 params['q'] = '^recent'; 80 params['q'] = '^recent';
80 } 81 }
81 params['connection_status'] = 'ALL'; 82 params['connection_status'] = 'ALL';
82 params['client'] = 'chrome'; 83 params['client'] = 'chrome';
83 this.sendRequest_('GET', 'search', params, null, this.onSearchDone_); 84 this.sendRequest_(
85 'GET', 'search', params, null, this.onSearchDone_.bind(this));
84 }, 86 },
85 87
86 /** 88 /**
87 * Sends a Google Cloud Print submit API request. 89 * Sends a Google Cloud Print submit API request.
88 * @param {string} body Body of the HTTP post request to send. 90 * @param {string} body Body of the HTTP post request to send.
89 */ 91 */
90 submit: function(body) { 92 submit: function(body) {
91 this.sendRequest_('POST', 'submit', null, body, this.onSubmitDone_); 93 this.sendRequest_(
94 'POST', 'submit', null, body, this.onSubmitDone_.bind(this));
92 }, 95 },
93 96
94 /** 97 /**
95 * Sends a Google Cloud Print printer API request. 98 * Sends a Google Cloud Print printer API request.
96 * @param {string} printerId ID of the printer to lookup. 99 * @param {string} printerId ID of the printer to lookup.
97 */ 100 */
98 printer: function(printerId) { 101 printer: function(printerId) {
99 var params = {'printerid': printerId}; 102 var params = {'printerid': printerId};
100 this.sendRequest_('GET', 'printer', params, null, this.onPrinterDone_); 103 this.sendRequest_(
104 'GET', 'printer', params, null,
105 this.onPrinterDone_.bind(this),
106 this.onPrinterFailed_.bind(this, printerId));
101 }, 107 },
102 108
103 /** 109 /**
104 * Sends a Google Cloud Print update API request to accept (or reject) the 110 * Sends a Google Cloud Print update API request to accept (or reject) the
105 * terms-of-service of the given printer. 111 * terms-of-service of the given printer.
106 * @param {string} printerId ID of the printer to accept the 112 * @param {string} printerId ID of the printer to accept the
107 * terms-of-service for. 113 * terms-of-service for.
108 * @param {boolean} isAccepted Whether the user accepted the 114 * @param {boolean} isAccepted Whether the user accepted the
109 * terms-of-service. 115 * terms-of-service.
110 */ 116 */
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 }, 189 },
184 190
185 /** 191 /**
186 * Sends a request to the Google Cloud Print API. 192 * Sends a request to the Google Cloud Print API.
187 * @param {string} method HTTP method of the request. 193 * @param {string} method HTTP method of the request.
188 * @param {string} action Google Cloud Print action to perform. 194 * @param {string} action Google Cloud Print action to perform.
189 * @param {Object} params HTTP parameters to include in the request. 195 * @param {Object} params HTTP parameters to include in the request.
190 * @param {string} body HTTP multi-part encoded body. 196 * @param {string} body HTTP multi-part encoded body.
191 * @param {function(Object)} successCallback Callback to invoke when request 197 * @param {function(Object)} successCallback Callback to invoke when request
192 * completes successfully. 198 * completes successfully.
199 * @param {function(Object)=} opt_failureCallback Callback to call if the
200 * request failed.
193 */ 201 */
194 sendRequest_: function(method, action, params, body, successCallback) { 202 sendRequest_: function(method, action, params, body, successCallback,
203 opt_failureCallback) {
195 if (!this.xsrfToken_) { 204 if (!this.xsrfToken_) {
196 // TODO(rltoscano): Should throw an error if not a read-only action or 205 // TODO(rltoscano): Should throw an error if not a read-only action or
197 // issue an xsrf token request. 206 // issue an xsrf token request.
198 } 207 }
199 var url = this.baseURL_ + '/' + action + '?xsrf=' + this.xsrfToken_; 208 var url = this.baseURL_ + '/' + action + '?xsrf=' + this.xsrfToken_;
200 209
201 if (params) { 210 if (params) {
202 for (var paramName in params) { 211 for (var paramName in params) {
203 url += '&' + paramName + '=' + encodeURIComponent(params[paramName]); 212 url += '&' + paramName + '=' + encodeURIComponent(params[paramName]);
204 } 213 }
205 } 214 }
206 215
207 var headers = {}; 216 var headers = {};
208 headers['X-CloudPrint-Proxy'] = 'ChromePrintPreview'; 217 headers['X-CloudPrint-Proxy'] = 'ChromePrintPreview';
209 if (method == 'GET') { 218 if (method == 'GET') {
210 headers['Content-Type'] = CloudPrintInterface.URL_ENCODED_CONTENT_TYPE_; 219 headers['Content-Type'] = CloudPrintInterface.URL_ENCODED_CONTENT_TYPE_;
211 } else if (method == 'POST') { 220 } else if (method == 'POST') {
212 headers['Content-Type'] = CloudPrintInterface.MULTIPART_CONTENT_TYPE_; 221 headers['Content-Type'] = CloudPrintInterface.MULTIPART_CONTENT_TYPE_;
213 } 222 }
214 223
215 var xhr = new XMLHttpRequest(); 224 var xhr = new XMLHttpRequest();
216 xhr.onreadystatechange = this.onReadyStateChange_.bind( 225 xhr.onreadystatechange = this.onReadyStateChange_.bind(
217 this, xhr, successCallback.bind(this)); 226 this, xhr, successCallback, opt_failureCallback);
218 xhr.open(method, url, true); 227 xhr.open(method, url, true);
219 xhr.withCredentials = true; 228 xhr.withCredentials = true;
220 for (var header in headers) { 229 for (var header in headers) {
221 xhr.setRequestHeader(header, headers[header]); 230 xhr.setRequestHeader(header, headers[header]);
222 } 231 }
223 xhr.send(body); 232 xhr.send(body);
224 }, 233 },
225 234
226 /** 235 /**
227 * Dispatches an ERROR event with the given error message. 236 * Dispatches an ERROR event with the given error message.
228 * @param {string} message Error message to include in the ERROR event. 237 * @param {string} message Error message to include in the ERROR event.
229 * @private 238 * @private
230 */ 239 */
231 dispatchErrorEvent_: function(message) { 240 dispatchErrorEvent_: function(message) {
232 var errorEvent = new cr.Event(CloudPrintInterface.EventType.ERROR); 241 var errorEvent = new cr.Event(CloudPrintInterface.EventType.ERROR);
233 errorEvent.message = message; 242 errorEvent.message = message;
234 this.dispatchEvent(errorEvent); 243 this.dispatchEvent(errorEvent);
235 }, 244 },
236 245
237 /** 246 /**
238 * Called when the ready-state of a XML http request changes. 247 * Called when the ready-state of a XML http request changes.
239 * Calls the successCallback with the result or dispatches an ERROR event. 248 * Calls the successCallback with the result or dispatches an ERROR event.
240 * @param {XMLHttpRequest} xhr XML http request that changed. 249 * @param {XMLHttpRequest} xhr XML http request that changed.
241 * @param {function(Object)} successCallback Callback to call if the request 250 * @param {function(Object)} successCallback Callback to call if the request
242 * was successful. 251 * was successful.
252 * @param {function(Object)=} opt_failureCallback Callback to call if the
253 * request failed.
243 * @private 254 * @private
244 */ 255 */
245 onReadyStateChange_: function(xhr, successCallback) { 256 onReadyStateChange_: function(xhr, successCallback, opt_failureCallback) {
246 if (xhr.readyState == 4) { 257 if (xhr.readyState == 4) {
247 if (xhr.status == 200) { 258 if (xhr.status == 200) {
248 var result = JSON.parse(xhr.responseText); 259 var result = JSON.parse(xhr.responseText);
249 if (result['success']) { 260 if (result['success']) {
250 this.xsrfToken_ = result['xsrf_token']; 261 this.xsrfToken_ = result['xsrf_token'];
251 successCallback(result); 262 successCallback(result);
263 } else if (opt_failureCallback) {
264 opt_failureCallback(result);
252 } else { 265 } else {
253 this.dispatchErrorEvent_(result['message']); 266 this.dispatchErrorEvent_(result['message']);
254 } 267 }
255 } else { 268 } else {
256 this.dispatchErrorEvent_(xhr.status + ''); 269 this.dispatchErrorEvent_(xhr.status + '');
257 } 270 }
258 } 271 }
259 }, 272 },
260 273
261 /** 274 /**
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 JSON.stringify(printerJson)); 324 JSON.stringify(printerJson));
312 return; 325 return;
313 } 326 }
314 var printerDoneEvent = 327 var printerDoneEvent =
315 new cr.Event(CloudPrintInterface.EventType.PRINTER_DONE); 328 new cr.Event(CloudPrintInterface.EventType.PRINTER_DONE);
316 printerDoneEvent.printer = printer; 329 printerDoneEvent.printer = printer;
317 this.dispatchEvent(printerDoneEvent); 330 this.dispatchEvent(printerDoneEvent);
318 }, 331 },
319 332
320 /** 333 /**
334 * Called when the printer request fails.
335 * @param {string} ID of the destination that failed to be looked up.
336 * @param {object} Contains the JSON response.
337 * @private
338 */
339 onPrinterFailed_: function(destinationId, result) {
340 var printerFailedEvent = new cr.Event(
341 CloudPrintInterface.EventType.PRINTER_FAILED);
342 printerFailedEvent.destinationId = destinationId;
343 printerFailedEvent.errorCode = result['errorCode'];
344 this.dispatchEvent(printerFailedEvent);
345 },
346
347 /**
321 * Called when the update printer TOS acceptance request completes 348 * Called when the update printer TOS acceptance request completes
322 * successfully. 349 * successfully.
323 * @param {Object} result JSON response. 350 * @param {Object} result JSON response.
324 * @private 351 * @private
325 */ 352 */
326 onUpdatePrinterTosAcceptanceDone_: function(result) { 353 onUpdatePrinterTosAcceptanceDone_: function(result) {
327 // Do nothing. 354 // Do nothing.
328 } 355 }
329 }; 356 };
330 357
331 // Export 358 // Export
332 return { 359 return {
333 CloudPrintInterface: CloudPrintInterface 360 CloudPrintInterface: CloudPrintInterface
334 }; 361 };
335 }); 362 });
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/resources/print_preview/data/destination_store.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698