diff options
author | vandebo@chromium.org <vandebo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-11 21:54:06 +0000 |
---|---|---|
committer | vandebo@chromium.org <vandebo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-11 21:54:06 +0000 |
commit | 7d748990b39550c77aa914ba6846885dd7352e10 (patch) | |
tree | 3777582ee9816b3488f218b594db1918e5ebe752 /chrome/renderer/print_web_view_helper_linux.cc | |
parent | 03e204f307255e8f39aeb002f94b8eb04137e7f9 (diff) | |
download | chromium_src-7d748990b39550c77aa914ba6846885dd7352e10.zip chromium_src-7d748990b39550c77aa914ba6846885dd7352e10.tar.gz chromium_src-7d748990b39550c77aa914ba6846885dd7352e10.tar.bz2 |
Connect the right metafiles for print preview on Linux and Windows.
+ Remove the NativeMetafileFactory since we can't just use preview flag.
+ Update each Metafile constructor site to use PreviewMetafile or NativeMetafileImpl.
+ Fix misc. problems blocking pdf generation on Windows.
+ Rename the metafile interface.
BUG=NONE
TEST=NONE
Review URL: http://codereview.chromium.org/6826027
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@81161 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.cc | 42 |
1 files changed, 20 insertions, 22 deletions
diff --git a/chrome/renderer/print_web_view_helper_linux.cc b/chrome/renderer/print_web_view_helper_linux.cc index 30ddb6b..ecb7b7b 100644 --- a/chrome/renderer/print_web_view_helper_linux.cc +++ b/chrome/renderer/print_web_view_helper_linux.cc @@ -9,9 +9,9 @@ #include "base/memory/scoped_ptr.h" #include "chrome/common/print_messages.h" #include "content/common/view_messages.h" -#include "printing/native_metafile_factory.h" -#include "printing/native_metafile_skia_wrapper.h" -#include "printing/native_metafile.h" +#include "printing/metafile.h" +#include "printing/metafile_impl.h" +#include "printing/metafile_skia_wrapper.h" #include "skia/ext/vector_canvas.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" #include "ui/gfx/point.h" @@ -26,17 +26,16 @@ using WebKit::WebNode; void PrintWebViewHelper::CreatePreviewDocument( const PrintMsg_PrintPages_Params& params, WebKit::WebFrame* frame, WebKit::WebNode* node) { - // We only can use PDF in the renderer because Cairo needs to create a - // temporary file for a PostScript surface. - scoped_ptr<printing::NativeMetafile> metafile( - printing::NativeMetafileFactory::Create()); int page_count = 0; + printing::PreviewMetafile metafile; + if (!metafile.Init()) + return; - if (!RenderPages(params, frame, node, false, &page_count, metafile.get())) + if (!RenderPages(params, frame, node, false, &page_count, &metafile)) return; // Get the size of the resulting metafile. - uint32 buf_size = metafile->GetDataSize(); + uint32 buf_size = metafile.GetDataSize(); DCHECK_GT(buf_size, 0u); PrintHostMsg_DidPreviewDocument_Params preview_params; @@ -44,7 +43,7 @@ void PrintWebViewHelper::CreatePreviewDocument( preview_params.expected_pages_count = page_count; preview_params.data_size = buf_size; - if (!CopyMetafileDataToSharedMem(metafile.get(), + if (!CopyMetafileDataToSharedMem(&metafile, &(preview_params.metafile_data_handle))) { preview_params.expected_pages_count = 0; preview_params.data_size = 0; @@ -55,10 +54,6 @@ void PrintWebViewHelper::CreatePreviewDocument( void PrintWebViewHelper::PrintPages(const PrintMsg_PrintPages_Params& params, WebFrame* frame, WebNode* node) { - // We only can use PDF in the renderer because Cairo needs to create a - // temporary file for a PostScript surface. - scoped_ptr<printing::NativeMetafile> metafile( - printing::NativeMetafileFactory::Create()); int page_count = 0; bool send_expected_page_count = #if defined(OS_CHROMEOS) @@ -67,13 +62,17 @@ void PrintWebViewHelper::PrintPages(const PrintMsg_PrintPages_Params& params, true; #endif // defined(OS_CHROMEOS) + printing::NativeMetafile metafile; + if (!metafile.Init()) + return; + if (!RenderPages(params, frame, node, send_expected_page_count, &page_count, - metafile.get())) { + &metafile)) { 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) @@ -85,7 +84,7 @@ void PrintWebViewHelper::PrintPages(const PrintMsg_PrintPages_Params& params, &sequence_number))) { return; } - if (!metafile->SaveToFD(fd)) + if (!metafile.SaveToFD(fd)) return; // Tell the browser we've finished writing the file. @@ -112,7 +111,7 @@ void PrintWebViewHelper::PrintPages(const PrintMsg_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)); @@ -149,7 +148,7 @@ bool PrintWebViewHelper::RenderPages(const PrintMsg_PrintPages_Params& params, WebKit::WebNode* node, bool send_expected_page_count, int* page_count, - printing::NativeMetafile* metafile) { + printing::Metafile* metafile) { PrintMsg_Print_Params printParams = params.params; scoped_ptr<skia::VectorCanvas> canvas; @@ -197,7 +196,7 @@ void PrintWebViewHelper::PrintPageInternal( const PrintMsg_PrintPage_Params& params, const gfx::Size& canvas_size, WebFrame* frame, - printing::NativeMetafile* metafile, + printing::Metafile* metafile, scoped_ptr<skia::VectorCanvas>* canvas) { double content_width_in_points; double content_height_in_points; @@ -228,8 +227,7 @@ void PrintWebViewHelper::PrintPageInternal( return; canvas->reset(new skia::VectorCanvas(device)); - printing::NativeMetafileSkiaWrapper::SetMetafileOnCanvas(canvas->get(), - metafile); + printing::MetafileSkiaWrapper::SetMetafileOnCanvas(canvas->get(), metafile); frame->printPage(params.page_number, canvas->get()); // TODO(myhuang): We should handle transformation for paper margins. |