Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(55)

Unified Diff: chrome/renderer/print_web_view_helper_win.cc

Issue 7491074: Fix smelly scoped_ptr code in print_web_view_helper_win. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/renderer/print_web_view_helper.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/renderer/print_web_view_helper_win.cc
diff --git a/chrome/renderer/print_web_view_helper_win.cc b/chrome/renderer/print_web_view_helper_win.cc
index 9cd72ece67ff9817f5dae4897f8cb6dcdcbcde7a..865d38520f77125dd4f15d892df55f30e6d68a29 100644
--- a/chrome/renderer/print_web_view_helper_win.cc
+++ b/chrome/renderer/print_web_view_helper_win.cc
@@ -90,8 +90,8 @@ void PrintWebViewHelper::PrintPageInternal(
params.params.dpi);
// Render page for printing.
- RenderPage(params.params, &scale_factor, page_number, false, frame,
- &metafile);
+ metafile.reset(RenderPage(params.params, &scale_factor, page_number, false,
+ frame, metafile.get()));
// Close the device context to retrieve the compiled metafile.
if (!metafile->FinishDocument())
@@ -127,19 +127,15 @@ void PrintWebViewHelper::RenderPreviewPage(int page_number) {
float scale_factor = static_cast<float>(print_params.desired_dpi /
print_params.dpi);
- // |metafile| is needed for RenderPage() below. |metafile| will not take the
- // ownership of |print_preview_context_| metafile.
- scoped_ptr<Metafile> metafile(print_preview_context_.metafile());
-
base::TimeTicks begin_time = base::TimeTicks::Now();
+ // In the preview flow, RenderPage will never return a new metafile.
RenderPage(print_params, &scale_factor, page_number, true,
- print_preview_context_.frame(), &metafile);
+ print_preview_context_.frame(), print_preview_context_.metafile());
print_preview_context_.RenderedPreviewPage(
base::TimeTicks::Now() - begin_time);
// Release since |print_preview_context_| is the real owner.
Lei Zhang 2011/08/06 01:38:34 remove comment
- metafile.release();
printing::Metafile* page_metafile = NULL;
if (print_preview_context_.IsModifiable()) {
page_metafile = reinterpret_cast<printing::PreviewMetafile*>(
@@ -150,7 +146,7 @@ void PrintWebViewHelper::RenderPreviewPage(int page_number) {
void PrintWebViewHelper::RenderPage(
const PrintMsg_Print_Params& params, float* scale_factor, int page_number,
- bool is_preview, WebFrame* frame, scoped_ptr<Metafile>* metafile) {
+ bool is_preview, WebFrame* frame, Metafile* metafile) {
PageSizeMargins page_layout_in_points;
GetPageSizeAndMarginsInPoints(frame, page_number, params,
&page_layout_in_points);
@@ -178,17 +174,15 @@ void PrintWebViewHelper::RenderPage(
static_cast<int>(page_layout_in_points.margin_top),
static_cast<int>(page_layout_in_points.content_width),
static_cast<int>(page_layout_in_points.content_height));
- SkDevice* device = (*metafile)->StartPageForVectorCanvas(
+ SkDevice* device = metafile->StartPageForVectorCanvas(
page_size, content_area, frame->getPrintPageShrink(page_number));
DCHECK(device);
// The printPage method may take a reference to the canvas we pass down, so it
// can't be a stack object.
SkRefPtr<skia::VectorCanvas> canvas = new skia::VectorCanvas(device);
canvas->unref(); // SkRefPtr and new both took a reference.
- if (is_preview) {
- printing::MetafileSkiaWrapper::SetMetafileOnCanvas(canvas.get(),
- metafile->get());
- }
+ if (is_preview)
+ printing::MetafileSkiaWrapper::SetMetafileOnCanvas(canvas.get(), metafile);
float webkit_scale_factor = frame->printPage(page_number, canvas.get());
if (*scale_factor <= 0 || webkit_scale_factor <= 0) {
@@ -199,7 +193,7 @@ void PrintWebViewHelper::RenderPage(
*scale_factor /= webkit_scale_factor;
}
- bool result = (*metafile)->FinishPage();
+ bool result = metafile->FinishPage();
DCHECK(result);
if (!params.supports_alpha_blend) {
@@ -210,10 +204,10 @@ void PrintWebViewHelper::RenderPage(
if (platform_device && platform_device->AlphaBlendUsed()) {
// Currently, we handle alpha blend transparency for a single page.
// Therefore, expecting a metafile with page count 1.
- DCHECK_EQ(1U, (*metafile)->GetPageCount());
+ DCHECK_EQ(1U, metafile->GetPageCount());
// Close the device context to retrieve the compiled metafile.
- if (!(*metafile)->FinishDocument())
+ if (!metafile->FinishDocument())
NOTREACHED();
// Page used alpha blend, but printer doesn't support it. Rewrite the
@@ -235,26 +229,27 @@ void PrintWebViewHelper::RenderPage(
HBRUSH whiteBrush = static_cast<HBRUSH>(GetStockObject(WHITE_BRUSH));
FillRect(bitmap_dc, &rect, whiteBrush);
- scoped_ptr<Metafile> metafile2(new printing::NativeMetafile);
+ Metafile* metafile2(new printing::NativeMetafile);
metafile2->Init();
HDC hdc = metafile2->context();
DCHECK(hdc);
skia::InitializeDC(hdc);
- RECT metafile_bounds = (*metafile)->GetPageBounds(1).ToRECT();
+ RECT metafile_bounds = metafile->GetPageBounds(1).ToRECT();
// Process the old metafile, placing all non-AlphaBlend calls into the
// new metafile, and copying the results of all the AlphaBlend calls
// from the bitmap DC.
EnumEnhMetaFile(hdc,
- (*metafile)->emf(),
+ metafile->emf(),
EnhMetaFileProc,
&bitmap_dc,
&metafile_bounds);
SelectObject(bitmap_dc, old_bitmap);
- metafile->reset(metafile2.release());
+ return metafile2;
}
}
+ return metafile;
}
bool PrintWebViewHelper::CopyMetafileDataToSharedMem(
« no previous file with comments | « chrome/renderer/print_web_view_helper.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698