| Index: chrome/browser/resources/print_preview/previewarea/preview_area.js
|
| diff --git a/chrome/browser/resources/print_preview/previewarea/preview_area.js b/chrome/browser/resources/print_preview/previewarea/preview_area.js
|
| index 994668d6547fee75fa9f4018832ebf7e02e3977d..4762b444f305bb7f6dee77f8360a1cff99f06409 100644
|
| --- a/chrome/browser/resources/print_preview/previewarea/preview_area.js
|
| +++ b/chrome/browser/resources/print_preview/previewarea/preview_area.js
|
| @@ -192,7 +192,10 @@ cr.define('print_preview', function() {
|
|
|
| // Dispatched when a new document preview is being generated.
|
| PREVIEW_GENERATION_IN_PROGRESS:
|
| - 'print_preview.PreviewArea.PREVIEW_GENERATION_IN_PROGRESS'
|
| + 'print_preview.PreviewArea.PREVIEW_GENERATION_IN_PROGRESS',
|
| +
|
| + // Dispatched when invalid printer settings are detected.
|
| + SETTINGS_INVALID: 'print_preview.PreviewArea.SETTINGS_INVALID'
|
| };
|
|
|
| /**
|
| @@ -349,10 +352,6 @@ cr.define('print_preview', function() {
|
| this.previewGenerator_,
|
| print_preview.PreviewGenerator.EventType.PAGE_READY,
|
| this.onPagePreviewReady_.bind(this));
|
| - this.tracker.add(
|
| - this.previewGenerator_,
|
| - print_preview.PreviewGenerator.EventType.FAIL,
|
| - this.onPreviewGenerationFail_.bind(this));
|
| this.tracker.add(
|
| this.previewGenerator_,
|
| print_preview.PreviewGenerator.EventType.DOCUMENT_READY,
|
| @@ -523,18 +522,43 @@ cr.define('print_preview', function() {
|
| * @private
|
| */
|
| onTicketChange_: function() {
|
| - if (this.previewGenerator_ && this.previewGenerator_.requestPreview()) {
|
| - cr.dispatchSimpleEvent(
|
| - this, PreviewArea.EventType.PREVIEW_GENERATION_IN_PROGRESS);
|
| - if (this.loadingTimeout_ == null) {
|
| - this.loadingTimeout_ = setTimeout(
|
| - this.showMessage_.bind(
|
| - this, print_preview.PreviewAreaMessageId_.LOADING),
|
| - PreviewArea.LOADING_TIMEOUT_);
|
| - }
|
| - } else {
|
| + var requestPreview = this.previewGenerator_ ?
|
| + this.previewGenerator_.requestPreview() :
|
| + null;
|
| + var requestId = requestPreview ? requestPreview.id : -1;
|
| + if (requestId == -1) {
|
| this.marginControlContainer_.showMarginControlsIfNeeded();
|
| + return;
|
| }
|
| + cr.dispatchSimpleEvent(
|
| + this, PreviewArea.EventType.PREVIEW_GENERATION_IN_PROGRESS);
|
| + if (this.loadingTimeout_ == null) {
|
| + this.loadingTimeout_ = setTimeout(
|
| + this.showMessage_.bind(
|
| + this, print_preview.PreviewAreaMessageId_.LOADING),
|
| + PreviewArea.LOADING_TIMEOUT_);
|
| + }
|
| + requestPreview.request.then(
|
| + /** @param {number} previewUid The unique id of the preview. */
|
| + function(previewUid) {
|
| + this.previewGenerator_.onPreviewGenerationDone(
|
| + requestPreview.id, previewUid);
|
| + }.bind(this),
|
| + /**
|
| + * @param {*} type The type of print preview failure that
|
| + * occurred.
|
| + */
|
| + function(type) {
|
| + if (/** @type{string} */ (type) == 'SETTINGS_INVALID') {
|
| + this.cancelTimeout();
|
| + this.showCustomMessage(
|
| + loadTimeData.getString('invalidPrinterSettings'));
|
| + cr.dispatchSimpleEvent(
|
| + this, PreviewArea.EventType.SETTINGS_INVALID);
|
| + } else {
|
| + this.onPreviewGenerationFail_();
|
| + }
|
| + }.bind(this));
|
| },
|
|
|
| /**
|
|
|