| Index: chrome/renderer/print_web_view_helper_linux.cc
|
| diff --git a/chrome/renderer/print_web_view_helper_linux.cc b/chrome/renderer/print_web_view_helper_linux.cc
|
| index c9d8f38f760d62a07d0485c7312a2a300f5b253a..dac4cc1e4551c7c193e696917452c7e550e77d87 100644
|
| --- a/chrome/renderer/print_web_view_helper_linux.cc
|
| +++ b/chrome/renderer/print_web_view_helper_linux.cc
|
| @@ -29,21 +29,29 @@ 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;
|
| + scoped_ptr<printing::Metafile> draft_metafile;
|
| + printing::Metafile* initial_render_metafile =
|
| + print_preview_context_.metafile();
|
| + if (print_preview_context_.IsModifiable() && is_complete_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);
|
| - printing::Metafile* page_metafile = NULL;
|
| if (print_preview_context_.IsModifiable()) {
|
| - page_metafile = reinterpret_cast<printing::PreviewMetafile*>(
|
| - print_preview_context_.metafile())->GetMetafileForCurrentPage();
|
| + if (draft_metafile.get()) {
|
| + draft_metafile->FinishDocument();
|
| + } else if (print_preview_context_.generate_draft_pages()){
|
| + draft_metafile.reset(reinterpret_cast<printing::PreviewMetafile*>(
|
| + initial_render_metafile)->GetMetafileForCurrentPage());
|
| + }
|
| }
|
| - PreviewPageRendered(page_number, page_metafile);
|
| + 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_complete_metafile_sent_);
|
| frame->printPage(params.page_number, canvas.get());
|
|
|
| // TODO(myhuang): We should render the header and the footer.
|
|
|