| Index: chrome/browser/resources/print_preview/print_preview.js
|
| diff --git a/chrome/browser/resources/print_preview/print_preview.js b/chrome/browser/resources/print_preview/print_preview.js
|
| index 7e25e2290cad3e8ec4a1a9a74ac6017ad66e5ef1..6c165379f7df20a034556467d554474e9b9592b8 100644
|
| --- a/chrome/browser/resources/print_preview/print_preview.js
|
| +++ b/chrome/browser/resources/print_preview/print_preview.js
|
| @@ -231,6 +231,13 @@ cr.define('print_preview', function() {
|
| this.isInAppKioskMode_ = false;
|
|
|
| /**
|
| + * Whether Print with System Dialog option is available.
|
| + * @type {boolean}
|
| + * @private
|
| + */
|
| + this.isSystemDialogAvailable_ = false;
|
| +
|
| + /**
|
| * State of the print preview UI.
|
| * @type {print_preview.PrintPreview.UiState_}
|
| * @private
|
| @@ -243,6 +250,13 @@ cr.define('print_preview', function() {
|
| * @private
|
| */
|
| this.isPreviewGenerationInProgress_ = true;
|
| +
|
| + /**
|
| + * Whether to show system dialog before next printing.
|
| + * @type {boolean}
|
| + * @private
|
| + */
|
| + this.showSystemDialogBeforeNextPrint_ = false;
|
| };
|
|
|
| /**
|
| @@ -538,7 +552,9 @@ cr.define('print_preview', function() {
|
| this.printTicketStore_,
|
| this.cloudPrintInterface_,
|
| this.documentInfo_,
|
| - this.uiState_ == PrintPreview.UiState_.OPENING_PDF_PREVIEW);
|
| + this.uiState_ == PrintPreview.UiState_.OPENING_PDF_PREVIEW,
|
| + this.showSystemDialogBeforeNextPrint_);
|
| + this.showSystemDialogBeforeNextPrint_ = false;
|
| }
|
| return PrintPreview.PrintAttemptResult_.PRINTED;
|
| },
|
| @@ -558,6 +574,13 @@ cr.define('print_preview', function() {
|
| * @private
|
| */
|
| openSystemPrintDialog_: function() {
|
| + if (!this.shouldShowSystemDialogLink_())
|
| + return;
|
| + if (cr.isWindows) {
|
| + this.showSystemDialogBeforeNextPrint_ = true;
|
| + this.printDocumentOrOpenPdfPreview_(false /*isPdfPreview*/);
|
| + return;
|
| + }
|
| setIsVisible($('system-dialog-throbber'), true);
|
| this.setIsEnabled_(false);
|
| this.uiState_ = PrintPreview.UiState_.OPENING_NATIVE_PRINT_DIALOG;
|
| @@ -599,9 +622,9 @@ cr.define('print_preview', function() {
|
| this.appState_.setInitialized();
|
|
|
| $('document-title').innerText = settings.documentTitle;
|
| - setIsVisible($('system-dialog-link'),
|
| - !settings.hidePrintWithSystemDialogLink &&
|
| - !settings.isInAppKioskMode);
|
| + this.isSystemDialogAvailable_ = !settings.hidePrintWithSystemDialogLink &&
|
| + !settings.isInAppKioskMode;
|
| + setIsVisible($('system-dialog-link'), this.shouldShowSystemDialogLink_());
|
| },
|
|
|
| /**
|
| @@ -1081,6 +1104,23 @@ cr.define('print_preview', function() {
|
| },
|
|
|
| /**
|
| + * Returns true if "Print using system dialog" link should be shown for
|
| + * current destination.
|
| + * @return {boolean} Returns true if link should be shown.
|
| + */
|
| + shouldShowSystemDialogLink_: function() {
|
| + if (!this.isSystemDialogAvailable_)
|
| + return false;
|
| + if (!cr.isWindows)
|
| + return true;
|
| + var selectedDest = this.destinationStore_.selectedDestination;
|
| + return selectedDest &&
|
| + selectedDest.origin == print_preview.Destination.Origin.LOCAL &&
|
| + selectedDest.id !=
|
| + print_preview.Destination.GooglePromotedId.SAVE_AS_PDF;
|
| + },
|
| +
|
| + /**
|
| * Called when the open-cloud-print-dialog link is clicked. Opens the Google
|
| * Cloud Print web dialog.
|
| * @private
|
| @@ -1105,6 +1145,9 @@ cr.define('print_preview', function() {
|
| setIsVisible(
|
| $('cloud-print-dialog-link'),
|
| selectedDest && !cr.isChromeOS && !selectedDest.isLocal);
|
| + setIsVisible(
|
| + $('system-dialog-link'),
|
| + this.shouldShowSystemDialogLink_());
|
| if (selectedDest && this.isInKioskAutoPrintMode_) {
|
| this.onPrintButtonClick_();
|
| }
|
|
|