diff options
author | kmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-31 05:19:41 +0000 |
---|---|---|
committer | kmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-31 05:19:41 +0000 |
commit | 576f9964c7ab5b355a3f02164066119d96e00463 (patch) | |
tree | 2d2e3a80c16827eb5db91534d793f71b33ffc00c /chrome/renderer/print_web_view_helper_linux.cc | |
parent | e94c69f6b25f93e7d2b97766686a487777eec88f (diff) | |
download | chromium_src-576f9964c7ab5b355a3f02164066119d96e00463.zip chromium_src-576f9964c7ab5b355a3f02164066119d96e00463.tar.gz chromium_src-576f9964c7ab5b355a3f02164066119d96e00463.tar.bz2 |
Print preview page selection should not require a rerendering of draft pages.
On page selection, regenerate the complete document with the selection, but preserve the existing draft pages and simply display a subset of them.
Added a new param |clear all preview data| to |PrintHostMsg_DidGetPreviewPageCount|.
BUG=84383
TEST=print preview works after code changes.
Review URL: http://codereview.chromium.org/7647010
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@98926 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 | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/chrome/renderer/print_web_view_helper_linux.cc b/chrome/renderer/print_web_view_helper_linux.cc index 6ece1a0..a65e5bf 100644 --- a/chrome/renderer/print_web_view_helper_linux.cc +++ b/chrome/renderer/print_web_view_helper_linux.cc @@ -29,21 +29,29 @@ bool PrintWebViewHelper::RenderPreviewPage(int page_number) { PrintMsg_PrintPage_Params page_params; page_params.params = print_preview_context_.print_params(); page_params.page_number = page_number; + scoped_ptr<printing::Metafile> draft_metafile; + printing::Metafile* initial_render_metafile = + print_preview_context_.metafile(); + if (print_preview_context_.IsModifiable() && is_print_ready_metafile_sent_) { + draft_metafile.reset(new printing::PreviewMetafile); + initial_render_metafile = draft_metafile.get(); + } 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_.frame(), initial_render_metafile); print_preview_context_.RenderedPreviewPage( base::TimeTicks::Now() - begin_time); - scoped_ptr<printing::Metafile> page_metafile; - if (print_preview_context_.IsModifiable()) { - page_metafile.reset( + if (draft_metafile.get()) { + draft_metafile->FinishDocument(); + } else if (print_preview_context_.IsModifiable() && + print_preview_context_.generate_draft_pages()){ + DCHECK(!draft_metafile.get()); + draft_metafile.reset( print_preview_context_.metafile()->GetMetafileForCurrentPage()); } - return PreviewPageRendered(page_number, page_metafile.get()); + return PreviewPageRendered(page_number, draft_metafile.get()); } bool PrintWebViewHelper::PrintPages(const PrintMsg_PrintPages_Params& params, @@ -207,6 +215,8 @@ void PrintWebViewHelper::PrintPageInternal( SkRefPtr<skia::VectorCanvas> canvas = new skia::VectorCanvas(device); canvas->unref(); // SkRefPtr and new both took a reference. printing::MetafileSkiaWrapper::SetMetafileOnCanvas(canvas.get(), metafile); + printing::MetafileSkiaWrapper::SetDraftMode(canvas.get(), + is_print_ready_metafile_sent_); frame->printPage(params.page_number, canvas.get()); if (params.params.display_header_footer) { |