diff options
author | thestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-07 01:06:40 +0000 |
---|---|---|
committer | thestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-07 01:06:40 +0000 |
commit | 961dc8cd0c5860fe944da2926c1ed1cb69326b66 (patch) | |
tree | 603ec58775f9e07a9ee11f69be017cf13e2e584d /chrome/renderer/print_web_view_helper_linux.cc | |
parent | 0545daf4b7c757c073f9d07f51544ea80e2ef876 (diff) | |
download | chromium_src-961dc8cd0c5860fe944da2926c1ed1cb69326b66.zip chromium_src-961dc8cd0c5860fe944da2926c1ed1cb69326b66.tar.gz chromium_src-961dc8cd0c5860fe944da2926c1ed1cb69326b66.tar.bz2 |
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
Diffstat (limited to 'chrome/renderer/print_web_view_helper_linux.cc')
-rw-r--r-- | chrome/renderer/print_web_view_helper_linux.cc | 40 |
1 files changed, 21 insertions, 19 deletions
diff --git a/chrome/renderer/print_web_view_helper_linux.cc b/chrome/renderer/print_web_view_helper_linux.cc index ebbea61..9255a00 100644 --- a/chrome/renderer/print_web_view_helper_linux.cc +++ b/chrome/renderer/print_web_view_helper_linux.cc @@ -28,15 +28,16 @@ using WebKit::WebNode; bool PrintWebViewHelper::CreatePreviewDocument( const PrintMsg_PrintPages_Params& params, WebKit::WebFrame* frame, WebKit::WebNode* node) { - preview_page_count_ = 0; + if (!PreviewPageRendered(-1)) + return false; + printing::PreviewMetafile metafile; if (!metafile.Init()) return false; - if (!RenderPages(params, frame, node, false, &preview_page_count_, - &metafile, true)) { + preview_page_count_ = 0; + if (!RenderPages(params, frame, node, &preview_page_count_, &metafile, true)) return false; - } // Get the size of the resulting metafile. uint32 buf_size = metafile.GetDataSize(); @@ -60,22 +61,13 @@ bool PrintWebViewHelper::CreatePreviewDocument( bool PrintWebViewHelper::PrintPages(const PrintMsg_PrintPages_Params& params, WebFrame* frame, WebNode* node) { - int page_count = 0; - bool send_expected_page_count = -#if defined(OS_CHROMEOS) - false; -#else - true; -#endif // defined(OS_CHROMEOS) - printing::NativeMetafile metafile; if (!metafile.Init()) return false; - if (!RenderPages(params, frame, node, send_expected_page_count, &page_count, - &metafile, false)) { + int page_count = 0; + if (!RenderPages(params, frame, node, &page_count, &metafile, false)) return false; - } // Get the size of the resulting metafile. uint32 buf_size = metafile.GetDataSize(); @@ -148,7 +140,6 @@ bool PrintWebViewHelper::PrintPages(const PrintMsg_PrintPages_Params& params, bool PrintWebViewHelper::RenderPages(const PrintMsg_PrintPages_Params& params, WebKit::WebFrame* frame, WebKit::WebNode* node, - bool send_expected_page_count, int* page_count, printing::Metafile* metafile, bool is_preview) { @@ -158,14 +149,21 @@ bool PrintWebViewHelper::RenderPages(const PrintMsg_PrintPages_Params& params, PrepareFrameAndViewForPrint prep_frame_view(printParams, frame, node, frame->view()); + if (is_preview && !PreviewPageRendered(-1)) + return false; + *page_count = prep_frame_view.GetExpectedPageCount(); - if (send_expected_page_count) { + if (!*page_count) + return false; + if (is_preview) { + Send(new PrintHostMsg_DidGetPreviewPageCount(routing_id(), *page_count)); + } else { +#if !defined(OS_CHROMEOS) Send(new PrintHostMsg_DidGetPrintedPagesCount(routing_id(), printParams.document_cookie, *page_count)); +#endif } - if (!*page_count) - return false; base::TimeTicks begin_time = base::TimeTicks::Now(); base::TimeTicks page_begin_time = begin_time; @@ -179,6 +177,8 @@ bool PrintWebViewHelper::RenderPages(const PrintMsg_PrintPages_Params& params, PrintPageInternal(page_params, canvas_size, frame, metafile); if (is_preview) { page_begin_time = ReportPreviewPageRenderTime(page_begin_time); + if (!PreviewPageRendered(i)) + return false; } } } else { @@ -187,6 +187,8 @@ bool PrintWebViewHelper::RenderPages(const PrintMsg_PrintPages_Params& params, PrintPageInternal(page_params, canvas_size, frame, metafile); if (is_preview) { page_begin_time = ReportPreviewPageRenderTime(page_begin_time); + if (!PreviewPageRendered(params.pages[i])) + return false; } } } |