diff options
author | thestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-18 02:47:26 +0000 |
---|---|---|
committer | thestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-18 02:47:26 +0000 |
commit | 8650f3a447188c938835e1aee03def923f59fcd0 (patch) | |
tree | 22138e0e2bf2d02784ccbacdf75c4844e79d96fe /chrome/renderer/print_web_view_helper_linux.cc | |
parent | 6ceb72b2e67330e9caa3eaef208abff4f6e6eeb2 (diff) | |
download | chromium_src-8650f3a447188c938835e1aee03def923f59fcd0.zip chromium_src-8650f3a447188c938835e1aee03def923f59fcd0.tar.gz chromium_src-8650f3a447188c938835e1aee03def923f59fcd0.tar.bz2 |
Print Preview: Make preview generation event driven to eliminate synchronous messages.
BUG=89069
TEST=Print preview still works.
Review URL: http://codereview.chromium.org/7365003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@92828 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 | 75 |
1 files changed, 16 insertions, 59 deletions
diff --git a/chrome/renderer/print_web_view_helper_linux.cc b/chrome/renderer/print_web_view_helper_linux.cc index 4947f14..8c6dad9 100644 --- a/chrome/renderer/print_web_view_helper_linux.cc +++ b/chrome/renderer/print_web_view_helper_linux.cc @@ -25,38 +25,19 @@ using WebKit::WebFrame; using WebKit::WebNode; -bool PrintWebViewHelper::CreatePreviewDocument( - const PrintMsg_PrintPages_Params& params, WebKit::WebFrame* frame, - WebKit::WebNode* node) { - if (!PreviewPageRendered(-1)) - return false; - - printing::PreviewMetafile metafile; - if (!metafile.Init()) - return false; - - 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(); - DCHECK_GT(buf_size, 0u); - - PrintHostMsg_DidPreviewDocument_Params preview_params; - preview_params.reuse_existing_data = false; - preview_params.data_size = buf_size; - preview_params.document_cookie = params.params.document_cookie; - preview_params.expected_pages_count = preview_page_count_; - preview_params.modifiable = IsModifiable(frame, node); - preview_params.preview_request_id = params.params.preview_request_id; +void PrintWebViewHelper::RenderPreviewPage(int page_number) { + PrintMsg_PrintPage_Params page_params; + page_params.params = print_preview_context_.print_params(); + page_params.page_number = page_number; - if (!CopyMetafileDataToSharedMem(&metafile, - &(preview_params.metafile_data_handle))) { - return false; - } - Send(new PrintHostMsg_PagesReadyForPreview(routing_id(), preview_params)); - return true; + base::TimeTicks begin_time = base::TimeTicks::Now(); + PrintPageInternal(page_params, + print_preview_context_.GetPrintCanvasSize(), + print_preview_context_.frame(), + print_preview_context_.metafile()); + print_preview_context_.RenderedPreviewPage( + base::TimeTicks::Now() - begin_time); + PreviewPageRendered(page_number); } bool PrintWebViewHelper::PrintPages(const PrintMsg_PrintPages_Params& params, @@ -67,7 +48,7 @@ bool PrintWebViewHelper::PrintPages(const PrintMsg_PrintPages_Params& params, return false; int page_count = 0; - if (!RenderPages(params, frame, node, &page_count, &metafile, false)) + if (!RenderPages(params, frame, node, &page_count, &metafile)) return false; // Get the size of the resulting metafile. @@ -142,29 +123,21 @@ bool PrintWebViewHelper::RenderPages(const PrintMsg_PrintPages_Params& params, WebKit::WebFrame* frame, WebKit::WebNode* node, int* page_count, - printing::Metafile* metafile, - bool is_preview) { + printing::Metafile* metafile) { PrintMsg_Print_Params printParams = params.params; UpdatePrintableSizeInPrintParameters(frame, node, &printParams); - PrepareFrameAndViewForPrint prep_frame_view(printParams, frame, node, - frame->view()); - if (is_preview && !PreviewPageRendered(-1)) - return false; - + PrepareFrameAndViewForPrint prep_frame_view(printParams, frame, node); *page_count = prep_frame_view.GetExpectedPageCount(); 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 - } base::TimeTicks begin_time = base::TimeTicks::Now(); base::TimeTicks page_begin_time = begin_time; @@ -176,21 +149,11 @@ bool PrintWebViewHelper::RenderPages(const PrintMsg_PrintPages_Params& params, for (int i = 0; i < *page_count; ++i) { page_params.page_number = i; PrintPageInternal(page_params, canvas_size, frame, metafile); - if (is_preview) { - page_begin_time = ReportPreviewPageRenderTime(page_begin_time); - if (!PreviewPageRendered(i)) - return false; - } } } else { for (size_t i = 0; i < params.pages.size(); ++i) { page_params.page_number = params.pages[i]; PrintPageInternal(page_params, canvas_size, frame, metafile); - if (is_preview) { - page_begin_time = ReportPreviewPageRenderTime(page_begin_time); - if (!PreviewPageRendered(params.pages[i])) - return false; - } } } @@ -198,12 +161,6 @@ bool PrintWebViewHelper::RenderPages(const PrintMsg_PrintPages_Params& params, prep_frame_view.FinishPrinting(); metafile->FinishDocument(); - - if (is_preview) { - ReportTotalPreviewGenerationTime(params.pages.size(), *page_count, - render_time, - base::TimeTicks::Now() - begin_time); - } return true; } |