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

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

Issue 2939273002: DO NOT SUBMIT: what chrome/browser/resources/ could eventually look like with clang-format (Closed)
Patch Set: Created 3 years, 6 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
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'); 5 cr.exportPath('cloudprint');
6 6
7 /** 7 /**
8 * Event types dispatched by the cloudprint interface. 8 * Event types dispatched by the cloudprint interface.
9 * @enum {string} 9 * @enum {string}
10 */ 10 */
11 cloudprint.CloudPrintInterfaceEventType = { 11 cloudprint.CloudPrintInterfaceEventType = {
12 INVITES_DONE: 'cloudprint.CloudPrintInterface.INVITES_DONE', 12 INVITES_DONE: 'cloudprint.CloudPrintInterface.INVITES_DONE',
13 INVITES_FAILED: 'cloudprint.CloudPrintInterface.INVITES_FAILED', 13 INVITES_FAILED: 'cloudprint.CloudPrintInterface.INVITES_FAILED',
14 PRINTER_DONE: 'cloudprint.CloudPrintInterface.PRINTER_DONE', 14 PRINTER_DONE: 'cloudprint.CloudPrintInterface.PRINTER_DONE',
15 PRINTER_FAILED: 'cloudprint.CloudPrintInterface.PRINTER_FAILED', 15 PRINTER_FAILED: 'cloudprint.CloudPrintInterface.PRINTER_FAILED',
16 PROCESS_INVITE_DONE: 'cloudprint.CloudPrintInterface.PROCESS_INVITE_DONE', 16 PROCESS_INVITE_DONE: 'cloudprint.CloudPrintInterface.PROCESS_INVITE_DONE',
17 PROCESS_INVITE_FAILED: 17 PROCESS_INVITE_FAILED: 'cloudprint.CloudPrintInterface.PROCESS_INVITE_FAILED',
18 'cloudprint.CloudPrintInterface.PROCESS_INVITE_FAILED',
19 SEARCH_DONE: 'cloudprint.CloudPrintInterface.SEARCH_DONE', 18 SEARCH_DONE: 'cloudprint.CloudPrintInterface.SEARCH_DONE',
20 SEARCH_FAILED: 'cloudprint.CloudPrintInterface.SEARCH_FAILED', 19 SEARCH_FAILED: 'cloudprint.CloudPrintInterface.SEARCH_FAILED',
21 SUBMIT_DONE: 'cloudprint.CloudPrintInterface.SUBMIT_DONE', 20 SUBMIT_DONE: 'cloudprint.CloudPrintInterface.SUBMIT_DONE',
22 SUBMIT_FAILED: 'cloudprint.CloudPrintInterface.SUBMIT_FAILED', 21 SUBMIT_FAILED: 'cloudprint.CloudPrintInterface.SUBMIT_FAILED',
23 }; 22 };
24 23
25 cr.define('cloudprint', function() { 24 cr.define('cloudprint', function() {
26 'use strict'; 25 'use strict';
27 26
28 var CloudPrintInterfaceEventType = cloudprint.CloudPrintInterfaceEventType; 27 var CloudPrintInterfaceEventType = cloudprint.CloudPrintInterfaceEventType;
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 * @const 145 * @const
147 * @private 146 * @private
148 */ 147 */
149 CloudPrintInterface.VERSION_REGEXP_ = /.*Chrome\/([\d\.]+)/i; 148 CloudPrintInterface.VERSION_REGEXP_ = /.*Chrome\/([\d\.]+)/i;
150 149
151 /** 150 /**
152 * Enumeration of JSON response fields from Google Cloud Print API. 151 * Enumeration of JSON response fields from Google Cloud Print API.
153 * @enum {string} 152 * @enum {string}
154 * @private 153 * @private
155 */ 154 */
156 CloudPrintInterface.JsonFields_ = { 155 CloudPrintInterface.JsonFields_ = {PRINTER: 'printer'};
157 PRINTER: 'printer'
158 };
159 156
160 /** 157 /**
161 * Could Print origins used to search printers. 158 * Could Print origins used to search printers.
162 * @type {!Array<!print_preview.DestinationOrigin>} 159 * @type {!Array<!print_preview.DestinationOrigin>}
163 * @const 160 * @const
164 * @private 161 * @private
165 */ 162 */
166 CloudPrintInterface.CLOUD_ORIGINS_ = [ 163 CloudPrintInterface.CLOUD_ORIGINS_ = [
167 print_preview.DestinationOrigin.COOKIES, 164 print_preview.DestinationOrigin.COOKIES,
168 print_preview.DestinationOrigin.DEVICE 165 print_preview.DestinationOrigin.DEVICE
169 // TODO(vitalybuka): Enable when implemented. 166 // TODO(vitalybuka): Enable when implemented.
170 // ready print_preview.DestinationOrigin.PROFILE 167 // ready print_preview.DestinationOrigin.PROFILE
171 ]; 168 ];
172 169
173 CloudPrintInterface.prototype = { 170 CloudPrintInterface.prototype = {
174 __proto__: cr.EventTarget.prototype, 171 __proto__: cr.EventTarget.prototype,
175 172
176 /** @return {string} Base URL of the Google Cloud Print service. */ 173 /** @return {string} Base URL of the Google Cloud Print service. */
177 get baseUrl() { 174 get baseUrl() {
178 return this.baseUrl_; 175 return this.baseUrl_;
179 }, 176 },
180 177
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 * @param {string} account Account the search is sent for. It matters for 211 * @param {string} account Account the search is sent for. It matters for
215 * COOKIES origin only, and can be empty (sent on behalf of the primary 212 * COOKIES origin only, and can be empty (sent on behalf of the primary
216 * user in this case). 213 * user in this case).
217 * @param {!Array<!print_preview.DestinationOrigin>} origins Origins to 214 * @param {!Array<!print_preview.DestinationOrigin>} origins Origins to
218 * search printers for. 215 * search printers for.
219 * @private 216 * @private
220 */ 217 */
221 search_: function(isRecent, account, origins) { 218 search_: function(isRecent, account, origins) {
222 var params = [ 219 var params = [
223 new HttpParam('connection_status', 'ALL'), 220 new HttpParam('connection_status', 'ALL'),
224 new HttpParam('client', 'chrome'), 221 new HttpParam('client', 'chrome'), new HttpParam('use_cdd', 'true')
225 new HttpParam('use_cdd', 'true')
226 ]; 222 ];
227 if (isRecent) { 223 if (isRecent) {
228 params.push(new HttpParam('q', '^recent')); 224 params.push(new HttpParam('q', '^recent'));
229 } 225 }
230 origins.forEach(function(origin) { 226 origins.forEach(function(origin) {
231 var cpRequest = this.buildRequest_( 227 var cpRequest = this.buildRequest_(
232 'GET', 228 'GET', 'search', params, origin, account,
233 'search',
234 params,
235 origin,
236 account,
237 this.onSearchDone_.bind(this, isRecent)); 229 this.onSearchDone_.bind(this, isRecent));
238 this.outstandingCloudSearchRequests_.push(cpRequest); 230 this.outstandingCloudSearchRequests_.push(cpRequest);
239 this.sendOrQueueRequest_(cpRequest); 231 this.sendOrQueueRequest_(cpRequest);
240 }, this); 232 }, this);
241 }, 233 },
242 234
243 /** 235 /**
244 * Sends Google Cloud Print printer sharing invitations API requests. 236 * Sends Google Cloud Print printer sharing invitations API requests.
245 * @param {string} account Account the request is sent for. 237 * @param {string} account Account the request is sent for.
246 */ 238 */
247 invites: function(account) { 239 invites: function(account) {
248 var params = [ 240 var params = [
249 new HttpParam('client', 'chrome'), 241 new HttpParam('client', 'chrome'),
250 ]; 242 ];
251 this.sendOrQueueRequest_(this.buildRequest_( 243 this.sendOrQueueRequest_(this.buildRequest_(
252 'GET', 244 'GET', 'invites', params, print_preview.DestinationOrigin.COOKIES,
253 'invites', 245 account, this.onInvitesDone_.bind(this)));
254 params,
255 print_preview.DestinationOrigin.COOKIES,
256 account,
257 this.onInvitesDone_.bind(this)));
258 }, 246 },
259 247
260 /** 248 /**
261 * Accepts or rejects printer sharing invitation. 249 * Accepts or rejects printer sharing invitation.
262 * @param {!print_preview.Invitation} invitation Invitation to process. 250 * @param {!print_preview.Invitation} invitation Invitation to process.
263 * @param {boolean} accept Whether to accept this invitation. 251 * @param {boolean} accept Whether to accept this invitation.
264 */ 252 */
265 processInvite: function(invitation, accept) { 253 processInvite: function(invitation, accept) {
266 var params = [ 254 var params = [
267 new HttpParam('printerid', invitation.destination.id), 255 new HttpParam('printerid', invitation.destination.id),
268 new HttpParam('email', invitation.scopeId), 256 new HttpParam('email', invitation.scopeId),
269 new HttpParam('accept', accept ? 'true' : 'false'), 257 new HttpParam('accept', accept ? 'true' : 'false'),
270 new HttpParam('use_cdd', 'true'), 258 new HttpParam('use_cdd', 'true'),
271 ]; 259 ];
272 this.sendOrQueueRequest_(this.buildRequest_( 260 this.sendOrQueueRequest_(this.buildRequest_(
273 'POST', 261 'POST', 'processinvite', params, invitation.destination.origin,
274 'processinvite',
275 params,
276 invitation.destination.origin,
277 invitation.destination.account, 262 invitation.destination.account,
278 this.onProcessInviteDone_.bind(this, invitation, accept))); 263 this.onProcessInviteDone_.bind(this, invitation, accept)));
279 }, 264 },
280 265
281 /** 266 /**
282 * Sends a Google Cloud Print submit API request. 267 * Sends a Google Cloud Print submit API request.
283 * @param {!print_preview.Destination} destination Cloud destination to 268 * @param {!print_preview.Destination} destination Cloud destination to
284 * print to. 269 * print to.
285 * @param {!print_preview.PrintTicketStore} printTicketStore Contains the 270 * @param {!print_preview.PrintTicketStore} printTicketStore Contains the
286 * print ticket to print. 271 * print ticket to print.
287 * @param {!print_preview.DocumentInfo} documentInfo Document data model. 272 * @param {!print_preview.DocumentInfo} documentInfo Document data model.
288 * @param {string} data Base64 encoded data of the document. 273 * @param {string} data Base64 encoded data of the document.
289 */ 274 */
290 submit: function(destination, printTicketStore, documentInfo, data) { 275 submit: function(destination, printTicketStore, documentInfo, data) {
291 var result = 276 var result =
292 CloudPrintInterface.VERSION_REGEXP_.exec(navigator.userAgent); 277 CloudPrintInterface.VERSION_REGEXP_.exec(navigator.userAgent);
293 var chromeVersion = 'unknown'; 278 var chromeVersion = 'unknown';
294 if (result && result.length == 2) { 279 if (result && result.length == 2) {
295 chromeVersion = result[1]; 280 chromeVersion = result[1];
296 } 281 }
297 var params = [ 282 var params = [
298 new HttpParam('printerid', destination.id), 283 new HttpParam('printerid', destination.id),
299 new HttpParam('contentType', 'dataUrl'), 284 new HttpParam('contentType', 'dataUrl'),
300 new HttpParam('title', documentInfo.title), 285 new HttpParam('title', documentInfo.title),
301 new HttpParam('ticket', 286 new HttpParam(
302 printTicketStore.createPrintTicket(destination)), 287 'ticket', printTicketStore.createPrintTicket(destination)),
303 new HttpParam('content', 'data:application/pdf;base64,' + data), 288 new HttpParam('content', 'data:application/pdf;base64,' + data),
304 new HttpParam('tag', 289 new HttpParam('tag', '__google__chrome_version=' + chromeVersion),
305 '__google__chrome_version=' + chromeVersion),
306 new HttpParam('tag', '__google__os=' + navigator.platform) 290 new HttpParam('tag', '__google__os=' + navigator.platform)
307 ]; 291 ];
308 var cpRequest = this.buildRequest_( 292 var cpRequest = this.buildRequest_(
309 'POST', 293 'POST', 'submit', params, destination.origin, destination.account,
310 'submit',
311 params,
312 destination.origin,
313 destination.account,
314 this.onSubmitDone_.bind(this)); 294 this.onSubmitDone_.bind(this));
315 this.sendOrQueueRequest_(cpRequest); 295 this.sendOrQueueRequest_(cpRequest);
316 }, 296 },
317 297
318 /** 298 /**
319 * Sends a Google Cloud Print printer API request. 299 * Sends a Google Cloud Print printer API request.
320 * @param {string} printerId ID of the printer to lookup. 300 * @param {string} printerId ID of the printer to lookup.
321 * @param {!print_preview.DestinationOrigin} origin Origin of the printer. 301 * @param {!print_preview.DestinationOrigin} origin Origin of the printer.
322 * @param {string=} account Account this printer is registered for. When 302 * @param {string=} account Account this printer is registered for. When
323 * provided for COOKIES {@code origin}, and users sessions are still not 303 * provided for COOKIES {@code origin}, and users sessions are still not
324 * known, will be checked against the response (both success and failure 304 * known, will be checked against the response (both success and failure
325 * to get printer) and, if the active user account is not the one 305 * to get printer) and, if the active user account is not the one
326 * requested, {@code account} is activated and printer request reissued. 306 * requested, {@code account} is activated and printer request reissued.
327 */ 307 */
328 printer: function(printerId, origin, account) { 308 printer: function(printerId, origin, account) {
329 var params = [ 309 var params = [
330 new HttpParam('printerid', printerId), 310 new HttpParam('printerid', printerId), new HttpParam('use_cdd', 'true'),
331 new HttpParam('use_cdd', 'true'),
332 new HttpParam('printer_connection_status', 'true') 311 new HttpParam('printer_connection_status', 'true')
333 ]; 312 ];
334 this.sendOrQueueRequest_(this.buildRequest_( 313 this.sendOrQueueRequest_(this.buildRequest_(
335 'GET', 314 'GET', 'printer', params, origin, account || '',
336 'printer',
337 params,
338 origin,
339 account || '',
340 this.onPrinterDone_.bind(this, printerId))); 315 this.onPrinterDone_.bind(this, printerId)));
341 }, 316 },
342 317
343 /** 318 /**
344 * Adds event listeners to relevant events. 319 * Adds event listeners to relevant events.
345 * @private 320 * @private
346 */ 321 */
347 addEventListeners_: function() { 322 addEventListeners_: function() {
348 this.tracker_.add( 323 this.tracker_.add(
349 this.nativeLayer_.getEventTarget(), 324 this.nativeLayer_.getEventTarget(),
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
402 var headers = {}; 377 var headers = {};
403 headers['X-CloudPrint-Proxy'] = 'ChromePrintPreview'; 378 headers['X-CloudPrint-Proxy'] = 'ChromePrintPreview';
404 if (method == 'GET') { 379 if (method == 'GET') {
405 headers['Content-Type'] = CloudPrintInterface.URL_ENCODED_CONTENT_TYPE_; 380 headers['Content-Type'] = CloudPrintInterface.URL_ENCODED_CONTENT_TYPE_;
406 } else if (method == 'POST') { 381 } else if (method == 'POST') {
407 headers['Content-Type'] = CloudPrintInterface.MULTIPART_CONTENT_TYPE_; 382 headers['Content-Type'] = CloudPrintInterface.MULTIPART_CONTENT_TYPE_;
408 } 383 }
409 384
410 var xhr = new XMLHttpRequest(); 385 var xhr = new XMLHttpRequest();
411 xhr.open(method, url, true); 386 xhr.open(method, url, true);
412 xhr.withCredentials = 387 xhr.withCredentials = (origin == print_preview.DestinationOrigin.COOKIES);
413 (origin == print_preview.DestinationOrigin.COOKIES);
414 for (var header in headers) { 388 for (var header in headers) {
415 xhr.setRequestHeader(header, headers[header]); 389 xhr.setRequestHeader(header, headers[header]);
416 } 390 }
417 391
418 return new cloudprint.CloudPrintRequest(xhr, body, origin, account, 392 return new cloudprint.CloudPrintRequest(
419 callback); 393 xhr, body, origin, account, callback);
420 }, 394 },
421 395
422 /** 396 /**
423 * Sends a request to the Google Cloud Print API or queues if it needs to 397 * Sends a request to the Google Cloud Print API or queues if it needs to
424 * wait OAuth2 access token. 398 * wait OAuth2 access token.
425 * @param {!cloudprint.CloudPrintRequest} request Request to send or queue. 399 * @param {!cloudprint.CloudPrintRequest} request Request to send or queue.
426 * @private 400 * @private
427 */ 401 */
428 sendOrQueueRequest_: function(request) { 402 sendOrQueueRequest_: function(request) {
429 if (request.origin == print_preview.DestinationOrigin.COOKIES) { 403 if (request.origin == print_preview.DestinationOrigin.COOKIES) {
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
509 */ 483 */
510 onAccessTokenReady_: function(event) { 484 onAccessTokenReady_: function(event) {
511 // TODO(vitalybuka): remove when other Origins implemented. 485 // TODO(vitalybuka): remove when other Origins implemented.
512 assert(event.authType == print_preview.DestinationOrigin.DEVICE); 486 assert(event.authType == print_preview.DestinationOrigin.DEVICE);
513 this.requestQueue_ = this.requestQueue_.filter(function(request) { 487 this.requestQueue_ = this.requestQueue_.filter(function(request) {
514 assert(request.origin == print_preview.DestinationOrigin.DEVICE); 488 assert(request.origin == print_preview.DestinationOrigin.DEVICE);
515 if (request.origin != event.authType) { 489 if (request.origin != event.authType) {
516 return true; 490 return true;
517 } 491 }
518 if (event.accessToken) { 492 if (event.accessToken) {
519 request.xhr.setRequestHeader('Authorization', 493 request.xhr.setRequestHeader(
520 'Bearer ' + event.accessToken); 494 'Authorization', 'Bearer ' + event.accessToken);
521 this.sendRequest_(request); 495 this.sendRequest_(request);
522 } else { // No valid token. 496 } else { // No valid token.
523 // Without abort status does not exist. 497 // Without abort status does not exist.
524 request.xhr.abort(); 498 request.xhr.abort();
525 request.callback(request); 499 request.callback(request);
526 } 500 }
527 return false; 501 return false;
528 }, this); 502 }, this);
529 }, 503 },
530 504
531 /** 505 /**
532 * Called when the ready-state of a XML http request changes. 506 * Called when the ready-state of a XML http request changes.
533 * Calls the successCallback with the result or dispatches an ERROR event. 507 * Calls the successCallback with the result or dispatches an ERROR event.
534 * @param {!cloudprint.CloudPrintRequest} request Request that was changed. 508 * @param {!cloudprint.CloudPrintRequest} request Request that was changed.
535 * @private 509 * @private
536 */ 510 */
537 onReadyStateChange_: function(request) { 511 onReadyStateChange_: function(request) {
538 if (request.xhr.readyState == 4) { 512 if (request.xhr.readyState == 4) {
539 if (request.xhr.status == 200) { 513 if (request.xhr.status == 200) {
540 request.result = /** @type {Object} */ ( 514 request.result =
541 JSON.parse(request.xhr.responseText)); 515 /** @type {Object} */ (JSON.parse(request.xhr.responseText));
542 if (request.origin == print_preview.DestinationOrigin.COOKIES && 516 if (request.origin == print_preview.DestinationOrigin.COOKIES &&
543 request.result['success']) { 517 request.result['success']) {
544 this.xsrfTokens_[request.result['request']['user']] = 518 this.xsrfTokens_[request.result['request']['user']] =
545 request.result['xsrf_token']; 519 request.result['xsrf_token'];
546 } 520 }
547 } 521 }
548 request.status = request.xhr.status; 522 request.status = request.xhr.status;
549 request.callback(request); 523 request.callback(request);
550 } 524 }
551 }, 525 },
(...skipping 10 matching lines...) Expand all
562 var lastRequestForThisOrigin = true; 536 var lastRequestForThisOrigin = true;
563 this.outstandingCloudSearchRequests_ = 537 this.outstandingCloudSearchRequests_ =
564 this.outstandingCloudSearchRequests_.filter(function(item) { 538 this.outstandingCloudSearchRequests_.filter(function(item) {
565 if (item != request && item.origin == request.origin) { 539 if (item != request && item.origin == request.origin) {
566 lastRequestForThisOrigin = false; 540 lastRequestForThisOrigin = false;
567 } 541 }
568 return item != request; 542 return item != request;
569 }); 543 });
570 var activeUser = ''; 544 var activeUser = '';
571 if (request.origin == print_preview.DestinationOrigin.COOKIES) { 545 if (request.origin == print_preview.DestinationOrigin.COOKIES) {
572 activeUser = 546 activeUser = request.result && request.result['request'] &&
573 request.result &&
574 request.result['request'] &&
575 request.result['request']['user']; 547 request.result['request']['user'];
576 } 548 }
577 var event = null; 549 var event = null;
578 if (request.xhr.status == 200 && request.result['success']) { 550 if (request.xhr.status == 200 && request.result['success']) {
579 // Extract printers. 551 // Extract printers.
580 var printerListJson = request.result['printers'] || []; 552 var printerListJson = request.result['printers'] || [];
581 var printerList = []; 553 var printerList = [];
582 printerListJson.forEach(function(printerJson) { 554 printerListJson.forEach(function(printerJson) {
583 try { 555 try {
584 printerList.push(cloudprint.CloudDestinationParser.parse( 556 printerList.push(cloudprint.CloudDestinationParser.parse(
585 printerJson, request.origin, activeUser)); 557 printerJson, request.origin, activeUser));
586 } catch (err) { 558 } catch (err) {
587 console.error('Unable to parse cloud print destination: ' + err); 559 console.error('Unable to parse cloud print destination: ' + err);
588 } 560 }
589 }); 561 });
590 // Extract and store users. 562 // Extract and store users.
591 this.setUsers_(request); 563 this.setUsers_(request);
592 // Dispatch SEARCH_DONE event. 564 // Dispatch SEARCH_DONE event.
593 event = new Event(CloudPrintInterfaceEventType.SEARCH_DONE); 565 event = new Event(CloudPrintInterfaceEventType.SEARCH_DONE);
594 event.origin = request.origin; 566 event.origin = request.origin;
595 event.printers = printerList; 567 event.printers = printerList;
596 event.isRecent = isRecent; 568 event.isRecent = isRecent;
597 } else { 569 } else {
598 event = this.createErrorEvent_( 570 event = this.createErrorEvent_(
599 CloudPrintInterfaceEventType.SEARCH_FAILED, 571 CloudPrintInterfaceEventType.SEARCH_FAILED, request);
600 request);
601 } 572 }
602 event.user = activeUser; 573 event.user = activeUser;
603 event.searchDone = lastRequestForThisOrigin; 574 event.searchDone = lastRequestForThisOrigin;
604 this.dispatchEvent(event); 575 this.dispatchEvent(event);
605 }, 576 },
606 577
607 /** 578 /**
608 * Called when invitations search request completes. 579 * Called when invitations search request completes.
609 * @param {!cloudprint.CloudPrintRequest} request Request that has been 580 * @param {!cloudprint.CloudPrintRequest} request Request that has been
610 * completed. 581 * completed.
611 * @private 582 * @private
612 */ 583 */
613 onInvitesDone_: function(request) { 584 onInvitesDone_: function(request) {
614 var event = null; 585 var event = null;
615 var activeUser = 586 var activeUser = (request.result && request.result['request'] &&
616 (request.result && 587 request.result['request']['user']) ||
617 request.result['request'] && 588 '';
618 request.result['request']['user']) || '';
619 if (request.xhr.status == 200 && request.result['success']) { 589 if (request.xhr.status == 200 && request.result['success']) {
620 // Extract invitations. 590 // Extract invitations.
621 var invitationListJson = request.result['invites'] || []; 591 var invitationListJson = request.result['invites'] || [];
622 var invitationList = []; 592 var invitationList = [];
623 invitationListJson.forEach(function(invitationJson) { 593 invitationListJson.forEach(function(invitationJson) {
624 try { 594 try {
625 invitationList.push(cloudprint.InvitationParser.parse( 595 invitationList.push(
626 invitationJson, activeUser)); 596 cloudprint.InvitationParser.parse(invitationJson, activeUser));
627 } catch (e) { 597 } catch (e) {
628 console.error('Unable to parse invitation: ' + e); 598 console.error('Unable to parse invitation: ' + e);
629 } 599 }
630 }); 600 });
631 // Dispatch INVITES_DONE event. 601 // Dispatch INVITES_DONE event.
632 event = new Event(CloudPrintInterfaceEventType.INVITES_DONE); 602 event = new Event(CloudPrintInterfaceEventType.INVITES_DONE);
633 event.invitations = invitationList; 603 event.invitations = invitationList;
634 } else { 604 } else {
635 event = this.createErrorEvent_( 605 event = this.createErrorEvent_(
636 CloudPrintInterfaceEventType.INVITES_FAILED, request); 606 CloudPrintInterfaceEventType.INVITES_FAILED, request);
637 } 607 }
638 event.user = activeUser; 608 event.user = activeUser;
639 this.dispatchEvent(event); 609 this.dispatchEvent(event);
640 }, 610 },
641 611
642 /** 612 /**
643 * Called when invitation processing request completes. 613 * Called when invitation processing request completes.
644 * @param {!print_preview.Invitation} invitation Processed invitation. 614 * @param {!print_preview.Invitation} invitation Processed invitation.
645 * @param {boolean} accept Whether this invitation was accepted or rejected. 615 * @param {boolean} accept Whether this invitation was accepted or rejected.
646 * @param {!cloudprint.CloudPrintRequest} request Request that has been 616 * @param {!cloudprint.CloudPrintRequest} request Request that has been
647 * completed. 617 * completed.
648 * @private 618 * @private
649 */ 619 */
650 onProcessInviteDone_: function(invitation, accept, request) { 620 onProcessInviteDone_: function(invitation, accept, request) {
651 var event = null; 621 var event = null;
652 var activeUser = 622 var activeUser = (request.result && request.result['request'] &&
653 (request.result && 623 request.result['request']['user']) ||
654 request.result['request'] && 624 '';
655 request.result['request']['user']) || '';
656 if (request.xhr.status == 200 && request.result['success']) { 625 if (request.xhr.status == 200 && request.result['success']) {
657 event = new Event(CloudPrintInterfaceEventType.PROCESS_INVITE_DONE); 626 event = new Event(CloudPrintInterfaceEventType.PROCESS_INVITE_DONE);
658 if (accept) { 627 if (accept) {
659 try { 628 try {
660 event.printer = cloudprint.CloudDestinationParser.parse( 629 event.printer = cloudprint.CloudDestinationParser.parse(
661 request.result['printer'], request.origin, activeUser); 630 request.result['printer'], request.origin, activeUser);
662 } catch (e) { 631 } catch (e) {
663 console.error('Failed to parse cloud print destination: ' + e); 632 console.error('Failed to parse cloud print destination: ' + e);
664 } 633 }
665 } 634 }
666 } else { 635 } else {
667 event = this.createErrorEvent_( 636 event = this.createErrorEvent_(
668 CloudPrintInterfaceEventType.PROCESS_INVITE_FAILED, request); 637 CloudPrintInterfaceEventType.PROCESS_INVITE_FAILED, request);
669 } 638 }
670 event.invitation = invitation; 639 event.invitation = invitation;
671 event.accept = accept; 640 event.accept = accept;
672 event.user = activeUser; 641 event.user = activeUser;
673 this.dispatchEvent(event); 642 this.dispatchEvent(event);
674 }, 643 },
675 644
676 /** 645 /**
677 * Called when the submit request completes. 646 * Called when the submit request completes.
678 * @param {!cloudprint.CloudPrintRequest} request Request that has been 647 * @param {!cloudprint.CloudPrintRequest} request Request that has been
679 * completed. 648 * completed.
680 * @private 649 * @private
681 */ 650 */
682 onSubmitDone_: function(request) { 651 onSubmitDone_: function(request) {
683 if (request.xhr.status == 200 && request.result['success']) { 652 if (request.xhr.status == 200 && request.result['success']) {
684 var submitDoneEvent = new Event( 653 var submitDoneEvent =
685 CloudPrintInterfaceEventType.SUBMIT_DONE); 654 new Event(CloudPrintInterfaceEventType.SUBMIT_DONE);
686 submitDoneEvent.jobId = request.result['job']['id']; 655 submitDoneEvent.jobId = request.result['job']['id'];
687 this.dispatchEvent(submitDoneEvent); 656 this.dispatchEvent(submitDoneEvent);
688 } else { 657 } else {
689 var errorEvent = this.createErrorEvent_( 658 var errorEvent = this.createErrorEvent_(
690 CloudPrintInterfaceEventType.SUBMIT_FAILED, request); 659 CloudPrintInterfaceEventType.SUBMIT_FAILED, request);
691 this.dispatchEvent(errorEvent); 660 this.dispatchEvent(errorEvent);
692 } 661 }
693 }, 662 },
694 663
695 /** 664 /**
696 * Called when the printer request completes. 665 * Called when the printer request completes.
697 * @param {string} destinationId ID of the destination that was looked up. 666 * @param {string} destinationId ID of the destination that was looked up.
698 * @param {!cloudprint.CloudPrintRequest} request Request that has been 667 * @param {!cloudprint.CloudPrintRequest} request Request that has been
699 * completed. 668 * completed.
700 * @private 669 * @private
701 */ 670 */
702 onPrinterDone_: function(destinationId, request) { 671 onPrinterDone_: function(destinationId, request) {
703 // Special handling of the first printer request. It does not matter at 672 // Special handling of the first printer request. It does not matter at
704 // this point, whether printer was found or not. 673 // this point, whether printer was found or not.
705 if (request.origin == print_preview.DestinationOrigin.COOKIES && 674 if (request.origin == print_preview.DestinationOrigin.COOKIES &&
706 request.result && 675 request.result && request.account &&
707 request.account &&
708 request.result['request']['user'] && 676 request.result['request']['user'] &&
709 request.result['request']['users'] && 677 request.result['request']['users'] &&
710 request.account != request.result['request']['user']) { 678 request.account != request.result['request']['user']) {
711 this.setUsers_(request); 679 this.setUsers_(request);
712 // In case the user account is known, but not the primary one, 680 // In case the user account is known, but not the primary one,
713 // activate it. 681 // activate it.
714 if (this.userSessionIndex_[request.account] > 0) { 682 if (this.userSessionIndex_[request.account] > 0) {
715 this.userInfo_.activeUser = request.account; 683 this.userInfo_.activeUser = request.account;
716 // Repeat the request for the newly activated account. 684 // Repeat the request for the newly activated account.
717 this.printer( 685 this.printer(
718 request.result['request']['params']['printerid'], 686 request.result['request']['params']['printerid'], request.origin,
719 request.origin,
720 request.account); 687 request.account);
721 // Stop processing this request, wait for the new response. 688 // Stop processing this request, wait for the new response.
722 return; 689 return;
723 } 690 }
724 } 691 }
725 // Process response. 692 // Process response.
726 if (request.xhr.status == 200 && request.result['success']) { 693 if (request.xhr.status == 200 && request.result['success']) {
727 var activeUser = ''; 694 var activeUser = '';
728 if (request.origin == print_preview.DestinationOrigin.COOKIES) { 695 if (request.origin == print_preview.DestinationOrigin.COOKIES) {
729 activeUser = request.result['request']['user']; 696 activeUser = request.result['request']['user'];
730 } 697 }
731 var printerJson = request.result['printers'][0]; 698 var printerJson = request.result['printers'][0];
732 var printer; 699 var printer;
733 try { 700 try {
734 printer = cloudprint.CloudDestinationParser.parse( 701 printer = cloudprint.CloudDestinationParser.parse(
735 printerJson, request.origin, activeUser); 702 printerJson, request.origin, activeUser);
736 } catch (err) { 703 } catch (err) {
737 console.error('Failed to parse cloud print destination: ' + 704 console.error(
705 'Failed to parse cloud print destination: ' +
738 JSON.stringify(printerJson)); 706 JSON.stringify(printerJson));
739 return; 707 return;
740 } 708 }
741 var printerDoneEvent = 709 var printerDoneEvent =
742 new Event(CloudPrintInterfaceEventType.PRINTER_DONE); 710 new Event(CloudPrintInterfaceEventType.PRINTER_DONE);
743 printerDoneEvent.printer = printer; 711 printerDoneEvent.printer = printer;
744 this.dispatchEvent(printerDoneEvent); 712 this.dispatchEvent(printerDoneEvent);
745 } else { 713 } else {
746 var errorEvent = this.createErrorEvent_( 714 var errorEvent = this.createErrorEvent_(
747 CloudPrintInterfaceEventType.PRINTER_FAILED, request); 715 CloudPrintInterfaceEventType.PRINTER_FAILED, request);
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
821 */ 789 */
822 this.value = value; 790 this.value = value;
823 } 791 }
824 792
825 // Export 793 // Export
826 return { 794 return {
827 CloudPrintInterface: CloudPrintInterface, 795 CloudPrintInterface: CloudPrintInterface,
828 CloudPrintRequest: CloudPrintRequest 796 CloudPrintRequest: CloudPrintRequest
829 }; 797 };
830 }); 798 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698