diff options
author | vitalybuka <vitalybuka@chromium.org> | 2014-08-28 16:42:24 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-08-28 23:43:19 +0000 |
commit | 36259ca6a4aa40fa18c2ccbffa4e6b3a8b711868 (patch) | |
tree | c94d8428c3fdbaed0c5cd452a8a44c79a9bfadff /chrome/renderer | |
parent | 60a5bf4a8a5d1a2dad8e7a67f81e72756e886266 (diff) | |
download | chromium_src-36259ca6a4aa40fa18c2ccbffa4e6b3a8b711868.zip chromium_src-36259ca6a4aa40fa18c2ccbffa4e6b3a8b711868.tar.gz chromium_src-36259ca6a4aa40fa18c2ccbffa4e6b3a8b711868.tar.bz2 |
Removed print_web_view_helper_win.cc
Removed win_pdf_metafile_for_printing gyp option.
Removed WIN_PDF_METAFILE_FOR_PRINTING define.
BUG=170859
TBR=yzshen
Review URL: https://codereview.chromium.org/516823002
Cr-Commit-Position: refs/heads/master@{#292501}
Diffstat (limited to 'chrome/renderer')
-rw-r--r-- | chrome/renderer/BUILD.gn | 6 | ||||
-rw-r--r-- | chrome/renderer/printing/print_web_view_helper.cc | 5 | ||||
-rw-r--r-- | chrome/renderer/printing/print_web_view_helper.h | 15 | ||||
-rw-r--r-- | chrome/renderer/printing/print_web_view_helper_browsertest.cc | 8 | ||||
-rw-r--r-- | chrome/renderer/printing/print_web_view_helper_win.cc | 253 |
5 files changed, 9 insertions, 278 deletions
diff --git a/chrome/renderer/BUILD.gn b/chrome/renderer/BUILD.gn index fef9507..0cb4606 100644 --- a/chrome/renderer/BUILD.gn +++ b/chrome/renderer/BUILD.gn @@ -154,13 +154,7 @@ static_library("renderer") { } # TODO(GYP) - # ['win_pdf_metafile_for_printing==1', { # 'sources': [ # 'renderer/printing/print_web_view_helper_pdf_win.cc', # ], - # }, { - # 'sources': [ - # 'renderer/printing/print_web_view_helper_win.cc', - # ], - # }], } diff --git a/chrome/renderer/printing/print_web_view_helper.cc b/chrome/renderer/printing/print_web_view_helper.cc index 6dd507e..27ea08f 100644 --- a/chrome/renderer/printing/print_web_view_helper.cc +++ b/chrome/renderer/printing/print_web_view_helper.cc @@ -1340,8 +1340,7 @@ void PrintWebViewHelper::FinishFramePrinting() { prep_frame_view_.reset(); } -#if defined(OS_MACOSX) || \ - (defined(OS_WIN) && !defined(WIN_PDF_METAFILE_FOR_PRINTING)) +#if defined(OS_MACOSX) bool PrintWebViewHelper::PrintPagesNative(blink::WebFrame* frame, int page_count, const gfx::Size& canvas_size) { @@ -1366,7 +1365,7 @@ bool PrintWebViewHelper::PrintPagesNative(blink::WebFrame* frame, return true; } -#endif // OS_MACOSX || !WIN_PDF_METAFILE_FOR_PRINTING +#endif // OS_MACOSX // static - Not anonymous so that platform implementations can use it. void PrintWebViewHelper::ComputePageLayoutInPointsForCss( diff --git a/chrome/renderer/printing/print_web_view_helper.h b/chrome/renderer/printing/print_web_view_helper.h index dd82d7e..53fde04 100644 --- a/chrome/renderer/printing/print_web_view_helper.h +++ b/chrome/renderer/printing/print_web_view_helper.h @@ -209,7 +209,7 @@ class PrintWebViewHelper const gfx::Size& canvas_size, blink::WebFrame* frame, Metafile* metafile); -#elif defined(WIN_PDF_METAFILE_FOR_PRINTING) +#elif defined(OS_WIN) void PrintPageInternal(const PrintMsg_PrintPage_Params& params, const gfx::Size& canvas_size, blink::WebFrame* frame, @@ -227,16 +227,7 @@ class PrintWebViewHelper const blink::WebNode& node); // Platform specific helper function for rendering page(s) to |metafile|. -#if defined(OS_WIN) && !defined(WIN_PDF_METAFILE_FOR_PRINTING) - void RenderPage(const PrintMsg_Print_Params& params, - int page_number, - blink::WebFrame* frame, - bool is_preview, - Metafile* metafile, - double* scale_factor, - gfx::Size* page_size_in_dpi, - gfx::Rect* content_area_in_dpi); -#elif defined(OS_MACOSX) +#if defined(OS_MACOSX) void RenderPage(const PrintMsg_Print_Params& params, int page_number, blink::WebFrame* frame, @@ -244,7 +235,7 @@ class PrintWebViewHelper Metafile* metafile, gfx::Size* page_size, gfx::Rect* content_rect); -#endif // defined(OS_WIN) +#endif // defined(OS_MACOSX) // Renders page contents from |frame| to |content_area| of |canvas|. // |page_number| is zero-based. diff --git a/chrome/renderer/printing/print_web_view_helper_browsertest.cc b/chrome/renderer/printing/print_web_view_helper_browsertest.cc index 936d770..fb46a5d 100644 --- a/chrome/renderer/printing/print_web_view_helper_browsertest.cc +++ b/chrome/renderer/printing/print_web_view_helper_browsertest.cc @@ -243,7 +243,7 @@ TEST_F(PrintWebViewHelperTest, OnPrintPages) { VerifyPagesPrinted(true); } -#if (defined(OS_WIN) && !WIN_PDF_METAFILE_FOR_PRINTING) || defined(OS_MACOSX) +#if defined(OS_MACOSX) // TODO(estade): I don't think this test is worth porting to Linux. We will have // to rip out and replace most of the IPC code if we ever plan to improve // printing, and the comment below by sverrir suggests that it doesn't do much @@ -284,7 +284,7 @@ TEST_F(PrintWebViewHelperTest, PrintWithIframe) { EXPECT_NE(0, image1.size().width()); EXPECT_NE(0, image1.size().height()); } -#endif +#endif // OS_MACOSX // Tests if we can print a page and verify its results. // This test prints HTML pages into a pseudo printer and check their outputs, @@ -330,7 +330,7 @@ const TestPageData kTestPages[] = { // hooking up Cairo to read a pdf stream, or accessing the cairo surface in the // metafile directly. // Same for printing via PDF on Windows. -#if (defined(OS_WIN) && !WIN_PDF_METAFILE_FOR_PRINTING) || defined(OS_MACOSX) +#if defined(OS_MACOSX) TEST_F(PrintWebViewHelperTest, PrintLayoutTest) { bool baseline = false; @@ -383,7 +383,7 @@ TEST_F(PrintWebViewHelperTest, PrintLayoutTest) { } } } -#endif +#endif // OS_MACOSX // These print preview tests do not work on Chrome OS yet. #if !defined(OS_CHROMEOS) diff --git a/chrome/renderer/printing/print_web_view_helper_win.cc b/chrome/renderer/printing/print_web_view_helper_win.cc deleted file mode 100644 index 48d94a2..0000000 --- a/chrome/renderer/printing/print_web_view_helper_win.cc +++ /dev/null @@ -1,253 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/renderer/printing/print_web_view_helper.h" - -#include "base/logging.h" -#include "base/memory/scoped_ptr.h" -#include "base/metrics/histogram.h" -#include "base/process/process_handle.h" -#include "base/win/scoped_gdi_object.h" -#include "base/win/scoped_hdc.h" -#include "base/win/scoped_select_object.h" -#include "chrome/common/print_messages.h" -#include "printing/metafile.h" -#include "printing/metafile_impl.h" -#include "printing/metafile_skia_wrapper.h" -#include "printing/page_size_margins.h" -#include "printing/units.h" -#include "skia/ext/platform_device.h" -#include "skia/ext/refptr.h" -#include "skia/ext/vector_canvas.h" -#include "third_party/WebKit/public/web/WebLocalFrame.h" -#include "ui/gfx/gdi_util.h" -#include "ui/gfx/point.h" -#include "ui/gfx/rect.h" -#include "ui/gfx/size.h" - -namespace printing { - -using blink::WebFrame; - -void PrintWebViewHelper::PrintPageInternal( - const PrintMsg_PrintPage_Params& params, - const gfx::Size& canvas_size, - WebFrame* frame) { - // Generate a memory-based metafile. It will use the current screen's DPI. - // Each metafile contains a single page. - scoped_ptr<NativeMetafile> metafile(new NativeMetafile); - metafile->Init(); - DCHECK(metafile->context()); - skia::InitializeDC(metafile->context()); - - int page_number = params.page_number; - - // Calculate the dpi adjustment. - // Browser will render context using desired_dpi, so we need to calculate - // adjustment factor to play content on the printer DC later during the - // actual printing. - double actual_shrink = static_cast<float>(params.params.desired_dpi / - params.params.dpi); - gfx::Size page_size_in_dpi; - gfx::Rect content_area_in_dpi; - - // Render page for printing. - RenderPage(params.params, page_number, frame, false, metafile.get(), - &actual_shrink, &page_size_in_dpi, &content_area_in_dpi); - - // Close the device context to retrieve the compiled metafile. - if (!metafile->FinishDocument()) - NOTREACHED(); - - if (!params.params.supports_alpha_blend && metafile->IsAlphaBlendUsed()) { - scoped_ptr<NativeMetafile> raster_metafile( - metafile->RasterizeAlphaBlend()); - if (raster_metafile.get()) - metafile.swap(raster_metafile); - } - - // Get the size of the compiled metafile. - uint32 buf_size = metafile->GetDataSize(); - DCHECK_GT(buf_size, 128u); - - PrintHostMsg_DidPrintPage_Params page_params; - page_params.data_size = buf_size; - page_params.metafile_data_handle = NULL; - page_params.page_number = page_number; - page_params.document_cookie = params.params.document_cookie; - page_params.actual_shrink = actual_shrink; - page_params.page_size = page_size_in_dpi; - page_params.content_area = content_area_in_dpi; - - if (!CopyMetafileDataToSharedMem(metafile.get(), - &(page_params.metafile_data_handle))) { - page_params.data_size = 0; - } - - Send(new PrintHostMsg_DidPrintPage(routing_id(), page_params)); -} - -bool PrintWebViewHelper::RenderPreviewPage( - int page_number, - const PrintMsg_Print_Params& print_params) { - // Calculate the dpi adjustment. - double actual_shrink = static_cast<float>(print_params.desired_dpi / - print_params.dpi); - scoped_ptr<Metafile> draft_metafile; - Metafile* initial_render_metafile = print_preview_context_.metafile(); - - if (print_preview_context_.IsModifiable() && is_print_ready_metafile_sent_) { - draft_metafile.reset(new PreviewMetafile); - initial_render_metafile = draft_metafile.get(); - } - - base::TimeTicks begin_time = base::TimeTicks::Now(); - RenderPage(print_params, page_number, print_preview_context_.prepared_frame(), - true, initial_render_metafile, &actual_shrink, NULL, NULL); - print_preview_context_.RenderedPreviewPage( - base::TimeTicks::Now() - begin_time); - - if (draft_metafile.get()) { - draft_metafile->FinishDocument(); - } else if (print_preview_context_.IsModifiable() && - print_preview_context_.generate_draft_pages()) { - DCHECK(!draft_metafile.get()); - draft_metafile.reset( - print_preview_context_.metafile()->GetMetafileForCurrentPage()); - } - return PreviewPageRendered(page_number, draft_metafile.get()); -} - -void PrintWebViewHelper::RenderPage( - const PrintMsg_Print_Params& params, int page_number, WebFrame* frame, - bool is_preview, Metafile* metafile, double* actual_shrink, - gfx::Size* page_size_in_dpi, gfx::Rect* content_area_in_dpi) { - PageSizeMargins page_layout_in_points; - double css_scale_factor = 1.0f; - ComputePageLayoutInPointsForCss(frame, page_number, params, - ignore_css_margins_, &css_scale_factor, - &page_layout_in_points); - gfx::Size page_size; - gfx::Rect content_area; - GetPageSizeAndContentAreaFromPageLayout(page_layout_in_points, &page_size, - &content_area); - int dpi = static_cast<int>(params.dpi); - // Calculate the actual page size and content area in dpi. - if (page_size_in_dpi) { - *page_size_in_dpi = gfx::Size( - static_cast<int>(ConvertUnitDouble(page_size.width(), kPointsPerInch, - dpi)), - static_cast<int>(ConvertUnitDouble(page_size.height(), kPointsPerInch, - dpi))); - } - - if (content_area_in_dpi) { - *content_area_in_dpi = gfx::Rect( - static_cast<int>(ConvertUnitDouble(content_area.x(), kPointsPerInch, - dpi)), - static_cast<int>(ConvertUnitDouble(content_area.y(), kPointsPerInch, - dpi)), - static_cast<int>(ConvertUnitDouble(content_area.width(), kPointsPerInch, - dpi)), - static_cast<int>(ConvertUnitDouble(content_area.height(), - kPointsPerInch, dpi))); - } - - if (!is_preview) { - // Since WebKit extends the page width depending on the magical scale factor - // we make sure the canvas covers the worst case scenario (x2.0 currently). - // PrintContext will then set the correct clipping region. - page_size = gfx::Size( - static_cast<int>(page_layout_in_points.content_width * - params.max_shrink), - static_cast<int>(page_layout_in_points.content_height * - params.max_shrink)); - } - - float webkit_page_shrink_factor = frame->getPrintPageShrink(page_number); - float scale_factor = css_scale_factor * webkit_page_shrink_factor; - - gfx::Rect canvas_area = - params.display_header_footer ? gfx::Rect(page_size) : content_area; - - SkBaseDevice* device = metafile->StartPageForVectorCanvas( - page_size, canvas_area, scale_factor); - DCHECK(device); - // The printPage method may take a reference to the canvas we pass down, so it - // can't be a stack object. - skia::RefPtr<skia::VectorCanvas> canvas = - skia::AdoptRef(new skia::VectorCanvas(device)); - - if (is_preview) { - MetafileSkiaWrapper::SetMetafileOnCanvas(*canvas, metafile); - skia::SetIsDraftMode(*canvas, is_print_ready_metafile_sent_); - skia::SetIsPreviewMetafile(*canvas, is_preview); - } - - if (params.display_header_footer) { - // |page_number| is 0-based, so 1 is added. - PrintHeaderAndFooter(canvas.get(), - page_number + 1, - print_preview_context_.total_page_count(), - *frame, - scale_factor, - page_layout_in_points, - params); - } - - float webkit_scale_factor = RenderPageContent(frame, page_number, canvas_area, - content_area, scale_factor, - canvas.get()); - - if (*actual_shrink <= 0 || webkit_scale_factor <= 0) { - NOTREACHED() << "Printing page " << page_number << " failed."; - } else { - // While rendering certain plugins (PDF) to metafile, we might need to - // set custom scale factor. Update |actual_shrink| with custom scale - // if it is set on canvas. - // TODO(gene): We should revisit this solution for the next versions. - // Consider creating metafile of the right size (or resizable) - // https://code.google.com/p/chromium/issues/detail?id=126037 - if (!MetafileSkiaWrapper::GetCustomScaleOnCanvas( - *canvas, actual_shrink)) { - // Update the dpi adjustment with the "page |actual_shrink|" calculated in - // webkit. - *actual_shrink /= (webkit_scale_factor * css_scale_factor); - } - } - - bool result = metafile->FinishPage(); - DCHECK(result); -} - -bool PrintWebViewHelper::CopyMetafileDataToSharedMem( - Metafile* metafile, base::SharedMemoryHandle* shared_mem_handle) { - uint32 buf_size = metafile->GetDataSize(); - base::SharedMemory shared_buf; - if (buf_size >= kMetafileMaxSize) { - NOTREACHED() << "Buffer too large: " << buf_size; - return false; - } - - // Allocate a shared memory buffer to hold the generated metafile data. - if (!shared_buf.CreateAndMapAnonymous(buf_size)) { - NOTREACHED() << "Buffer allocation failed"; - return false; - } - - // Copy the bits into shared memory. - if (!metafile->GetData(shared_buf.memory(), buf_size)) { - NOTREACHED() << "GetData() failed"; - shared_buf.Unmap(); - return false; - } - shared_buf.GiveToProcess(base::GetCurrentProcessHandle(), shared_mem_handle); - shared_buf.Unmap(); - - Send(new PrintHostMsg_DuplicateSection(routing_id(), *shared_mem_handle, - shared_mem_handle)); - return true; -} - -} // namespace printing |