| 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 30ddb6b79a198d7787d0b81562e83f97d16d3abb..ecb7b7b0d6c824535096a003ebdd858dca3cae7c 100644
|
| --- a/chrome/renderer/print_web_view_helper_linux.cc
|
| +++ b/chrome/renderer/print_web_view_helper_linux.cc
|
| @@ -9,9 +9,9 @@
|
| #include "base/memory/scoped_ptr.h"
|
| #include "chrome/common/print_messages.h"
|
| #include "content/common/view_messages.h"
|
| -#include "printing/native_metafile_factory.h"
|
| -#include "printing/native_metafile_skia_wrapper.h"
|
| -#include "printing/native_metafile.h"
|
| +#include "printing/metafile.h"
|
| +#include "printing/metafile_impl.h"
|
| +#include "printing/metafile_skia_wrapper.h"
|
| #include "skia/ext/vector_canvas.h"
|
| #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
|
| #include "ui/gfx/point.h"
|
| @@ -26,17 +26,16 @@ using WebKit::WebNode;
|
| void PrintWebViewHelper::CreatePreviewDocument(
|
| const PrintMsg_PrintPages_Params& params, WebKit::WebFrame* frame,
|
| WebKit::WebNode* node) {
|
| - // We only can use PDF in the renderer because Cairo needs to create a
|
| - // temporary file for a PostScript surface.
|
| - scoped_ptr<printing::NativeMetafile> metafile(
|
| - printing::NativeMetafileFactory::Create());
|
| int page_count = 0;
|
| + printing::PreviewMetafile metafile;
|
| + if (!metafile.Init())
|
| + return;
|
|
|
| - if (!RenderPages(params, frame, node, false, &page_count, metafile.get()))
|
| + if (!RenderPages(params, frame, node, false, &page_count, &metafile))
|
| return;
|
|
|
| // Get the size of the resulting metafile.
|
| - uint32 buf_size = metafile->GetDataSize();
|
| + uint32 buf_size = metafile.GetDataSize();
|
| DCHECK_GT(buf_size, 0u);
|
|
|
| PrintHostMsg_DidPreviewDocument_Params preview_params;
|
| @@ -44,7 +43,7 @@ void PrintWebViewHelper::CreatePreviewDocument(
|
| preview_params.expected_pages_count = page_count;
|
| preview_params.data_size = buf_size;
|
|
|
| - if (!CopyMetafileDataToSharedMem(metafile.get(),
|
| + if (!CopyMetafileDataToSharedMem(&metafile,
|
| &(preview_params.metafile_data_handle))) {
|
| preview_params.expected_pages_count = 0;
|
| preview_params.data_size = 0;
|
| @@ -55,10 +54,6 @@ void PrintWebViewHelper::CreatePreviewDocument(
|
| void PrintWebViewHelper::PrintPages(const PrintMsg_PrintPages_Params& params,
|
| WebFrame* frame,
|
| WebNode* node) {
|
| - // We only can use PDF in the renderer because Cairo needs to create a
|
| - // temporary file for a PostScript surface.
|
| - scoped_ptr<printing::NativeMetafile> metafile(
|
| - printing::NativeMetafileFactory::Create());
|
| int page_count = 0;
|
| bool send_expected_page_count =
|
| #if defined(OS_CHROMEOS)
|
| @@ -67,13 +62,17 @@ void PrintWebViewHelper::PrintPages(const PrintMsg_PrintPages_Params& params,
|
| true;
|
| #endif // defined(OS_CHROMEOS)
|
|
|
| + printing::NativeMetafile metafile;
|
| + if (!metafile.Init())
|
| + return;
|
| +
|
| if (!RenderPages(params, frame, node, send_expected_page_count, &page_count,
|
| - metafile.get())) {
|
| + &metafile)) {
|
| return;
|
| }
|
|
|
| // Get the size of the resulting metafile.
|
| - uint32 buf_size = metafile->GetDataSize();
|
| + uint32 buf_size = metafile.GetDataSize();
|
| DCHECK_GT(buf_size, 0u);
|
|
|
| #if defined(OS_CHROMEOS)
|
| @@ -85,7 +84,7 @@ void PrintWebViewHelper::PrintPages(const PrintMsg_PrintPages_Params& params,
|
| &sequence_number))) {
|
| return;
|
| }
|
| - if (!metafile->SaveToFD(fd))
|
| + if (!metafile.SaveToFD(fd))
|
| return;
|
|
|
| // Tell the browser we've finished writing the file.
|
| @@ -112,7 +111,7 @@ void PrintWebViewHelper::PrintPages(const PrintMsg_PrintPages_Params& params,
|
| NOTREACHED() << "Map failed";
|
| return;
|
| }
|
| - metafile->GetData(shared_buf.memory(), buf_size);
|
| + metafile.GetData(shared_buf.memory(), buf_size);
|
| printed_page_params.data_size = buf_size;
|
| shared_buf.GiveToProcess(base::GetCurrentProcessHandle(),
|
| &(printed_page_params.metafile_data_handle));
|
| @@ -149,7 +148,7 @@ bool PrintWebViewHelper::RenderPages(const PrintMsg_PrintPages_Params& params,
|
| WebKit::WebNode* node,
|
| bool send_expected_page_count,
|
| int* page_count,
|
| - printing::NativeMetafile* metafile) {
|
| + printing::Metafile* metafile) {
|
| PrintMsg_Print_Params printParams = params.params;
|
| scoped_ptr<skia::VectorCanvas> canvas;
|
|
|
| @@ -197,7 +196,7 @@ void PrintWebViewHelper::PrintPageInternal(
|
| const PrintMsg_PrintPage_Params& params,
|
| const gfx::Size& canvas_size,
|
| WebFrame* frame,
|
| - printing::NativeMetafile* metafile,
|
| + printing::Metafile* metafile,
|
| scoped_ptr<skia::VectorCanvas>* canvas) {
|
| double content_width_in_points;
|
| double content_height_in_points;
|
| @@ -228,8 +227,7 @@ void PrintWebViewHelper::PrintPageInternal(
|
| return;
|
|
|
| canvas->reset(new skia::VectorCanvas(device));
|
| - printing::NativeMetafileSkiaWrapper::SetMetafileOnCanvas(canvas->get(),
|
| - metafile);
|
| + printing::MetafileSkiaWrapper::SetMetafileOnCanvas(canvas->get(), metafile);
|
| frame->printPage(params.page_number, canvas->get());
|
|
|
| // TODO(myhuang): We should handle transformation for paper margins.
|
|
|