summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/printing
diff options
context:
space:
mode:
authorhalcanary <halcanary@google.com>2014-11-10 14:20:05 -0800
committerCommit bot <commit-bot@chromium.org>2014-11-10 22:20:34 +0000
commit5be808e0b7478b27304f5a29b47ba1af1de627d2 (patch)
tree366bb7805c87248f62a55edd86584828fc58f0c6 /chrome/renderer/printing
parenteeb7d1b688e3eabaf37341f8a84dec3c29aeac07 (diff)
downloadchromium_src-5be808e0b7478b27304f5a29b47ba1af1de627d2.zip
chromium_src-5be808e0b7478b27304f5a29b47ba1af1de627d2.tar.gz
chromium_src-5be808e0b7478b27304f5a29b47ba1af1de627d2.tar.bz2
PdfMetafileSkia gives out a SkCanvas, not a SkBaseDevice.
Motivation: hide SkPDFDevice and SkPDFDocument behind PdfMetafileSkia class. pdf_metafile_skia.cc: Implement GetVectorCanvasForNewPage. Remove StartPageForVectorCanvas. Own the SkCanvas pointer (current_page_canvas_). Replace page_outstanding_ field with a method that checks to see if current_page_canvas_ is NULL. Implement SaveTo. skia::VectorPlatformDeviceSkia remove class print_web_view_helper.cc Remove calls to canvas->getTopDevice()->setDrawingArea(...); (SkDFDevice) This API is no longer effective. print_web_view_helper_linux.cc, print_web_view_helper_mac.mm, print_web_view_helper_pdf_win.cc: call GetVectorCanvasForNewPage rather than StartPageForVectorCanvas BUG=278148 Review URL: https://codereview.chromium.org/704813002 Cr-Commit-Position: refs/heads/master@{#303522}
Diffstat (limited to 'chrome/renderer/printing')
-rw-r--r--chrome/renderer/printing/print_web_view_helper.cc7
-rw-r--r--chrome/renderer/printing/print_web_view_helper_linux.cc24
-rw-r--r--chrome/renderer/printing/print_web_view_helper_mac.mm18
-rw-r--r--chrome/renderer/printing/print_web_view_helper_pdf_win.cc32
4 files changed, 24 insertions, 57 deletions
diff --git a/chrome/renderer/printing/print_web_view_helper.cc b/chrome/renderer/printing/print_web_view_helper.cc
index 67e000f..494ab7e 100644
--- a/chrome/renderer/printing/print_web_view_helper.cc
+++ b/chrome/renderer/printing/print_web_view_helper.cc
@@ -28,7 +28,6 @@
#include "net/base/escape.h"
#include "printing/pdf_metafile_skia.h"
#include "printing/units.h"
-#include "skia/ext/vector_platform_device_skia.h"
#include "third_party/WebKit/public/platform/WebSize.h"
#include "third_party/WebKit/public/platform/WebURLRequest.h"
#include "third_party/WebKit/public/web/WebConsoleMessage.h"
@@ -453,10 +452,6 @@ void PrintWebViewHelper::PrintHeaderAndFooter(
float webkit_scale_factor,
const PageSizeMargins& page_layout,
const PrintMsg_Print_Params& params) {
- skia::VectorPlatformDeviceSkia* device =
- static_cast<skia::VectorPlatformDeviceSkia*>(canvas->getTopDevice());
- device->setDrawingArea(SkPDFDevice::kMargin_DrawingArea);
-
SkAutoCanvasRestore auto_restore(canvas, true);
canvas->scale(1 / webkit_scale_factor, 1 / webkit_scale_factor);
@@ -503,8 +498,6 @@ void PrintWebViewHelper::PrintHeaderAndFooter(
web_view->close();
frame->close();
-
- device->setDrawingArea(SkPDFDevice::kContent_DrawingArea);
}
#endif // defined(ENABLE_PRINT_PREVIEW)
diff --git a/chrome/renderer/printing/print_web_view_helper_linux.cc b/chrome/renderer/printing/print_web_view_helper_linux.cc
index 18bfd31..ae862d9 100644
--- a/chrome/renderer/printing/print_web_view_helper_linux.cc
+++ b/chrome/renderer/printing/print_web_view_helper_linux.cc
@@ -161,16 +161,11 @@ void PrintWebViewHelper::PrintPageInternal(
gfx::Rect canvas_area =
params.params.display_header_footer ? gfx::Rect(page_size) : content_area;
- SkBaseDevice* device = metafile->StartPageForVectorCanvas(page_size,
- canvas_area,
- scale_factor);
- if (!device)
+ skia::VectorCanvas* canvas =
+ metafile->GetVectorCanvasForNewPage(page_size, canvas_area, scale_factor);
+ if (!canvas)
return;
- // The printPage method 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));
MetafileSkiaWrapper::SetMetafileOnCanvas(*canvas, metafile);
skia::SetIsDraftMode(*canvas, is_print_ready_metafile_sent_);
@@ -178,20 +173,17 @@ void PrintWebViewHelper::PrintPageInternal(
if (params.params.display_header_footer) {
// |page_number| is 0-based, so 1 is added.
// TODO(vitalybuka) : why does it work only with 1.25?
- PrintHeaderAndFooter(canvas.get(),
- params.page_number + 1,
- print_preview_context_.total_page_count(),
- *frame,
- scale_factor / 1.25,
- page_layout_in_points,
+ PrintHeaderAndFooter(canvas, params.page_number + 1,
+ print_preview_context_.total_page_count(), *frame,
+ scale_factor / 1.25, page_layout_in_points,
params.params);
}
#endif // defined(ENABLE_PRINT_PREVIEW)
RenderPageContent(frame, params.page_number, canvas_area, content_area,
- scale_factor, canvas.get());
+ scale_factor, canvas);
- // Done printing. Close the device context to retrieve the compiled metafile.
+ // Done printing. Close the canvas to retrieve the compiled metafile.
if (!metafile->FinishPage())
NOTREACHED() << "metafile failed";
}
diff --git a/chrome/renderer/printing/print_web_view_helper_mac.mm b/chrome/renderer/printing/print_web_view_helper_mac.mm
index db8bb80..ffde22c 100644
--- a/chrome/renderer/printing/print_web_view_helper_mac.mm
+++ b/chrome/renderer/printing/print_web_view_helper_mac.mm
@@ -118,29 +118,23 @@ void PrintWebViewHelper::RenderPage(const PrintMsg_Print_Params& params,
params.display_header_footer ? gfx::Rect(*page_size) : content_area;
{
- SkBaseDevice* device = metafile->StartPageForVectorCanvas(
+ skia::VectorCanvas* canvas = metafile->GetVectorCanvasForNewPage(
*page_size, canvas_area, scale_factor);
- if (!device)
+ if (!canvas)
return;
- skia::RefPtr<skia::VectorCanvas> canvas =
- skia::AdoptRef(new skia::VectorCanvas(device));
- blink::WebCanvas* canvas_ptr = canvas.get();
MetafileSkiaWrapper::SetMetafileOnCanvas(*canvas, metafile);
skia::SetIsDraftMode(*canvas, is_print_ready_metafile_sent_);
skia::SetIsPreviewMetafile(*canvas, is_preview);
if (params.display_header_footer) {
- PrintHeaderAndFooter(canvas_ptr,
+ PrintHeaderAndFooter(static_cast<blink::WebCanvas*>(canvas),
page_number + 1,
- print_preview_context_.total_page_count(),
- *frame,
- scale_factor,
- page_layout_in_points,
- params);
+ print_preview_context_.total_page_count(), *frame,
+ scale_factor, page_layout_in_points, params);
}
RenderPageContent(frame, page_number, canvas_area, content_area,
- scale_factor, canvas_ptr);
+ scale_factor, static_cast<blink::WebCanvas*>(canvas));
}
// Done printing. Close the device context to retrieve the compiled metafile.
diff --git a/chrome/renderer/printing/print_web_view_helper_pdf_win.cc b/chrome/renderer/printing/print_web_view_helper_pdf_win.cc
index b6300b0..d9554d7 100644
--- a/chrome/renderer/printing/print_web_view_helper_pdf_win.cc
+++ b/chrome/renderer/printing/print_web_view_helper_pdf_win.cc
@@ -179,38 +179,26 @@ void PrintWebViewHelper::PrintPageInternal(
frame->getPrintPageShrink(params.page_number);
float scale_factor = css_scale_factor * webkit_page_shrink_factor;
- SkBaseDevice* device = metafile->StartPageForVectorCanvas(page_size,
- canvas_area,
- scale_factor);
- if (!device)
+ skia::VectorCanvas* canvas =
+ metafile->GetVectorCanvasForNewPage(page_size, canvas_area, scale_factor);
+ if (!canvas)
return;
- // The printPage method 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));
MetafileSkiaWrapper::SetMetafileOnCanvas(*canvas, metafile);
skia::SetIsDraftMode(*canvas, is_print_ready_metafile_sent_);
if (params.params.display_header_footer) {
// |page_number| is 0-based, so 1 is added.
- PrintHeaderAndFooter(canvas.get(),
- params.page_number + 1,
- print_preview_context_.total_page_count(),
- *frame,
- scale_factor,
- page_layout_in_points,
- params.params);
+ PrintHeaderAndFooter(canvas, params.page_number + 1,
+ print_preview_context_.total_page_count(), *frame,
+ scale_factor, page_layout_in_points, params.params);
}
- float webkit_scale_factor = RenderPageContent(frame,
- params.page_number,
- canvas_area,
- content_area,
- scale_factor,
- canvas.get());
+ float webkit_scale_factor =
+ RenderPageContent(frame, params.page_number, canvas_area, content_area,
+ scale_factor, canvas);
DCHECK_GT(webkit_scale_factor, 0.0f);
- // Done printing. Close the device context to retrieve the compiled metafile.
+ // Done printing. Close the canvas to retrieve the compiled metafile.
if (!metafile->FinishPage())
NOTREACHED() << "metafile failed";
}