| Index: chrome/browser/printing/print_preview_message_handler.cc
|
| ===================================================================
|
| --- chrome/browser/printing/print_preview_message_handler.cc (revision 92822)
|
| +++ chrome/browser/printing/print_preview_message_handler.cc (working copy)
|
| @@ -63,7 +63,8 @@
|
| PrintPreviewTabController::PrintPreview(tab_contents());
|
| }
|
|
|
| -void PrintPreviewMessageHandler::OnDidGetPreviewPageCount(int page_count) {
|
| +void PrintPreviewMessageHandler::OnDidGetPreviewPageCount(int document_cookie,
|
| + int page_count) {
|
| if (page_count <= 0)
|
| return;
|
| TabContents* print_preview_tab = GetPrintPreviewTab();
|
| @@ -72,34 +73,39 @@
|
|
|
| PrintPreviewUI* print_preview_ui =
|
| static_cast<PrintPreviewUI*>(print_preview_tab->web_ui());
|
| - print_preview_ui->OnDidGetPreviewPageCount(page_count);
|
| + print_preview_ui->OnDidGetPreviewPageCount(document_cookie, page_count);
|
| }
|
|
|
| -void PrintPreviewMessageHandler::OnDidPreviewPage(int page_number,
|
| - bool* cancel) {
|
| +void PrintPreviewMessageHandler::OnDidPreviewPage(int page_number) {
|
| + RenderViewHost* rvh = tab_contents()->render_view_host();
|
| TabContents* print_preview_tab = GetPrintPreviewTab();
|
| - if (!print_preview_tab) {
|
| - // Can't find print preview tab means we should cancel.
|
| - *cancel = true;
|
| + if (!(print_preview_tab && print_preview_tab->web_ui())) {
|
| + // Can't find print preview tab means we should abort.
|
| + rvh->Send(new PrintMsg_AbortPreview(rvh->routing_id()));
|
| return;
|
| }
|
|
|
| PrintPreviewUI* print_preview_ui =
|
| static_cast<PrintPreviewUI*>(print_preview_tab->web_ui());
|
| bool has_pending = print_preview_ui->HasPendingRequests();
|
| - if (!has_pending && page_number >= 0)
|
| + if (has_pending) {
|
| + // Cancel. Next print preview request will cancel the current one.
|
| + // Just do the required maintainance work here.
|
| + StopWorker(print_preview_ui->document_cookie());
|
| + print_preview_ui->OnPrintPreviewCancelled();
|
| + return;
|
| + }
|
| +
|
| + // Continue
|
| + if (page_number >= 0)
|
| print_preview_ui->OnDidPreviewPage(page_number);
|
| - *cancel = has_pending;
|
| + rvh->Send(new PrintMsg_ContinuePreview(rvh->routing_id()));
|
| }
|
|
|
| void PrintPreviewMessageHandler::OnPagesReadyForPreview(
|
| const PrintHostMsg_DidPreviewDocument_Params& params) {
|
| - // Always need to stop the worker and send PrintMsg_PrintingDone.
|
| StopWorker(params.document_cookie);
|
|
|
| - RenderViewHost* rvh = tab_contents()->render_view_host();
|
| - rvh->Send(new PrintMsg_PrintingDone(rvh->routing_id(), true));
|
| -
|
| // Get the print preview tab.
|
| TabContents* print_preview_tab = GetPrintPreviewTab();
|
| // User might have closed it already.
|
| @@ -114,7 +120,8 @@
|
|
|
| if (params.reuse_existing_data) {
|
| // Need to match normal rendering where we are expected to send this.
|
| - print_preview_ui->OnDidGetPreviewPageCount(params.expected_pages_count);
|
| + print_preview_ui->OnDidGetPreviewPageCount(params.document_cookie,
|
| + params.expected_pages_count);
|
|
|
| print_preview_ui->OnPreviewDataIsAvailable(
|
| params.expected_pages_count,
|
| @@ -175,19 +182,6 @@
|
| }
|
| }
|
|
|
| -void PrintPreviewMessageHandler::OnPrintPreviewCancelled(int document_cookie) {
|
| - // Always need to stop the worker.
|
| - StopWorker(document_cookie);
|
| -
|
| - TabContents* print_preview_tab = GetPrintPreviewTab();
|
| - if (!print_preview_tab)
|
| - return;
|
| -
|
| - PrintPreviewUI* print_preview_ui =
|
| - static_cast<PrintPreviewUI*>(print_preview_tab->web_ui());
|
| - print_preview_ui->OnPrintPreviewCancelled();
|
| -}
|
| -
|
| bool PrintPreviewMessageHandler::OnMessageReceived(
|
| const IPC::Message& message) {
|
| bool handled = true;
|
| @@ -202,8 +196,6 @@
|
| OnPagesReadyForPreview)
|
| IPC_MESSAGE_HANDLER(PrintHostMsg_PrintPreviewFailed,
|
| OnPrintPreviewFailed)
|
| - IPC_MESSAGE_HANDLER(PrintHostMsg_PrintPreviewCancelled,
|
| - OnPrintPreviewCancelled)
|
| IPC_MESSAGE_UNHANDLED(handled = false)
|
| IPC_END_MESSAGE_MAP()
|
| return handled;
|
|
|