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

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

Issue 2863183004: Print Preview: Fix top level directory compile errors (Closed)
Patch Set: Address comments 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/common/overlay.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.exportPath('cloudprint');
6
7 /**
8 * Event types dispatched by the cloudprint interface.
9 * @enum {string}
10 */
11 cloudprint.CloudPrintInterfaceEventType = {
12 INVITES_DONE: 'cloudprint.CloudPrintInterface.INVITES_DONE',
13 INVITES_FAILED: 'cloudprint.CloudPrintInterface.INVITES_FAILED',
14 PRINTER_DONE: 'cloudprint.CloudPrintInterface.PRINTER_DONE',
15 PRINTER_FAILED: 'cloudprint.CloudPrintInterface.PRINTER_FAILED',
16 PROCESS_INVITE_DONE: 'cloudprint.CloudPrintInterface.PROCESS_INVITE_DONE',
17 PROCESS_INVITE_FAILED:
18 'cloudprint.CloudPrintInterface.PROCESS_INVITE_FAILED',
19 SEARCH_DONE: 'cloudprint.CloudPrintInterface.SEARCH_DONE',
20 SEARCH_FAILED: 'cloudprint.CloudPrintInterface.SEARCH_FAILED',
21 SUBMIT_DONE: 'cloudprint.CloudPrintInterface.SUBMIT_DONE',
22 SUBMIT_FAILED: 'cloudprint.CloudPrintInterface.SUBMIT_FAILED',
23 };
24
5 cr.define('cloudprint', function() { 25 cr.define('cloudprint', function() {
6 'use strict'; 26 'use strict';
7 27
28 var CloudPrintInterfaceEventType = cloudprint.CloudPrintInterfaceEventType;
29
8 /** 30 /**
9 * API to the Google Cloud Print service. 31 * API to the Google Cloud Print service.
10 * @param {string} baseUrl Base part of the Google Cloud Print service URL 32 * @param {string} baseUrl Base part of the Google Cloud Print service URL
11 * with no trailing slash. For example, 33 * with no trailing slash. For example,
12 * 'https://www.google.com/cloudprint'. 34 * 'https://www.google.com/cloudprint'.
13 * @param {!print_preview.NativeLayer} nativeLayer Native layer used to get 35 * @param {!print_preview.NativeLayer} nativeLayer Native layer used to get
14 * Auth2 tokens. 36 * Auth2 tokens.
15 * @param {!print_preview.UserInfo} userInfo User information repository. 37 * @param {!print_preview.UserInfo} userInfo User information repository.
16 * @param {boolean} isInAppKioskMode Whether the print preview is in App 38 * @param {boolean} isInAppKioskMode Whether the print preview is in App
17 * Kiosk mode. 39 * Kiosk mode.
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 /** 82 /**
61 * Stores last received XSRF tokens for each user account. Sent as 83 * Stores last received XSRF tokens for each user account. Sent as
62 * a parameter with every request. 84 * a parameter with every request.
63 * @type {!Object<string>} 85 * @type {!Object<string>}
64 * @private 86 * @private
65 */ 87 */
66 this.xsrfTokens_ = {}; 88 this.xsrfTokens_ = {};
67 89
68 /** 90 /**
69 * Pending requests delayed until we get access token. 91 * Pending requests delayed until we get access token.
70 * @type {!Array<!CloudPrintRequest>} 92 * @type {!Array<!cloudprint.CloudPrintRequest>}
71 * @private 93 * @private
72 */ 94 */
73 this.requestQueue_ = []; 95 this.requestQueue_ = [];
74 96
75 /** 97 /**
76 * Outstanding cloud destination search requests. 98 * Outstanding cloud destination search requests.
77 * @type {!Array<!CloudPrintRequest>} 99 * @type {!Array<!cloudprint.CloudPrintRequest>}
78 * @private 100 * @private
79 */ 101 */
80 this.outstandingCloudSearchRequests_ = []; 102 this.outstandingCloudSearchRequests_ = [];
81 103
82 /** 104 /**
83 * Event tracker used to keep track of native layer events. 105 * Event tracker used to keep track of native layer events.
84 * @type {!EventTracker} 106 * @type {!EventTracker}
85 * @private 107 * @private
86 */ 108 */
87 this.tracker_ = new EventTracker(); 109 this.tracker_ = new EventTracker();
88 110
89 this.addEventListeners_(); 111 this.addEventListeners_();
90 }; 112 }
91
92 /**
93 * Event types dispatched by the interface.
94 * @enum {string}
95 */
96 CloudPrintInterface.EventType = {
97 INVITES_DONE: 'cloudprint.CloudPrintInterface.INVITES_DONE',
98 INVITES_FAILED: 'cloudprint.CloudPrintInterface.INVITES_FAILED',
99 PRINTER_DONE: 'cloudprint.CloudPrintInterface.PRINTER_DONE',
100 PRINTER_FAILED: 'cloudprint.CloudPrintInterface.PRINTER_FAILED',
101 PROCESS_INVITE_DONE: 'cloudprint.CloudPrintInterface.PROCESS_INVITE_DONE',
102 PROCESS_INVITE_FAILED:
103 'cloudprint.CloudPrintInterface.PROCESS_INVITE_FAILED',
104 SEARCH_DONE: 'cloudprint.CloudPrintInterface.SEARCH_DONE',
105 SEARCH_FAILED: 'cloudprint.CloudPrintInterface.SEARCH_FAILED',
106 SUBMIT_DONE: 'cloudprint.CloudPrintInterface.SUBMIT_DONE',
107 SUBMIT_FAILED: 'cloudprint.CloudPrintInterface.SUBMIT_FAILED',
108 };
109 113
110 /** 114 /**
111 * Content type header value for a URL encoded HTTP request. 115 * Content type header value for a URL encoded HTTP request.
112 * @type {string} 116 * @type {string}
113 * @const 117 * @const
114 * @private 118 * @private
115 */ 119 */
116 CloudPrintInterface.URL_ENCODED_CONTENT_TYPE_ = 120 CloudPrintInterface.URL_ENCODED_CONTENT_TYPE_ =
117 'application/x-www-form-urlencoded'; 121 'application/x-www-form-urlencoded';
118 122
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 180
177 /** 181 /**
178 * @return {boolean} Whether a search for cloud destinations is in progress. 182 * @return {boolean} Whether a search for cloud destinations is in progress.
179 */ 183 */
180 get isCloudDestinationSearchInProgress() { 184 get isCloudDestinationSearchInProgress() {
181 return this.outstandingCloudSearchRequests_.length > 0; 185 return this.outstandingCloudSearchRequests_.length > 0;
182 }, 186 },
183 187
184 /** 188 /**
185 * Sends Google Cloud Print search API request. 189 * Sends Google Cloud Print search API request.
186 * @param {string=} opt_account Account the search is sent for. When 190 * @param {?string=} opt_account Account the search is sent for. When
187 * omitted, the search is done on behalf of the primary user. 191 * null or omitted, the search is done on behalf of the primary user.
188 * @param {print_preview.DestinationOrigin=} opt_origin When specified, 192 * @param {print_preview.DestinationOrigin=} opt_origin When specified,
189 * searches destinations for {@code opt_origin} only, otherwise starts 193 * searches destinations for {@code opt_origin} only, otherwise starts
190 * searches for all origins. 194 * searches for all origins.
191 */ 195 */
192 search: function(opt_account, opt_origin) { 196 search: function(opt_account, opt_origin) {
193 var account = opt_account || ''; 197 var account = opt_account || '';
194 var origins = 198 var origins =
195 opt_origin && [opt_origin] || CloudPrintInterface.CLOUD_ORIGINS_; 199 opt_origin && [opt_origin] || CloudPrintInterface.CLOUD_ORIGINS_;
196 if (this.isInAppKioskMode_) { 200 if (this.isInAppKioskMode_) {
197 origins = origins.filter(function(origin) { 201 origins = origins.filter(function(origin) {
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
255 259
256 /** 260 /**
257 * Accepts or rejects printer sharing invitation. 261 * Accepts or rejects printer sharing invitation.
258 * @param {!print_preview.Invitation} invitation Invitation to process. 262 * @param {!print_preview.Invitation} invitation Invitation to process.
259 * @param {boolean} accept Whether to accept this invitation. 263 * @param {boolean} accept Whether to accept this invitation.
260 */ 264 */
261 processInvite: function(invitation, accept) { 265 processInvite: function(invitation, accept) {
262 var params = [ 266 var params = [
263 new HttpParam('printerid', invitation.destination.id), 267 new HttpParam('printerid', invitation.destination.id),
264 new HttpParam('email', invitation.scopeId), 268 new HttpParam('email', invitation.scopeId),
265 new HttpParam('accept', accept), 269 new HttpParam('accept', accept ? 'true' : 'false'),
266 new HttpParam('use_cdd', true), 270 new HttpParam('use_cdd', 'true'),
267 ]; 271 ];
268 this.sendOrQueueRequest_(this.buildRequest_( 272 this.sendOrQueueRequest_(this.buildRequest_(
269 'POST', 273 'POST',
270 'processinvite', 274 'processinvite',
271 params, 275 params,
272 invitation.destination.origin, 276 invitation.destination.origin,
273 invitation.destination.account, 277 invitation.destination.account,
274 this.onProcessInviteDone_.bind(this, invitation, accept))); 278 this.onProcessInviteDone_.bind(this, invitation, accept)));
275 }, 279 },
276 280
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 var params = [ 329 var params = [
326 new HttpParam('printerid', printerId), 330 new HttpParam('printerid', printerId),
327 new HttpParam('use_cdd', 'true'), 331 new HttpParam('use_cdd', 'true'),
328 new HttpParam('printer_connection_status', 'true') 332 new HttpParam('printer_connection_status', 'true')
329 ]; 333 ];
330 this.sendOrQueueRequest_(this.buildRequest_( 334 this.sendOrQueueRequest_(this.buildRequest_(
331 'GET', 335 'GET',
332 'printer', 336 'printer',
333 params, 337 params,
334 origin, 338 origin,
335 account, 339 account || '',
336 this.onPrinterDone_.bind(this, printerId))); 340 this.onPrinterDone_.bind(this, printerId)));
337 }, 341 },
338 342
339 /** 343 /**
340 * Adds event listeners to relevant events. 344 * Adds event listeners to relevant events.
341 * @private 345 * @private
342 */ 346 */
343 addEventListeners_: function() { 347 addEventListeners_: function() {
344 this.tracker_.add( 348 this.tracker_.add(
345 this.nativeLayer_, 349 this.nativeLayer_,
346 print_preview.NativeLayer.EventType.ACCESS_TOKEN_READY, 350 print_preview.NativeLayer.EventType.ACCESS_TOKEN_READY,
347 this.onAccessTokenReady_.bind(this)); 351 this.onAccessTokenReady_.bind(this));
348 }, 352 },
349 353
350 /** 354 /**
351 * Builds request to the Google Cloud Print API. 355 * Builds request to the Google Cloud Print API.
352 * @param {string} method HTTP method of the request. 356 * @param {string} method HTTP method of the request.
353 * @param {string} action Google Cloud Print action to perform. 357 * @param {string} action Google Cloud Print action to perform.
354 * @param {Array<!HttpParam>} params HTTP parameters to include in the 358 * @param {Array<!HttpParam>} params HTTP parameters to include in the
355 * request. 359 * request.
356 * @param {!print_preview.DestinationOrigin} origin Origin for destination. 360 * @param {!print_preview.DestinationOrigin} origin Origin for destination.
357 * @param {?string} account Account the request is sent for. Can be 361 * @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 362 * {@code null} or empty string if the request is not cookie bound or
359 * is sent on behalf of the primary user. 363 * is sent on behalf of the primary user.
360 * @param {function(number, Object, !print_preview.DestinationOrigin)} 364 * @param {function(!cloudprint.CloudPrintRequest)} callback Callback to
361 * callback Callback to invoke when request completes. 365 * invoke when request completes.
362 * @return {!CloudPrintRequest} Partially prepared request. 366 * @return {!cloudprint.CloudPrintRequest} Partially prepared request.
363 * @private 367 * @private
364 */ 368 */
365 buildRequest_: function(method, action, params, origin, account, callback) { 369 buildRequest_: function(method, action, params, origin, account, callback) {
366 var url = this.baseUrl_ + '/' + action + '?xsrf='; 370 var url = this.baseUrl_ + '/' + action + '?xsrf=';
367 if (origin == print_preview.DestinationOrigin.COOKIES) { 371 if (origin == print_preview.DestinationOrigin.COOKIES) {
368 var xsrfToken = this.xsrfTokens_[account]; 372 var xsrfToken = this.xsrfTokens_[account];
369 if (!xsrfToken) { 373 if (!xsrfToken) {
370 // TODO(rltoscano): Should throw an error if not a read-only action or 374 // TODO(rltoscano): Should throw an error if not a read-only action or
371 // issue an xsrf token request. 375 // issue an xsrf token request.
372 } else { 376 } else {
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 } 408 }
405 409
406 var xhr = new XMLHttpRequest(); 410 var xhr = new XMLHttpRequest();
407 xhr.open(method, url, true); 411 xhr.open(method, url, true);
408 xhr.withCredentials = 412 xhr.withCredentials =
409 (origin == print_preview.DestinationOrigin.COOKIES); 413 (origin == print_preview.DestinationOrigin.COOKIES);
410 for (var header in headers) { 414 for (var header in headers) {
411 xhr.setRequestHeader(header, headers[header]); 415 xhr.setRequestHeader(header, headers[header]);
412 } 416 }
413 417
414 return new CloudPrintRequest(xhr, body, origin, account, callback); 418 return new cloudprint.CloudPrintRequest(xhr, body, origin, account,
419 callback);
415 }, 420 },
416 421
417 /** 422 /**
418 * Sends a request to the Google Cloud Print API or queues if it needs to 423 * Sends a request to the Google Cloud Print API or queues if it needs to
419 * wait OAuth2 access token. 424 * wait OAuth2 access token.
420 * @param {!CloudPrintRequest} request Request to send or queue. 425 * @param {!cloudprint.CloudPrintRequest} request Request to send or queue.
421 * @private 426 * @private
422 */ 427 */
423 sendOrQueueRequest_: function(request) { 428 sendOrQueueRequest_: function(request) {
424 if (request.origin == print_preview.DestinationOrigin.COOKIES) { 429 if (request.origin == print_preview.DestinationOrigin.COOKIES) {
425 return this.sendRequest_(request); 430 return this.sendRequest_(request);
426 } else { 431 } else {
427 this.requestQueue_.push(request); 432 this.requestQueue_.push(request);
428 this.nativeLayer_.startGetAccessToken(request.origin); 433 this.nativeLayer_.startGetAccessToken(request.origin);
429 } 434 }
430 }, 435 },
431 436
432 /** 437 /**
433 * Sends a request to the Google Cloud Print API. 438 * Sends a request to the Google Cloud Print API.
434 * @param {!CloudPrintRequest} request Request to send. 439 * @param {!cloudprint.CloudPrintRequest} request Request to send.
435 * @private 440 * @private
436 */ 441 */
437 sendRequest_: function(request) { 442 sendRequest_: function(request) {
438 request.xhr.onreadystatechange = 443 request.xhr.onreadystatechange =
439 this.onReadyStateChange_.bind(this, request); 444 this.onReadyStateChange_.bind(this, request);
440 request.xhr.send(request.body); 445 request.xhr.send(request.body);
441 }, 446 },
442 447
443 /** 448 /**
444 * Creates a Google Cloud Print interface error that is ready to dispatch. 449 * Creates a Google Cloud Print interface error that is ready to dispatch.
445 * @param {!CloudPrintInterface.EventType} type Type of the error. 450 * @param {!cloudprint.CloudPrintInterfaceEventType} type Type of the
446 * @param {!CloudPrintRequest} request Request that has been completed. 451 * error.
452 * @param {!cloudprint.CloudPrintRequest} request Request that has been
453 * completed.
447 * @return {!Event} Google Cloud Print interface error event. 454 * @return {!Event} Google Cloud Print interface error event.
448 * @private 455 * @private
449 */ 456 */
450 createErrorEvent_: function(type, request) { 457 createErrorEvent_: function(type, request) {
451 var errorEvent = new Event(type); 458 var errorEvent = new Event(type);
452 errorEvent.status = request.xhr.status; 459 errorEvent.status = request.xhr.status;
453 if (request.xhr.status == 200) { 460 if (request.xhr.status == 200) {
454 errorEvent.errorCode = request.result['errorCode']; 461 errorEvent.errorCode = request.result['errorCode'];
455 errorEvent.message = request.result['message']; 462 errorEvent.message = request.result['message'];
456 } else { 463 } else {
457 errorEvent.errorCode = 0; 464 errorEvent.errorCode = 0;
458 errorEvent.message = ''; 465 errorEvent.message = '';
459 } 466 }
460 errorEvent.origin = request.origin; 467 errorEvent.origin = request.origin;
461 return errorEvent; 468 return errorEvent;
462 }, 469 },
463 470
464 /** 471 /**
465 * Updates user info and session index from the {@code request} response. 472 * Updates user info and session index from the {@code request} response.
466 * @param {!CloudPrintRequest} request Request to extract user info from. 473 * @param {!cloudprint.CloudPrintRequest} request Request to extract user
474 * info from.
467 * @private 475 * @private
468 */ 476 */
469 setUsers_: function(request) { 477 setUsers_: function(request) {
470 if (request.origin == print_preview.DestinationOrigin.COOKIES) { 478 if (request.origin == print_preview.DestinationOrigin.COOKIES) {
471 var users = request.result['request']['users'] || []; 479 var users = request.result['request']['users'] || [];
472 this.userSessionIndex_ = {}; 480 this.userSessionIndex_ = {};
473 for (var i = 0; i < users.length; i++) { 481 for (var i = 0; i < users.length; i++) {
474 this.userSessionIndex_[users[i]] = i; 482 this.userSessionIndex_[users[i]] = i;
475 } 483 }
476 this.userInfo_.setUsers(request.result['request']['user'], users); 484 this.userInfo_.setUsers(request.result['request']['user'], users);
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
516 request.xhr.abort(); 524 request.xhr.abort();
517 request.callback(request); 525 request.callback(request);
518 } 526 }
519 return false; 527 return false;
520 }, this); 528 }, this);
521 }, 529 },
522 530
523 /** 531 /**
524 * Called when the ready-state of a XML http request changes. 532 * Called when the ready-state of a XML http request changes.
525 * Calls the successCallback with the result or dispatches an ERROR event. 533 * Calls the successCallback with the result or dispatches an ERROR event.
526 * @param {!CloudPrintRequest} request Request that was changed. 534 * @param {!cloudprint.CloudPrintRequest} request Request that was changed.
527 * @private 535 * @private
528 */ 536 */
529 onReadyStateChange_: function(request) { 537 onReadyStateChange_: function(request) {
530 if (request.xhr.readyState == 4) { 538 if (request.xhr.readyState == 4) {
531 if (request.xhr.status == 200) { 539 if (request.xhr.status == 200) {
532 request.result = JSON.parse(request.xhr.responseText); 540 request.result = /** @type {Object} */ (
541 JSON.parse(request.xhr.responseText));
533 if (request.origin == print_preview.DestinationOrigin.COOKIES && 542 if (request.origin == print_preview.DestinationOrigin.COOKIES &&
534 request.result['success']) { 543 request.result['success']) {
535 this.xsrfTokens_[request.result['request']['user']] = 544 this.xsrfTokens_[request.result['request']['user']] =
536 request.result['xsrf_token']; 545 request.result['xsrf_token'];
537 } 546 }
538 } 547 }
539 request.status = request.xhr.status; 548 request.status = request.xhr.status;
540 request.callback(request); 549 request.callback(request);
541 } 550 }
542 }, 551 },
543 552
544 /** 553 /**
545 * Called when the search request completes. 554 * Called when the search request completes.
546 * @param {boolean} isRecent Whether the search request was for recent 555 * @param {boolean} isRecent Whether the search request was for recent
547 * destinations. 556 * destinations.
548 * @param {!CloudPrintRequest} request Request that has been completed. 557 * @param {!cloudprint.CloudPrintRequest} request Request that has been
558 * completed.
549 * @private 559 * @private
550 */ 560 */
551 onSearchDone_: function(isRecent, request) { 561 onSearchDone_: function(isRecent, request) {
552 var lastRequestForThisOrigin = true; 562 var lastRequestForThisOrigin = true;
553 this.outstandingCloudSearchRequests_ = 563 this.outstandingCloudSearchRequests_ =
554 this.outstandingCloudSearchRequests_.filter(function(item) { 564 this.outstandingCloudSearchRequests_.filter(function(item) {
555 if (item != request && item.origin == request.origin) { 565 if (item != request && item.origin == request.origin) {
556 lastRequestForThisOrigin = false; 566 lastRequestForThisOrigin = false;
557 } 567 }
558 return item != request; 568 return item != request;
(...skipping 14 matching lines...) Expand all
573 try { 583 try {
574 printerList.push(cloudprint.CloudDestinationParser.parse( 584 printerList.push(cloudprint.CloudDestinationParser.parse(
575 printerJson, request.origin, activeUser)); 585 printerJson, request.origin, activeUser));
576 } catch (err) { 586 } catch (err) {
577 console.error('Unable to parse cloud print destination: ' + err); 587 console.error('Unable to parse cloud print destination: ' + err);
578 } 588 }
579 }); 589 });
580 // Extract and store users. 590 // Extract and store users.
581 this.setUsers_(request); 591 this.setUsers_(request);
582 // Dispatch SEARCH_DONE event. 592 // Dispatch SEARCH_DONE event.
583 event = new Event(CloudPrintInterface.EventType.SEARCH_DONE); 593 event = new Event(CloudPrintInterfaceEventType.SEARCH_DONE);
584 event.origin = request.origin; 594 event.origin = request.origin;
585 event.printers = printerList; 595 event.printers = printerList;
586 event.isRecent = isRecent; 596 event.isRecent = isRecent;
587 } else { 597 } else {
588 event = this.createErrorEvent_( 598 event = this.createErrorEvent_(
589 CloudPrintInterface.EventType.SEARCH_FAILED, 599 CloudPrintInterfaceEventType.SEARCH_FAILED,
590 request); 600 request);
591 } 601 }
592 event.user = activeUser; 602 event.user = activeUser;
593 event.searchDone = lastRequestForThisOrigin; 603 event.searchDone = lastRequestForThisOrigin;
594 this.dispatchEvent(event); 604 this.dispatchEvent(event);
595 }, 605 },
596 606
597 /** 607 /**
598 * Called when invitations search request completes. 608 * Called when invitations search request completes.
599 * @param {!CloudPrintRequest} request Request that has been completed. 609 * @param {!cloudprint.CloudPrintRequest} request Request that has been
610 * completed.
600 * @private 611 * @private
601 */ 612 */
602 onInvitesDone_: function(request) { 613 onInvitesDone_: function(request) {
603 var event = null; 614 var event = null;
604 var activeUser = 615 var activeUser =
605 (request.result && 616 (request.result &&
606 request.result['request'] && 617 request.result['request'] &&
607 request.result['request']['user']) || ''; 618 request.result['request']['user']) || '';
608 if (request.xhr.status == 200 && request.result['success']) { 619 if (request.xhr.status == 200 && request.result['success']) {
609 // Extract invitations. 620 // Extract invitations.
610 var invitationListJson = request.result['invites'] || []; 621 var invitationListJson = request.result['invites'] || [];
611 var invitationList = []; 622 var invitationList = [];
612 invitationListJson.forEach(function(invitationJson) { 623 invitationListJson.forEach(function(invitationJson) {
613 try { 624 try {
614 invitationList.push(cloudprint.InvitationParser.parse( 625 invitationList.push(cloudprint.InvitationParser.parse(
615 invitationJson, activeUser)); 626 invitationJson, activeUser));
616 } catch (e) { 627 } catch (e) {
617 console.error('Unable to parse invitation: ' + e); 628 console.error('Unable to parse invitation: ' + e);
618 } 629 }
619 }); 630 });
620 // Dispatch INVITES_DONE event. 631 // Dispatch INVITES_DONE event.
621 event = new Event(CloudPrintInterface.EventType.INVITES_DONE); 632 event = new Event(CloudPrintInterfaceEventType.INVITES_DONE);
622 event.invitations = invitationList; 633 event.invitations = invitationList;
623 } else { 634 } else {
624 event = this.createErrorEvent_( 635 event = this.createErrorEvent_(
625 CloudPrintInterface.EventType.INVITES_FAILED, request); 636 CloudPrintInterfaceEventType.INVITES_FAILED, request);
626 } 637 }
627 event.user = activeUser; 638 event.user = activeUser;
628 this.dispatchEvent(event); 639 this.dispatchEvent(event);
629 }, 640 },
630 641
631 /** 642 /**
632 * Called when invitation processing request completes. 643 * Called when invitation processing request completes.
633 * @param {!print_preview.Invitation} invitation Processed invitation. 644 * @param {!print_preview.Invitation} invitation Processed invitation.
634 * @param {boolean} accept Whether this invitation was accepted or rejected. 645 * @param {boolean} accept Whether this invitation was accepted or rejected.
635 * @param {!CloudPrintRequest} request Request that has been completed. 646 * @param {!cloudprint.CloudPrintRequest} request Request that has been
647 * completed.
636 * @private 648 * @private
637 */ 649 */
638 onProcessInviteDone_: function(invitation, accept, request) { 650 onProcessInviteDone_: function(invitation, accept, request) {
639 var event = null; 651 var event = null;
640 var activeUser = 652 var activeUser =
641 (request.result && 653 (request.result &&
642 request.result['request'] && 654 request.result['request'] &&
643 request.result['request']['user']) || ''; 655 request.result['request']['user']) || '';
644 if (request.xhr.status == 200 && request.result['success']) { 656 if (request.xhr.status == 200 && request.result['success']) {
645 event = new Event(CloudPrintInterface.EventType.PROCESS_INVITE_DONE); 657 event = new Event(CloudPrintInterfaceEventType.PROCESS_INVITE_DONE);
646 if (accept) { 658 if (accept) {
647 try { 659 try {
648 event.printer = cloudprint.CloudDestinationParser.parse( 660 event.printer = cloudprint.CloudDestinationParser.parse(
649 request.result['printer'], request.origin, activeUser); 661 request.result['printer'], request.origin, activeUser);
650 } catch (e) { 662 } catch (e) {
651 console.error('Failed to parse cloud print destination: ' + e); 663 console.error('Failed to parse cloud print destination: ' + e);
652 } 664 }
653 } 665 }
654 } else { 666 } else {
655 event = this.createErrorEvent_( 667 event = this.createErrorEvent_(
656 CloudPrintInterface.EventType.PROCESS_INVITE_FAILED, request); 668 CloudPrintInterfaceEventType.PROCESS_INVITE_FAILED, request);
657 } 669 }
658 event.invitation = invitation; 670 event.invitation = invitation;
659 event.accept = accept; 671 event.accept = accept;
660 event.user = activeUser; 672 event.user = activeUser;
661 this.dispatchEvent(event); 673 this.dispatchEvent(event);
662 }, 674 },
663 675
664 /** 676 /**
665 * Called when the submit request completes. 677 * Called when the submit request completes.
666 * @param {!CloudPrintRequest} request Request that has been completed. 678 * @param {!cloudprint.CloudPrintRequest} request Request that has been
679 * completed.
667 * @private 680 * @private
668 */ 681 */
669 onSubmitDone_: function(request) { 682 onSubmitDone_: function(request) {
670 if (request.xhr.status == 200 && request.result['success']) { 683 if (request.xhr.status == 200 && request.result['success']) {
671 var submitDoneEvent = new Event( 684 var submitDoneEvent = new Event(
672 CloudPrintInterface.EventType.SUBMIT_DONE); 685 CloudPrintInterfaceEventType.SUBMIT_DONE);
673 submitDoneEvent.jobId = request.result['job']['id']; 686 submitDoneEvent.jobId = request.result['job']['id'];
674 this.dispatchEvent(submitDoneEvent); 687 this.dispatchEvent(submitDoneEvent);
675 } else { 688 } else {
676 var errorEvent = this.createErrorEvent_( 689 var errorEvent = this.createErrorEvent_(
677 CloudPrintInterface.EventType.SUBMIT_FAILED, request); 690 CloudPrintInterfaceEventType.SUBMIT_FAILED, request);
678 this.dispatchEvent(errorEvent); 691 this.dispatchEvent(errorEvent);
679 } 692 }
680 }, 693 },
681 694
682 /** 695 /**
683 * Called when the printer request completes. 696 * Called when the printer request completes.
684 * @param {string} destinationId ID of the destination that was looked up. 697 * @param {string} destinationId ID of the destination that was looked up.
685 * @param {!CloudPrintRequest} request Request that has been completed. 698 * @param {!cloudprint.CloudPrintRequest} request Request that has been
699 * completed.
686 * @private 700 * @private
687 */ 701 */
688 onPrinterDone_: function(destinationId, request) { 702 onPrinterDone_: function(destinationId, request) {
689 // Special handling of the first printer request. It does not matter at 703 // Special handling of the first printer request. It does not matter at
690 // this point, whether printer was found or not. 704 // this point, whether printer was found or not.
691 if (request.origin == print_preview.DestinationOrigin.COOKIES && 705 if (request.origin == print_preview.DestinationOrigin.COOKIES &&
692 request.result && 706 request.result &&
693 request.account && 707 request.account &&
694 request.result['request']['user'] && 708 request.result['request']['user'] &&
695 request.result['request']['users'] && 709 request.result['request']['users'] &&
(...skipping 22 matching lines...) Expand all
718 var printer; 732 var printer;
719 try { 733 try {
720 printer = cloudprint.CloudDestinationParser.parse( 734 printer = cloudprint.CloudDestinationParser.parse(
721 printerJson, request.origin, activeUser); 735 printerJson, request.origin, activeUser);
722 } catch (err) { 736 } catch (err) {
723 console.error('Failed to parse cloud print destination: ' + 737 console.error('Failed to parse cloud print destination: ' +
724 JSON.stringify(printerJson)); 738 JSON.stringify(printerJson));
725 return; 739 return;
726 } 740 }
727 var printerDoneEvent = 741 var printerDoneEvent =
728 new Event(CloudPrintInterface.EventType.PRINTER_DONE); 742 new Event(CloudPrintInterfaceEventType.PRINTER_DONE);
729 printerDoneEvent.printer = printer; 743 printerDoneEvent.printer = printer;
730 this.dispatchEvent(printerDoneEvent); 744 this.dispatchEvent(printerDoneEvent);
731 } else { 745 } else {
732 var errorEvent = this.createErrorEvent_( 746 var errorEvent = this.createErrorEvent_(
733 CloudPrintInterface.EventType.PRINTER_FAILED, request); 747 CloudPrintInterfaceEventType.PRINTER_FAILED, request);
734 errorEvent.destinationId = destinationId; 748 errorEvent.destinationId = destinationId;
735 errorEvent.destinationOrigin = request.origin; 749 errorEvent.destinationOrigin = request.origin;
736 this.dispatchEvent(errorEvent); 750 this.dispatchEvent(errorEvent);
737 } 751 }
738 }, 752 },
739 }; 753 };
740 754
741 /** 755 /**
742 * Data structure that holds data for Cloud Print requests. 756 * Data structure that holds data for Cloud Print requests.
743 * @param {!XMLHttpRequest} xhr Partially prepared http request. 757 * @param {!XMLHttpRequest} xhr Partially prepared http request.
744 * @param {string} body Data to send with POST requests. 758 * @param {string} body Data to send with POST requests.
745 * @param {!print_preview.DestinationOrigin} origin Origin for destination. 759 * @param {!print_preview.DestinationOrigin} origin Origin for destination.
746 * @param {?string} account Account the request is sent for. Can be 760 * @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 761 * {@code null} or empty string if the request is not cookie bound or
748 * is sent on behalf of the primary user. 762 * is sent on behalf of the primary user.
749 * @param {function(!CloudPrintRequest)} callback Callback to invoke when 763 * @param {function(!cloudprint.CloudPrintRequest)} callback Callback to
750 * request completes. 764 * invoke when request completes.
751 * @constructor 765 * @constructor
752 */ 766 */
753 function CloudPrintRequest(xhr, body, origin, account, callback) { 767 function CloudPrintRequest(xhr, body, origin, account, callback) {
754 /** 768 /**
755 * Partially prepared http request. 769 * Partially prepared http request.
756 * @type {!XMLHttpRequest} 770 * @type {!XMLHttpRequest}
757 */ 771 */
758 this.xhr = xhr; 772 this.xhr = xhr;
759 773
760 /** 774 /**
761 * Data to send with POST requests. 775 * Data to send with POST requests.
762 * @type {string} 776 * @type {string}
763 */ 777 */
764 this.body = body; 778 this.body = body;
765 779
766 /** 780 /**
767 * Origin for destination. 781 * Origin for destination.
768 * @type {!print_preview.DestinationOrigin} 782 * @type {!print_preview.DestinationOrigin}
769 */ 783 */
770 this.origin = origin; 784 this.origin = origin;
771 785
772 /** 786 /**
773 * User account this request is expected to be executed for. 787 * User account this request is expected to be executed for.
774 * @type {?string} 788 * @type {?string}
775 */ 789 */
776 this.account = account; 790 this.account = account;
777 791
778 /** 792 /**
779 * Callback to invoke when request completes. 793 * Callback to invoke when request completes.
780 * @type {function(!CloudPrintRequest)} 794 * @type {function(!cloudprint.CloudPrintRequest)}
781 */ 795 */
782 this.callback = callback; 796 this.callback = callback;
783 797
784 /** 798 /**
785 * Result for requests. 799 * Result for requests.
786 * @type {Object} JSON response. 800 * @type {Object} JSON response.
787 */ 801 */
788 this.result = null; 802 this.result = null;
789 }; 803 }
790 804
791 /** 805 /**
792 * Data structure that represents an HTTP parameter. 806 * Data structure that represents an HTTP parameter.
793 * @param {string} name Name of the parameter. 807 * @param {string} name Name of the parameter.
794 * @param {string} value Value of the parameter. 808 * @param {string} value Value of the parameter.
795 * @constructor 809 * @constructor
796 */ 810 */
797 function HttpParam(name, value) { 811 function HttpParam(name, value) {
798 /** 812 /**
799 * Name of the parameter. 813 * Name of the parameter.
800 * @type {string} 814 * @type {string}
801 */ 815 */
802 this.name = name; 816 this.name = name;
803 817
804 /** 818 /**
805 * Name of the value. 819 * Name of the value.
806 * @type {string} 820 * @type {string}
807 */ 821 */
808 this.value = value; 822 this.value = value;
809 }; 823 }
810 824
811 // Export 825 // Export
812 return { 826 return {
813 CloudPrintInterface: CloudPrintInterface 827 CloudPrintInterface: CloudPrintInterface,
828 CloudPrintRequest: CloudPrintRequest
814 }; 829 };
815 }); 830 });
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/resources/print_preview/common/overlay.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698