| 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 c4446d3821441090e99db9b0e402da5309507672..8fec47fd9c82563bcc7b36831284b95948a631d5 100644
|
| --- a/chrome/renderer/print_web_view_helper_linux.cc
|
| +++ b/chrome/renderer/print_web_view_helper_linux.cc
|
| @@ -6,8 +6,10 @@
|
|
|
| #include "base/file_descriptor_posix.h"
|
| #include "base/logging.h"
|
| +#include "base/scoped_ptr.h"
|
| #include "chrome/common/render_messages.h"
|
| #include "chrome/common/render_messages_params.h"
|
| +#include "printing/native_metafile_factory.h"
|
| #include "printing/native_metafile.h"
|
| #include "skia/ext/vector_canvas.h"
|
| #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
|
| @@ -23,14 +25,15 @@ void PrintWebViewHelper::CreatePreviewDocument(
|
| const ViewMsg_PrintPages_Params& params, WebFrame* frame) {
|
| // We only can use PDF in the renderer because Cairo needs to create a
|
| // temporary file for a PostScript surface.
|
| - printing::NativeMetafile metafile;
|
| + scoped_ptr<printing::NativeMetafile> metafile(
|
| + printing::NativeMetafileFactory::CreateMetafile());
|
| int page_count = 0;
|
|
|
| - if (!RenderPages(params, frame, false, &page_count, &metafile))
|
| + if (!RenderPages(params, frame, false, &page_count, metafile.get()))
|
| return;
|
|
|
| // Get the size of the resulting metafile.
|
| - uint32 buf_size = metafile.GetDataSize();
|
| + uint32 buf_size = metafile->GetDataSize();
|
| DCHECK_GT(buf_size, 0u);
|
|
|
| ViewHostMsg_DidPreviewDocument_Params preview_params;
|
| @@ -38,7 +41,7 @@ void PrintWebViewHelper::CreatePreviewDocument(
|
| preview_params.expected_pages_count = page_count;
|
| preview_params.data_size = buf_size;
|
|
|
| - if (!CopyMetafileDataToSharedMem(&metafile,
|
| + if (!CopyMetafileDataToSharedMem(metafile.get(),
|
| &(preview_params.metafile_data_handle))) {
|
| preview_params.expected_pages_count = 0;
|
| preview_params.data_size = 0;
|
| @@ -51,7 +54,8 @@ void PrintWebViewHelper::PrintPages(const ViewMsg_PrintPages_Params& params,
|
| WebNode* node) {
|
| // We only can use PDF in the renderer because Cairo needs to create a
|
| // temporary file for a PostScript surface.
|
| - printing::NativeMetafile metafile;
|
| + scoped_ptr<printing::NativeMetafile> metafile(
|
| + printing::NativeMetafileFactory::CreateMetafile());
|
| int page_count = 0;
|
| bool send_expected_page_count =
|
| #if defined(OS_CHROMEOS)
|
| @@ -61,12 +65,12 @@ void PrintWebViewHelper::PrintPages(const ViewMsg_PrintPages_Params& params,
|
| #endif // defined(OS_CHROMEOS)
|
|
|
| if (!RenderPages(params, frame, send_expected_page_count, &page_count,
|
| - &metafile)) {
|
| + metafile.get())) {
|
| 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)
|
| @@ -78,7 +82,7 @@ void PrintWebViewHelper::PrintPages(const ViewMsg_PrintPages_Params& params,
|
| &sequence_number))) {
|
| return;
|
| }
|
| - if (!metafile.SaveTo(fd))
|
| + if (!metafile->SaveTo(fd))
|
| return;
|
|
|
| // Tell the browser we've finished writing the file.
|
| @@ -105,7 +109,7 @@ void PrintWebViewHelper::PrintPages(const ViewMsg_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));
|
|
|