diff options
Diffstat (limited to 'chrome/renderer/print_web_view_helper_linux.cc')
-rw-r--r-- | chrome/renderer/print_web_view_helper_linux.cc | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/chrome/renderer/print_web_view_helper_linux.cc b/chrome/renderer/print_web_view_helper_linux.cc index c4446d3..46e47ea 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) @@ -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)); |