Index: chrome/renderer/print_web_view_helper_mac.mm |
diff --git a/chrome/renderer/print_web_view_helper_mac.mm b/chrome/renderer/print_web_view_helper_mac.mm |
index cc4a8d673e60159eca17d9a102b78e27272a2bf6..7a1f7e61ea90a60ed45175795d43f0a865c2050d 100644 |
--- a/chrome/renderer/print_web_view_helper_mac.mm |
+++ b/chrome/renderer/print_web_view_helper_mac.mm |
@@ -7,11 +7,13 @@ |
#import <AppKit/AppKit.h> |
#include "base/logging.h" |
+#include "base/scoped_ptr.h" |
#include "chrome/common/render_messages.h" |
#include "chrome/common/render_messages_params.h" |
#include "chrome/renderer/render_view.h" |
#include "grit/generated_resources.h" |
#include "printing/native_metafile.h" |
+#include "printing/native_metafile_factory.h" |
#include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" |
#include "third_party/WebKit/Source/WebKit/chromium/public/WebCanvas.h" |
#include "third_party/WebKit/Source/WebKit/chromium/public/WebRect.h" |
@@ -26,8 +28,9 @@ using WebKit::WebSize; |
void PrintWebViewHelper::PrintPage(const ViewMsg_PrintPage_Params& params, |
const gfx::Size& canvas_size, |
WebFrame* frame) { |
- printing::NativeMetafile metafile; |
- if (!metafile.Init()) |
+ scoped_ptr<printing::NativeMetafile> metafile( |
+ printing::MetafileFactory::GetMetafile()); |
+ if (!metafile->Init()) |
return; |
float scale_factor = frame->getPrintPageShrink(params.page_number); |
@@ -38,16 +41,16 @@ void PrintWebViewHelper::PrintPage(const ViewMsg_PrintPage_Params& params, |
// Render page for printing. |
gfx::Point origin(0.0f, 0.0f); |
RenderPage(params.params.printable_size, origin, scale_factor, page_number, |
- frame, &metafile); |
+ frame, metafile); |
- metafile.Close(); |
+ metafile->Close(); |
double margin_left = params.params.margin_left; |
double margin_top = params.params.margin_top; |
// Get the size of the compiled metafile. |
ViewHostMsg_DidPrintPage_Params page_params; |
- page_params.data_size = metafile.GetDataSize(); |
+ page_params.data_size = metafile->GetDataSize(); |
page_params.page_number = page_number; |
page_params.document_cookie = params.params.document_cookie; |
page_params.actual_shrink = scale_factor; |
@@ -56,7 +59,7 @@ void PrintWebViewHelper::PrintPage(const ViewMsg_PrintPage_Params& params, |
page_params.content_area = gfx::Rect(margin_left, margin_top, width, height); |
// Ask the browser to create the shared memory for us. |
- if (!CopyMetafileDataToSharedMem(&metafile, |
+ if (!CopyMetafileDataToSharedMem(metafile, |
&(page_params.metafile_data_handle))) { |
page_params.data_size = 0; |
} |
@@ -80,8 +83,9 @@ void PrintWebViewHelper::CreatePreviewDocument( |
double originX = printParams.margin_left; |
double originY = printParams.margin_top; |
- printing::NativeMetafile metafile; |
- if (!metafile.Init()) |
+ scoped_ptr<printing::NativeMetafile> metafile( |
+ printing::MetafileFactory::GetMetafile()); |
+ if (!metafile->Init()) |
return; |
gfx::Point origin(originX, originY); |
@@ -89,24 +93,24 @@ void PrintWebViewHelper::CreatePreviewDocument( |
if (params.pages.empty()) { |
for (int i = 0; i < page_count; ++i) { |
RenderPage(printParams.page_size, origin, scale_factor, i, frame, |
- &metafile); |
+ metafile); |
} |
} else { |
for (size_t i = 0; i < params.pages.size(); ++i) { |
if (params.pages[i] >= page_count) |
break; |
RenderPage(printParams.page_size, origin, scale_factor, |
- static_cast<int>(params.pages[i]), frame, &metafile); |
+ static_cast<int>(params.pages[i]), frame, metafile); |
} |
} |
- metafile.Close(); |
+ metafile->Close(); |
ViewHostMsg_DidPreviewDocument_Params preview_params; |
- preview_params.data_size = metafile.GetDataSize(); |
+ preview_params.data_size = metafile->GetDataSize(); |
preview_params.document_cookie = params.params.document_cookie; |
// Ask the browser to create the shared memory for us. |
- if (!CopyMetafileDataToSharedMem(&metafile, |
+ if (!CopyMetafileDataToSharedMem(metafile, |
&(preview_params.metafile_data_handle))) { |
preview_params.data_size = 0; |
} |