summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/print_web_view_helper_linux.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/renderer/print_web_view_helper_linux.cc')
-rw-r--r--chrome/renderer/print_web_view_helper_linux.cc20
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));