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

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

Issue 2862203002: Print Preview: Fix data/ errors (Closed)
Patch Set: Fix destination resolver Created 3 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 unified diff | Download patch
« no previous file with comments | « no previous file | chrome/browser/resources/print_preview/data/app_state.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 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
148 * Enumeration of JSON response fields from Google Cloud Print API. 148 * Enumeration of JSON response fields from Google Cloud Print API.
149 * @enum {string} 149 * @enum {string}
150 * @private 150 * @private
151 */ 151 */
152 CloudPrintInterface.JsonFields_ = { 152 CloudPrintInterface.JsonFields_ = {
153 PRINTER: 'printer' 153 PRINTER: 'printer'
154 }; 154 };
155 155
156 /** 156 /**
157 * Could Print origins used to search printers. 157 * Could Print origins used to search printers.
158 * @type {!Array<!print_preview.Destination.Origin>} 158 * @type {!Array<!print_preview.DestinationOrigin>}
159 * @const 159 * @const
160 * @private 160 * @private
161 */ 161 */
162 CloudPrintInterface.CLOUD_ORIGINS_ = [ 162 CloudPrintInterface.CLOUD_ORIGINS_ = [
163 print_preview.Destination.Origin.COOKIES, 163 print_preview.DestinationOrigin.COOKIES,
164 print_preview.Destination.Origin.DEVICE 164 print_preview.DestinationOrigin.DEVICE
165 // TODO(vitalybuka): Enable when implemented. 165 // TODO(vitalybuka): Enable when implemented.
166 // ready print_preview.Destination.Origin.PROFILE 166 // ready print_preview.DestinationOrigin.PROFILE
167 ]; 167 ];
168 168
169 CloudPrintInterface.prototype = { 169 CloudPrintInterface.prototype = {
170 __proto__: cr.EventTarget.prototype, 170 __proto__: cr.EventTarget.prototype,
171 171
172 /** @return {string} Base URL of the Google Cloud Print service. */ 172 /** @return {string} Base URL of the Google Cloud Print service. */
173 get baseUrl() { 173 get baseUrl() {
174 return this.baseUrl_; 174 return this.baseUrl_;
175 }, 175 },
176 176
177 /** 177 /**
178 * @return {boolean} Whether a search for cloud destinations is in progress. 178 * @return {boolean} Whether a search for cloud destinations is in progress.
179 */ 179 */
180 get isCloudDestinationSearchInProgress() { 180 get isCloudDestinationSearchInProgress() {
181 return this.outstandingCloudSearchRequests_.length > 0; 181 return this.outstandingCloudSearchRequests_.length > 0;
182 }, 182 },
183 183
184 /** 184 /**
185 * Sends Google Cloud Print search API request. 185 * Sends Google Cloud Print search API request.
186 * @param {string=} opt_account Account the search is sent for. When 186 * @param {string=} opt_account Account the search is sent for. When
187 * omitted, the search is done on behalf of the primary user. 187 * omitted, the search is done on behalf of the primary user.
188 * @param {print_preview.Destination.Origin=} opt_origin When specified, 188 * @param {print_preview.DestinationOrigin=} opt_origin When specified,
189 * searches destinations for {@code opt_origin} only, otherwise starts 189 * searches destinations for {@code opt_origin} only, otherwise starts
190 * searches for all origins. 190 * searches for all origins.
191 */ 191 */
192 search: function(opt_account, opt_origin) { 192 search: function(opt_account, opt_origin) {
193 var account = opt_account || ''; 193 var account = opt_account || '';
194 var origins = 194 var origins =
195 opt_origin && [opt_origin] || CloudPrintInterface.CLOUD_ORIGINS_; 195 opt_origin && [opt_origin] || CloudPrintInterface.CLOUD_ORIGINS_;
196 if (this.isInAppKioskMode_) { 196 if (this.isInAppKioskMode_) {
197 origins = origins.filter(function(origin) { 197 origins = origins.filter(function(origin) {
198 return origin != print_preview.Destination.Origin.COOKIES; 198 return origin != print_preview.DestinationOrigin.COOKIES;
199 }); 199 });
200 } 200 }
201 this.abortSearchRequests_(origins); 201 this.abortSearchRequests_(origins);
202 this.search_(true, account, origins); 202 this.search_(true, account, origins);
203 this.search_(false, account, origins); 203 this.search_(false, account, origins);
204 }, 204 },
205 205
206 /** 206 /**
207 * Sends Google Cloud Print search API requests. 207 * Sends Google Cloud Print search API requests.
208 * @param {boolean} isRecent Whether to search for only recently used 208 * @param {boolean} isRecent Whether to search for only recently used
209 * printers. 209 * printers.
210 * @param {string} account Account the search is sent for. It matters for 210 * @param {string} account Account the search is sent for. It matters for
211 * COOKIES origin only, and can be empty (sent on behalf of the primary 211 * COOKIES origin only, and can be empty (sent on behalf of the primary
212 * user in this case). 212 * user in this case).
213 * @param {!Array<!print_preview.Destination.Origin>} origins Origins to 213 * @param {!Array<!print_preview.DestinationOrigin>} origins Origins to
214 * search printers for. 214 * search printers for.
215 * @private 215 * @private
216 */ 216 */
217 search_: function(isRecent, account, origins) { 217 search_: function(isRecent, account, origins) {
218 var params = [ 218 var params = [
219 new HttpParam('connection_status', 'ALL'), 219 new HttpParam('connection_status', 'ALL'),
220 new HttpParam('client', 'chrome'), 220 new HttpParam('client', 'chrome'),
221 new HttpParam('use_cdd', 'true') 221 new HttpParam('use_cdd', 'true')
222 ]; 222 ];
223 if (isRecent) { 223 if (isRecent) {
(...skipping 17 matching lines...) Expand all
241 * @param {string} account Account the request is sent for. 241 * @param {string} account Account the request is sent for.
242 */ 242 */
243 invites: function(account) { 243 invites: function(account) {
244 var params = [ 244 var params = [
245 new HttpParam('client', 'chrome'), 245 new HttpParam('client', 'chrome'),
246 ]; 246 ];
247 this.sendOrQueueRequest_(this.buildRequest_( 247 this.sendOrQueueRequest_(this.buildRequest_(
248 'GET', 248 'GET',
249 'invites', 249 'invites',
250 params, 250 params,
251 print_preview.Destination.Origin.COOKIES, 251 print_preview.DestinationOrigin.COOKIES,
252 account, 252 account,
253 this.onInvitesDone_.bind(this))); 253 this.onInvitesDone_.bind(this)));
254 }, 254 },
255 255
256 /** 256 /**
257 * Accepts or rejects printer sharing invitation. 257 * Accepts or rejects printer sharing invitation.
258 * @param {!print_preview.Invitation} invitation Invitation to process. 258 * @param {!print_preview.Invitation} invitation Invitation to process.
259 * @param {boolean} accept Whether to accept this invitation. 259 * @param {boolean} accept Whether to accept this invitation.
260 */ 260 */
261 processInvite: function(invitation, accept) { 261 processInvite: function(invitation, accept) {
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
307 params, 307 params,
308 destination.origin, 308 destination.origin,
309 destination.account, 309 destination.account,
310 this.onSubmitDone_.bind(this)); 310 this.onSubmitDone_.bind(this));
311 this.sendOrQueueRequest_(cpRequest); 311 this.sendOrQueueRequest_(cpRequest);
312 }, 312 },
313 313
314 /** 314 /**
315 * Sends a Google Cloud Print printer API request. 315 * Sends a Google Cloud Print printer API request.
316 * @param {string} printerId ID of the printer to lookup. 316 * @param {string} printerId ID of the printer to lookup.
317 * @param {!print_preview.Destination.Origin} origin Origin of the printer. 317 * @param {!print_preview.DestinationOrigin} origin Origin of the printer.
318 * @param {string=} account Account this printer is registered for. When 318 * @param {string=} account Account this printer is registered for. When
319 * provided for COOKIES {@code origin}, and users sessions are still not 319 * provided for COOKIES {@code origin}, and users sessions are still not
320 * known, will be checked against the response (both success and failure 320 * known, will be checked against the response (both success and failure
321 * to get printer) and, if the active user account is not the one 321 * to get printer) and, if the active user account is not the one
322 * requested, {@code account} is activated and printer request reissued. 322 * requested, {@code account} is activated and printer request reissued.
323 */ 323 */
324 printer: function(printerId, origin, account) { 324 printer: function(printerId, origin, account) {
325 var params = [ 325 var params = [
326 new HttpParam('printerid', printerId), 326 new HttpParam('printerid', printerId),
327 new HttpParam('use_cdd', 'true'), 327 new HttpParam('use_cdd', 'true'),
(...skipping 18 matching lines...) Expand all
346 print_preview.NativeLayer.EventType.ACCESS_TOKEN_READY, 346 print_preview.NativeLayer.EventType.ACCESS_TOKEN_READY,
347 this.onAccessTokenReady_.bind(this)); 347 this.onAccessTokenReady_.bind(this));
348 }, 348 },
349 349
350 /** 350 /**
351 * Builds request to the Google Cloud Print API. 351 * Builds request to the Google Cloud Print API.
352 * @param {string} method HTTP method of the request. 352 * @param {string} method HTTP method of the request.
353 * @param {string} action Google Cloud Print action to perform. 353 * @param {string} action Google Cloud Print action to perform.
354 * @param {Array<!HttpParam>} params HTTP parameters to include in the 354 * @param {Array<!HttpParam>} params HTTP parameters to include in the
355 * request. 355 * request.
356 * @param {!print_preview.Destination.Origin} origin Origin for destination. 356 * @param {!print_preview.DestinationOrigin} origin Origin for destination.
357 * @param {?string} account Account the request is sent for. Can be 357 * @param {?string} account Account the request is sent for. Can be
358 * {@code null} or empty string if the request is not cookie bound or 358 * {@code null} or empty string if the request is not cookie bound or
359 * is sent on behalf of the primary user. 359 * is sent on behalf of the primary user.
360 * @param {function(number, Object, !print_preview.Destination.Origin)} 360 * @param {function(number, Object, !print_preview.DestinationOrigin)}
361 * callback Callback to invoke when request completes. 361 * callback Callback to invoke when request completes.
362 * @return {!CloudPrintRequest} Partially prepared request. 362 * @return {!CloudPrintRequest} Partially prepared request.
363 * @private 363 * @private
364 */ 364 */
365 buildRequest_: function(method, action, params, origin, account, callback) { 365 buildRequest_: function(method, action, params, origin, account, callback) {
366 var url = this.baseUrl_ + '/' + action + '?xsrf='; 366 var url = this.baseUrl_ + '/' + action + '?xsrf=';
367 if (origin == print_preview.Destination.Origin.COOKIES) { 367 if (origin == print_preview.DestinationOrigin.COOKIES) {
368 var xsrfToken = this.xsrfTokens_[account]; 368 var xsrfToken = this.xsrfTokens_[account];
369 if (!xsrfToken) { 369 if (!xsrfToken) {
370 // TODO(rltoscano): Should throw an error if not a read-only action or 370 // TODO(rltoscano): Should throw an error if not a read-only action or
371 // issue an xsrf token request. 371 // issue an xsrf token request.
372 } else { 372 } else {
373 url = url + xsrfToken; 373 url = url + xsrfToken;
374 } 374 }
375 if (account) { 375 if (account) {
376 var index = this.userSessionIndex_[account] || 0; 376 var index = this.userSessionIndex_[account] || 0;
377 if (index > 0) { 377 if (index > 0) {
(...skipping 21 matching lines...) Expand all
399 headers['X-CloudPrint-Proxy'] = 'ChromePrintPreview'; 399 headers['X-CloudPrint-Proxy'] = 'ChromePrintPreview';
400 if (method == 'GET') { 400 if (method == 'GET') {
401 headers['Content-Type'] = CloudPrintInterface.URL_ENCODED_CONTENT_TYPE_; 401 headers['Content-Type'] = CloudPrintInterface.URL_ENCODED_CONTENT_TYPE_;
402 } else if (method == 'POST') { 402 } else if (method == 'POST') {
403 headers['Content-Type'] = CloudPrintInterface.MULTIPART_CONTENT_TYPE_; 403 headers['Content-Type'] = CloudPrintInterface.MULTIPART_CONTENT_TYPE_;
404 } 404 }
405 405
406 var xhr = new XMLHttpRequest(); 406 var xhr = new XMLHttpRequest();
407 xhr.open(method, url, true); 407 xhr.open(method, url, true);
408 xhr.withCredentials = 408 xhr.withCredentials =
409 (origin == print_preview.Destination.Origin.COOKIES); 409 (origin == print_preview.DestinationOrigin.COOKIES);
410 for (var header in headers) { 410 for (var header in headers) {
411 xhr.setRequestHeader(header, headers[header]); 411 xhr.setRequestHeader(header, headers[header]);
412 } 412 }
413 413
414 return new CloudPrintRequest(xhr, body, origin, account, callback); 414 return new CloudPrintRequest(xhr, body, origin, account, callback);
415 }, 415 },
416 416
417 /** 417 /**
418 * Sends a request to the Google Cloud Print API or queues if it needs to 418 * Sends a request to the Google Cloud Print API or queues if it needs to
419 * wait OAuth2 access token. 419 * wait OAuth2 access token.
420 * @param {!CloudPrintRequest} request Request to send or queue. 420 * @param {!CloudPrintRequest} request Request to send or queue.
421 * @private 421 * @private
422 */ 422 */
423 sendOrQueueRequest_: function(request) { 423 sendOrQueueRequest_: function(request) {
424 if (request.origin == print_preview.Destination.Origin.COOKIES) { 424 if (request.origin == print_preview.DestinationOrigin.COOKIES) {
425 return this.sendRequest_(request); 425 return this.sendRequest_(request);
426 } else { 426 } else {
427 this.requestQueue_.push(request); 427 this.requestQueue_.push(request);
428 this.nativeLayer_.startGetAccessToken(request.origin); 428 this.nativeLayer_.startGetAccessToken(request.origin);
429 } 429 }
430 }, 430 },
431 431
432 /** 432 /**
433 * Sends a request to the Google Cloud Print API. 433 * Sends a request to the Google Cloud Print API.
434 * @param {!CloudPrintRequest} request Request to send. 434 * @param {!CloudPrintRequest} request Request to send.
(...skipping 25 matching lines...) Expand all
460 errorEvent.origin = request.origin; 460 errorEvent.origin = request.origin;
461 return errorEvent; 461 return errorEvent;
462 }, 462 },
463 463
464 /** 464 /**
465 * Updates user info and session index from the {@code request} response. 465 * Updates user info and session index from the {@code request} response.
466 * @param {!CloudPrintRequest} request Request to extract user info from. 466 * @param {!CloudPrintRequest} request Request to extract user info from.
467 * @private 467 * @private
468 */ 468 */
469 setUsers_: function(request) { 469 setUsers_: function(request) {
470 if (request.origin == print_preview.Destination.Origin.COOKIES) { 470 if (request.origin == print_preview.DestinationOrigin.COOKIES) {
471 var users = request.result['request']['users'] || []; 471 var users = request.result['request']['users'] || [];
472 this.userSessionIndex_ = {}; 472 this.userSessionIndex_ = {};
473 for (var i = 0; i < users.length; i++) { 473 for (var i = 0; i < users.length; i++) {
474 this.userSessionIndex_[users[i]] = i; 474 this.userSessionIndex_[users[i]] = i;
475 } 475 }
476 this.userInfo_.setUsers(request.result['request']['user'], users); 476 this.userInfo_.setUsers(request.result['request']['user'], users);
477 } 477 }
478 }, 478 },
479 479
480 /** 480 /**
481 * Terminates search requests for requested {@code origins}. 481 * Terminates search requests for requested {@code origins}.
482 * @param {!Array<print_preview.Destination.Origin>} origins Origins 482 * @param {!Array<print_preview.DestinationOrigin>} origins Origins
483 * to terminate search requests for. 483 * to terminate search requests for.
484 * @private 484 * @private
485 */ 485 */
486 abortSearchRequests_: function(origins) { 486 abortSearchRequests_: function(origins) {
487 this.outstandingCloudSearchRequests_ = 487 this.outstandingCloudSearchRequests_ =
488 this.outstandingCloudSearchRequests_.filter(function(request) { 488 this.outstandingCloudSearchRequests_.filter(function(request) {
489 if (origins.indexOf(request.origin) >= 0) { 489 if (origins.indexOf(request.origin) >= 0) {
490 request.xhr.abort(); 490 request.xhr.abort();
491 return false; 491 return false;
492 } 492 }
493 return true; 493 return true;
494 }); 494 });
495 }, 495 },
496 496
497 /** 497 /**
498 * Called when a native layer receives access token. 498 * Called when a native layer receives access token.
499 * @param {Event} event Contains the authentication type and access token. 499 * @param {Event} event Contains the authentication type and access token.
500 * @private 500 * @private
501 */ 501 */
502 onAccessTokenReady_: function(event) { 502 onAccessTokenReady_: function(event) {
503 // TODO(vitalybuka): remove when other Origins implemented. 503 // TODO(vitalybuka): remove when other Origins implemented.
504 assert(event.authType == print_preview.Destination.Origin.DEVICE); 504 assert(event.authType == print_preview.DestinationOrigin.DEVICE);
505 this.requestQueue_ = this.requestQueue_.filter(function(request) { 505 this.requestQueue_ = this.requestQueue_.filter(function(request) {
506 assert(request.origin == print_preview.Destination.Origin.DEVICE); 506 assert(request.origin == print_preview.DestinationOrigin.DEVICE);
507 if (request.origin != event.authType) { 507 if (request.origin != event.authType) {
508 return true; 508 return true;
509 } 509 }
510 if (event.accessToken) { 510 if (event.accessToken) {
511 request.xhr.setRequestHeader('Authorization', 511 request.xhr.setRequestHeader('Authorization',
512 'Bearer ' + event.accessToken); 512 'Bearer ' + event.accessToken);
513 this.sendRequest_(request); 513 this.sendRequest_(request);
514 } else { // No valid token. 514 } else { // No valid token.
515 // Without abort status does not exist. 515 // Without abort status does not exist.
516 request.xhr.abort(); 516 request.xhr.abort();
517 request.callback(request); 517 request.callback(request);
518 } 518 }
519 return false; 519 return false;
520 }, this); 520 }, this);
521 }, 521 },
522 522
523 /** 523 /**
524 * Called when the ready-state of a XML http request changes. 524 * Called when the ready-state of a XML http request changes.
525 * Calls the successCallback with the result or dispatches an ERROR event. 525 * Calls the successCallback with the result or dispatches an ERROR event.
526 * @param {!CloudPrintRequest} request Request that was changed. 526 * @param {!CloudPrintRequest} request Request that was changed.
527 * @private 527 * @private
528 */ 528 */
529 onReadyStateChange_: function(request) { 529 onReadyStateChange_: function(request) {
530 if (request.xhr.readyState == 4) { 530 if (request.xhr.readyState == 4) {
531 if (request.xhr.status == 200) { 531 if (request.xhr.status == 200) {
532 request.result = JSON.parse(request.xhr.responseText); 532 request.result = JSON.parse(request.xhr.responseText);
533 if (request.origin == print_preview.Destination.Origin.COOKIES && 533 if (request.origin == print_preview.DestinationOrigin.COOKIES &&
534 request.result['success']) { 534 request.result['success']) {
535 this.xsrfTokens_[request.result['request']['user']] = 535 this.xsrfTokens_[request.result['request']['user']] =
536 request.result['xsrf_token']; 536 request.result['xsrf_token'];
537 } 537 }
538 } 538 }
539 request.status = request.xhr.status; 539 request.status = request.xhr.status;
540 request.callback(request); 540 request.callback(request);
541 } 541 }
542 }, 542 },
543 543
544 /** 544 /**
545 * Called when the search request completes. 545 * Called when the search request completes.
546 * @param {boolean} isRecent Whether the search request was for recent 546 * @param {boolean} isRecent Whether the search request was for recent
547 * destinations. 547 * destinations.
548 * @param {!CloudPrintRequest} request Request that has been completed. 548 * @param {!CloudPrintRequest} request Request that has been completed.
549 * @private 549 * @private
550 */ 550 */
551 onSearchDone_: function(isRecent, request) { 551 onSearchDone_: function(isRecent, request) {
552 var lastRequestForThisOrigin = true; 552 var lastRequestForThisOrigin = true;
553 this.outstandingCloudSearchRequests_ = 553 this.outstandingCloudSearchRequests_ =
554 this.outstandingCloudSearchRequests_.filter(function(item) { 554 this.outstandingCloudSearchRequests_.filter(function(item) {
555 if (item != request && item.origin == request.origin) { 555 if (item != request && item.origin == request.origin) {
556 lastRequestForThisOrigin = false; 556 lastRequestForThisOrigin = false;
557 } 557 }
558 return item != request; 558 return item != request;
559 }); 559 });
560 var activeUser = ''; 560 var activeUser = '';
561 if (request.origin == print_preview.Destination.Origin.COOKIES) { 561 if (request.origin == print_preview.DestinationOrigin.COOKIES) {
562 activeUser = 562 activeUser =
563 request.result && 563 request.result &&
564 request.result['request'] && 564 request.result['request'] &&
565 request.result['request']['user']; 565 request.result['request']['user'];
566 } 566 }
567 var event = null; 567 var event = null;
568 if (request.xhr.status == 200 && request.result['success']) { 568 if (request.xhr.status == 200 && request.result['success']) {
569 // Extract printers. 569 // Extract printers.
570 var printerListJson = request.result['printers'] || []; 570 var printerListJson = request.result['printers'] || [];
571 var printerList = []; 571 var printerList = [];
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
681 681
682 /** 682 /**
683 * Called when the printer request completes. 683 * Called when the printer request completes.
684 * @param {string} destinationId ID of the destination that was looked up. 684 * @param {string} destinationId ID of the destination that was looked up.
685 * @param {!CloudPrintRequest} request Request that has been completed. 685 * @param {!CloudPrintRequest} request Request that has been completed.
686 * @private 686 * @private
687 */ 687 */
688 onPrinterDone_: function(destinationId, request) { 688 onPrinterDone_: function(destinationId, request) {
689 // Special handling of the first printer request. It does not matter at 689 // Special handling of the first printer request. It does not matter at
690 // this point, whether printer was found or not. 690 // this point, whether printer was found or not.
691 if (request.origin == print_preview.Destination.Origin.COOKIES && 691 if (request.origin == print_preview.DestinationOrigin.COOKIES &&
692 request.result && 692 request.result &&
693 request.account && 693 request.account &&
694 request.result['request']['user'] && 694 request.result['request']['user'] &&
695 request.result['request']['users'] && 695 request.result['request']['users'] &&
696 request.account != request.result['request']['user']) { 696 request.account != request.result['request']['user']) {
697 this.setUsers_(request); 697 this.setUsers_(request);
698 // In case the user account is known, but not the primary one, 698 // In case the user account is known, but not the primary one,
699 // activate it. 699 // activate it.
700 if (this.userSessionIndex_[request.account] > 0) { 700 if (this.userSessionIndex_[request.account] > 0) {
701 this.userInfo_.activeUser = request.account; 701 this.userInfo_.activeUser = request.account;
702 // Repeat the request for the newly activated account. 702 // Repeat the request for the newly activated account.
703 this.printer( 703 this.printer(
704 request.result['request']['params']['printerid'], 704 request.result['request']['params']['printerid'],
705 request.origin, 705 request.origin,
706 request.account); 706 request.account);
707 // Stop processing this request, wait for the new response. 707 // Stop processing this request, wait for the new response.
708 return; 708 return;
709 } 709 }
710 } 710 }
711 // Process response. 711 // Process response.
712 if (request.xhr.status == 200 && request.result['success']) { 712 if (request.xhr.status == 200 && request.result['success']) {
713 var activeUser = ''; 713 var activeUser = '';
714 if (request.origin == print_preview.Destination.Origin.COOKIES) { 714 if (request.origin == print_preview.DestinationOrigin.COOKIES) {
715 activeUser = request.result['request']['user']; 715 activeUser = request.result['request']['user'];
716 } 716 }
717 var printerJson = request.result['printers'][0]; 717 var printerJson = request.result['printers'][0];
718 var printer; 718 var printer;
719 try { 719 try {
720 printer = cloudprint.CloudDestinationParser.parse( 720 printer = cloudprint.CloudDestinationParser.parse(
721 printerJson, request.origin, activeUser); 721 printerJson, request.origin, activeUser);
722 } catch (err) { 722 } catch (err) {
723 console.error('Failed to parse cloud print destination: ' + 723 console.error('Failed to parse cloud print destination: ' +
724 JSON.stringify(printerJson)); 724 JSON.stringify(printerJson));
(...skipping 10 matching lines...) Expand all
735 errorEvent.destinationOrigin = request.origin; 735 errorEvent.destinationOrigin = request.origin;
736 this.dispatchEvent(errorEvent); 736 this.dispatchEvent(errorEvent);
737 } 737 }
738 }, 738 },
739 }; 739 };
740 740
741 /** 741 /**
742 * Data structure that holds data for Cloud Print requests. 742 * Data structure that holds data for Cloud Print requests.
743 * @param {!XMLHttpRequest} xhr Partially prepared http request. 743 * @param {!XMLHttpRequest} xhr Partially prepared http request.
744 * @param {string} body Data to send with POST requests. 744 * @param {string} body Data to send with POST requests.
745 * @param {!print_preview.Destination.Origin} origin Origin for destination. 745 * @param {!print_preview.DestinationOrigin} origin Origin for destination.
746 * @param {?string} account Account the request is sent for. Can be 746 * @param {?string} account Account the request is sent for. Can be
747 * {@code null} or empty string if the request is not cookie bound or 747 * {@code null} or empty string if the request is not cookie bound or
748 * is sent on behalf of the primary user. 748 * is sent on behalf of the primary user.
749 * @param {function(!CloudPrintRequest)} callback Callback to invoke when 749 * @param {function(!CloudPrintRequest)} callback Callback to invoke when
750 * request completes. 750 * request completes.
751 * @constructor 751 * @constructor
752 */ 752 */
753 function CloudPrintRequest(xhr, body, origin, account, callback) { 753 function CloudPrintRequest(xhr, body, origin, account, callback) {
754 /** 754 /**
755 * Partially prepared http request. 755 * Partially prepared http request.
756 * @type {!XMLHttpRequest} 756 * @type {!XMLHttpRequest}
757 */ 757 */
758 this.xhr = xhr; 758 this.xhr = xhr;
759 759
760 /** 760 /**
761 * Data to send with POST requests. 761 * Data to send with POST requests.
762 * @type {string} 762 * @type {string}
763 */ 763 */
764 this.body = body; 764 this.body = body;
765 765
766 /** 766 /**
767 * Origin for destination. 767 * Origin for destination.
768 * @type {!print_preview.Destination.Origin} 768 * @type {!print_preview.DestinationOrigin}
769 */ 769 */
770 this.origin = origin; 770 this.origin = origin;
771 771
772 /** 772 /**
773 * User account this request is expected to be executed for. 773 * User account this request is expected to be executed for.
774 * @type {?string} 774 * @type {?string}
775 */ 775 */
776 this.account = account; 776 this.account = account;
777 777
778 /** 778 /**
(...skipping 27 matching lines...) Expand all
806 * @type {string} 806 * @type {string}
807 */ 807 */
808 this.value = value; 808 this.value = value;
809 }; 809 };
810 810
811 // Export 811 // Export
812 return { 812 return {
813 CloudPrintInterface: CloudPrintInterface 813 CloudPrintInterface: CloudPrintInterface
814 }; 814 };
815 }); 815 });
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/resources/print_preview/data/app_state.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698