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

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

Issue 2938073003: Change getAccessToken and getExtensionPrinterAccess to sendWithPromise (Closed)
Patch Set: Cleanup 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 */
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 * @private 93 * @private
94 */ 94 */
95 this.requestQueue_ = []; 95 this.requestQueue_ = [];
96 96
97 /** 97 /**
98 * Outstanding cloud destination search requests. 98 * Outstanding cloud destination search requests.
99 * @type {!Array<!cloudprint.CloudPrintRequest>} 99 * @type {!Array<!cloudprint.CloudPrintRequest>}
100 * @private 100 * @private
101 */ 101 */
102 this.outstandingCloudSearchRequests_ = []; 102 this.outstandingCloudSearchRequests_ = [];
103
104 /**
105 * Event tracker used to keep track of native layer events.
106 * @type {!EventTracker}
107 * @private
108 */
109 this.tracker_ = new EventTracker();
110
111 this.addEventListeners_();
112 } 103 }
113 104
114 /** 105 /**
115 * Content type header value for a URL encoded HTTP request. 106 * Content type header value for a URL encoded HTTP request.
116 * @type {string} 107 * @type {string}
117 * @const 108 * @const
118 * @private 109 * @private
119 */ 110 */
120 CloudPrintInterface.URL_ENCODED_CONTENT_TYPE_ = 111 CloudPrintInterface.URL_ENCODED_CONTENT_TYPE_ =
121 'application/x-www-form-urlencoded'; 112 'application/x-www-form-urlencoded';
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 this.sendOrQueueRequest_(this.buildRequest_( 325 this.sendOrQueueRequest_(this.buildRequest_(
335 'GET', 326 'GET',
336 'printer', 327 'printer',
337 params, 328 params,
338 origin, 329 origin,
339 account || '', 330 account || '',
340 this.onPrinterDone_.bind(this, printerId))); 331 this.onPrinterDone_.bind(this, printerId)));
341 }, 332 },
342 333
343 /** 334 /**
344 * Adds event listeners to relevant events.
345 * @private
346 */
347 addEventListeners_: function() {
348 this.tracker_.add(
349 this.nativeLayer_.getEventTarget(),
350 print_preview.NativeLayer.EventType.ACCESS_TOKEN_READY,
351 this.onAccessTokenReady_.bind(this));
352 },
353
354 /**
355 * Builds request to the Google Cloud Print API. 335 * Builds request to the Google Cloud Print API.
356 * @param {string} method HTTP method of the request. 336 * @param {string} method HTTP method of the request.
357 * @param {string} action Google Cloud Print action to perform. 337 * @param {string} action Google Cloud Print action to perform.
358 * @param {Array<!HttpParam>} params HTTP parameters to include in the 338 * @param {Array<!HttpParam>} params HTTP parameters to include in the
359 * request. 339 * request.
360 * @param {!print_preview.DestinationOrigin} origin Origin for destination. 340 * @param {!print_preview.DestinationOrigin} origin Origin for destination.
361 * @param {?string} account Account the request is sent for. Can be 341 * @param {?string} account Account the request is sent for. Can be
362 * {@code null} or empty string if the request is not cookie bound or 342 * {@code null} or empty string if the request is not cookie bound or
363 * is sent on behalf of the primary user. 343 * is sent on behalf of the primary user.
364 * @param {function(!cloudprint.CloudPrintRequest)} callback Callback to 344 * @param {function(!cloudprint.CloudPrintRequest)} callback Callback to
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
423 * Sends a request to the Google Cloud Print API or queues if it needs to 403 * Sends a request to the Google Cloud Print API or queues if it needs to
424 * wait OAuth2 access token. 404 * wait OAuth2 access token.
425 * @param {!cloudprint.CloudPrintRequest} request Request to send or queue. 405 * @param {!cloudprint.CloudPrintRequest} request Request to send or queue.
426 * @private 406 * @private
427 */ 407 */
428 sendOrQueueRequest_: function(request) { 408 sendOrQueueRequest_: function(request) {
429 if (request.origin == print_preview.DestinationOrigin.COOKIES) { 409 if (request.origin == print_preview.DestinationOrigin.COOKIES) {
430 return this.sendRequest_(request); 410 return this.sendRequest_(request);
431 } else { 411 } else {
432 this.requestQueue_.push(request); 412 this.requestQueue_.push(request);
433 this.nativeLayer_.startGetAccessToken(request.origin); 413 this.nativeLayer_.getAccessToken(request.origin).then(
414 this.onAccessTokenReady_.bind(this, request.origin));
434 } 415 }
435 }, 416 },
436 417
437 /** 418 /**
438 * Sends a request to the Google Cloud Print API. 419 * Sends a request to the Google Cloud Print API.
439 * @param {!cloudprint.CloudPrintRequest} request Request to send. 420 * @param {!cloudprint.CloudPrintRequest} request Request to send.
440 * @private 421 * @private
441 */ 422 */
442 sendRequest_: function(request) { 423 sendRequest_: function(request) {
443 request.xhr.onreadystatechange = 424 request.xhr.onreadystatechange =
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
497 if (origins.indexOf(request.origin) >= 0) { 478 if (origins.indexOf(request.origin) >= 0) {
498 request.xhr.abort(); 479 request.xhr.abort();
499 return false; 480 return false;
500 } 481 }
501 return true; 482 return true;
502 }); 483 });
503 }, 484 },
504 485
505 /** 486 /**
506 * Called when a native layer receives access token. 487 * Called when a native layer receives access token.
507 * @param {Event} event Contains the authentication type and access token. 488 * @param {!print_preview.DestinationOrigin} authType The authentication
489 * type.
490 * @param {!print_preview.AccessTokenResponse} response Contains the access
491 * token and an indicator of whether the token request is complete (if
492 * not, another request for this authentication type was already in
493 * progress).
508 * @private 494 * @private
509 */ 495 */
510 onAccessTokenReady_: function(event) { 496 onAccessTokenReady_: function(authType, response) {
497 if (!response.completed)
498 return;
511 // TODO(vitalybuka): remove when other Origins implemented. 499 // TODO(vitalybuka): remove when other Origins implemented.
512 assert(event.authType == print_preview.DestinationOrigin.DEVICE); 500 assert(authType == print_preview.DestinationOrigin.DEVICE);
513 this.requestQueue_ = this.requestQueue_.filter(function(request) { 501 this.requestQueue_ = this.requestQueue_.filter(function(request) {
514 assert(request.origin == print_preview.DestinationOrigin.DEVICE); 502 assert(request.origin == print_preview.DestinationOrigin.DEVICE);
515 if (request.origin != event.authType) { 503 if (request.origin != authType) {
516 return true; 504 return true;
517 } 505 }
518 if (event.accessToken) { 506 if (response.accessToken) {
519 request.xhr.setRequestHeader('Authorization', 507 request.xhr.setRequestHeader('Authorization',
520 'Bearer ' + event.accessToken); 508 'Bearer ' + response.accessToken);
521 this.sendRequest_(request); 509 this.sendRequest_(request);
522 } else { // No valid token. 510 } else { // No valid token.
523 // Without abort status does not exist. 511 // Without abort status does not exist.
524 request.xhr.abort(); 512 request.xhr.abort();
525 request.callback(request); 513 request.callback(request);
526 } 514 }
527 return false; 515 return false;
528 }, this); 516 }, this);
529 }, 517 },
530 518
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
821 */ 809 */
822 this.value = value; 810 this.value = value;
823 } 811 }
824 812
825 // Export 813 // Export
826 return { 814 return {
827 CloudPrintInterface: CloudPrintInterface, 815 CloudPrintInterface: CloudPrintInterface,
828 CloudPrintRequest: CloudPrintRequest 816 CloudPrintRequest: CloudPrintRequest
829 }; 817 };
830 }); 818 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698