summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/print_web_view_helper_linux.cc
diff options
context:
space:
mode:
authordpapad@chromium.org <dpapad@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-02 16:46:20 +0000
committerdpapad@chromium.org <dpapad@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-02 16:46:20 +0000
commit1f3b6804df95e260d5e9a3fff0c478818240cdb9 (patch)
tree208ac1115304f544e62e1483ec12a7e17d7ff078 /chrome/renderer/print_web_view_helper_linux.cc
parent21f1168bab8f4ac626011148ae6e65d8fd24272a (diff)
downloadchromium_src-1f3b6804df95e260d5e9a3fff0c478818240cdb9.zip
chromium_src-1f3b6804df95e260d5e9a3fff0c478818240cdb9.tar.gz
chromium_src-1f3b6804df95e260d5e9a3fff0c478818240cdb9.tar.bz2
Applying factory pattern (through NativeMetafileFactory class). It is used to retrieve different printing contexts (based on the platform and user preferences).
BUG=NONE TEST=NONE Review URL: http://codereview.chromium.org/6544028 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@76553 0039d316-1c4b-4281-b951-d872f2087c98
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));