summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/print_web_view_helper_linux.cc
diff options
context:
space:
mode:
authorthestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-18 02:47:26 +0000
committerthestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-18 02:47:26 +0000
commit8650f3a447188c938835e1aee03def923f59fcd0 (patch)
tree22138e0e2bf2d02784ccbacdf75c4844e79d96fe /chrome/renderer/print_web_view_helper_linux.cc
parent6ceb72b2e67330e9caa3eaef208abff4f6e6eeb2 (diff)
downloadchromium_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.cc75
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;
}