| 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 0915681dfeef3b45a5f3b6a80981eab6f1be89b3..33e932136050834a67cb3c9c62656275459b63b1 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_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());
|
| }
|
| - PreviewPageRendered(page_number, page_metafile.get());
|
| + 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());
|
|
|
| // TODO(myhuang): We should render the header and the footer.
|
|
|