Index: chrome/browser/printing/print_view_manager_base.cc |
diff --git a/chrome/browser/printing/print_view_manager_base.cc b/chrome/browser/printing/print_view_manager_base.cc |
index 26de64b5c9ba940b2f7c93ef6556dfcd35d22199..45f34df0e87259733ad3756497a94855f3e5a3e5 100644 |
--- a/chrome/browser/printing/print_view_manager_base.cc |
+++ b/chrome/browser/printing/print_view_manager_base.cc |
@@ -130,7 +130,7 @@ void PrintViewManagerBase::OnDidGetDocumentCookie(int cookie) { |
void PrintViewManagerBase::OnPdfToEmfConverted( |
const PrintHostMsg_DidPrintPage_Params& params, |
double scale_factor, |
- const std::vector<base::FilePath>& emf_files) { |
+ ScopedVector<Metafile>* emf_files) { |
if (!print_job_.get()) |
return; |
@@ -138,20 +138,23 @@ void PrintViewManagerBase::OnPdfToEmfConverted( |
if (!document) |
return; |
- for (size_t i = 0; i < emf_files.size(); ++i) { |
- scoped_ptr<printing::Emf> metafile(new printing::Emf); |
- if (!metafile->InitFromFile(emf_files[i])) { |
- NOTREACHED() << "Invalid metafile"; |
+ for (size_t i = 0; i < emf_files->size(); ++i) { |
+ if (!(*emf_files)[i]) { |
web_contents()->Stop(); |
return; |
} |
+ } |
+ |
+ for (size_t i = 0; i < emf_files->size(); ++i) { |
// Update the rendered document. It will send notifications to the listener. |
document->SetPage(i, |
- metafile.release(), |
+ (*emf_files)[i], |
scale_factor, |
params.page_size, |
params.content_area); |
} |
+ // document->SetPage took ownership of all EMFs. |
+ emf_files->weak_clear(); |
ShouldQuitFromInnerMessageLoop(); |
} |