Index: chrome/browser/ui/webui/print_preview/print_preview_ui.cc |
diff --git a/chrome/browser/ui/webui/print_preview/print_preview_ui.cc b/chrome/browser/ui/webui/print_preview/print_preview_ui.cc |
index 8493e8cc7554c35ed196e4827c17d8c9588094b8..f07d5be1ba4edb44d6baacf67699856693ab55a5 100644 |
--- a/chrome/browser/ui/webui/print_preview/print_preview_ui.cc |
+++ b/chrome/browser/ui/webui/print_preview/print_preview_ui.cc |
@@ -533,13 +533,20 @@ void PrintPreviewUI::OnPrintPreviewDialogClosed() { |
} |
void PrintPreviewUI::OnInitiatorClosed() { |
+ // Should only get here if the initiator was still tracked by the Print |
+ // Preview Dialog Controller, so the print job has not yet been sent. |
WebContents* preview_dialog = web_ui()->GetWebContents(); |
printing::BackgroundPrintingManager* background_printing_manager = |
g_browser_process->background_printing_manager(); |
- if (background_printing_manager->HasPrintPreviewDialog(preview_dialog)) |
- web_ui()->CallJavascriptFunctionUnsafe("cancelPendingPrintRequest"); |
- else |
+ if (background_printing_manager->HasPrintPreviewDialog(preview_dialog)) { |
+ // Dialog is hidden but is still generating the preview. Cancel the print |
+ // request as it can't be completed. |
+ background_printing_manager->OnPrintRequestCancelled(preview_dialog); |
+ handler_->OnPrintRequestCancelled(); |
+ } else { |
+ // Initiator was closed while print preview dialog was still open. |
OnClosePrintPreviewDialog(); |
+ } |
} |
void PrintPreviewUI::OnPrintPreviewCancelled() { |