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)); |