From 961dc8cd0c5860fe944da2926c1ed1cb69326b66 Mon Sep 17 00:00:00 2001 From: "thestig@chromium.org" Date: Thu, 7 Jul 2011 01:06:40 +0000 Subject: Print Preview: Add the ability to cancel an in-flight print preview. BUG=85103 TEST=none Review URL: http://codereview.chromium.org/7104127 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@91645 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome/renderer/print_web_view_helper_mac.mm | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'chrome/renderer/print_web_view_helper_mac.mm') diff --git a/chrome/renderer/print_web_view_helper_mac.mm b/chrome/renderer/print_web_view_helper_mac.mm index aab653d..54521ff 100644 --- a/chrome/renderer/print_web_view_helper_mac.mm +++ b/chrome/renderer/print_web_view_helper_mac.mm @@ -62,15 +62,22 @@ void PrintWebViewHelper::PrintPageInternal( bool PrintWebViewHelper::CreatePreviewDocument( const PrintMsg_PrintPages_Params& params, WebKit::WebFrame* frame, WebKit::WebNode* node) { + if (!PreviewPageRendered(-1)) + return false; + PrintMsg_Print_Params printParams = params.params; UpdatePrintableSizeInPrintParameters(frame, node, &printParams); PrepareFrameAndViewForPrint prep_frame_view(printParams, frame, node, frame->view()); - preview_page_count_ = prep_frame_view.GetExpectedPageCount(); + if (!PreviewPageRendered(-1)) + return false; + preview_page_count_ = prep_frame_view.GetExpectedPageCount(); if (!preview_page_count_) return false; + Send(new PrintHostMsg_DidGetPreviewPageCount(routing_id(), + preview_page_count_)); printing::PreviewMetafile metafile; if (!metafile.Init()) @@ -89,14 +96,18 @@ bool PrintWebViewHelper::CreatePreviewDocument( RenderPage(printParams.page_size, content_area, scale_factor, i, frame, &metafile); page_begin_time = ReportPreviewPageRenderTime(page_begin_time); + if (!PreviewPageRendered(i)) + return false; } } else { for (size_t i = 0; i < params.pages.size(); ++i) { if (params.pages[i] >= preview_page_count_) break; RenderPage(printParams.page_size, content_area, scale_factor, - static_cast(params.pages[i]), frame, &metafile); + params.pages[i], frame, &metafile); page_begin_time = ReportPreviewPageRenderTime(page_begin_time); + if (!PreviewPageRendered(params.pages[i])) + return false; } } -- cgit v1.1