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

Unified Diff: chrome/browser/printing/print_job.cc

Issue 2643163002: Refactor print_job.cc (Closed)
Patch Set: Fix constructor Created 3 years, 11 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/browser/printing/print_job.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/printing/print_job.cc
diff --git a/chrome/browser/printing/print_job.cc b/chrome/browser/printing/print_job.cc
index fc9b9a9a9dbfa35b38408630d1a584916c24ee43..b00ee4829a53a375dc744e2d803b015a4c737f67 100644
--- a/chrome/browser/printing/print_job.cc
+++ b/chrome/browser/printing/print_job.cc
@@ -222,16 +222,17 @@ PrintedDocument* PrintJob::document() const {
}
#if defined(OS_WIN)
-
-class PrintJob::PdfToEmfState {
+class PrintJob::PdfConversionState {
public:
- PdfToEmfState(const gfx::Size& page_size, const gfx::Rect& content_area)
+ PdfConversionState(gfx::Size page_size,
+ gfx::Rect content_area,
+ std::unique_ptr<PdfConverter> converter)
: page_count_(0),
current_page_(0),
pages_in_progress_(0),
page_size_(page_size),
content_area_(content_area),
- converter_(PdfConverter::CreatePdfToEmfConverter()) {}
+ converter_(std::move(converter)) {}
void Start(const scoped_refptr<base::RefCountedMemory>& data,
const PdfRenderSettings& conversion_settings,
@@ -280,46 +281,48 @@ void PrintJob::StartPdfToEmfConversion(
const gfx::Size& page_size,
const gfx::Rect& content_area,
bool print_text_with_gdi) {
- DCHECK(!pdf_to_emf_state_);
- pdf_to_emf_state_ = base::MakeUnique<PdfToEmfState>(page_size, content_area);
+ DCHECK(!pdf_conversion_state_);
+ pdf_conversion_state_ =
+ base::MakeUnique<PdfConversionState>(page_size, content_area,
+ PdfConverter::CreatePdfToEmfConverter());
const int kPrinterDpi = settings().dpi();
- pdf_to_emf_state_->Start(
- bytes, PdfRenderSettings(content_area, kPrinterDpi, true),
- print_text_with_gdi, base::Bind(&PrintJob::OnPdfToEmfStarted, this));
+ PdfRenderSettings settings(content_area, kPrinterDpi, true /* autorotate? */);
+ pdf_conversion_state_->Start(
+ bytes, settings, print_text_with_gdi,
+ base::Bind(&PrintJob::OnPdfConversionStarted, this));
}
-void PrintJob::OnPdfToEmfStarted(int page_count) {
+void PrintJob::OnPdfConversionStarted(int page_count) {
if (page_count <= 0) {
- pdf_to_emf_state_.reset();
+ pdf_conversion_state_.reset();
Cancel();
return;
}
- pdf_to_emf_state_->set_page_count(page_count);
- pdf_to_emf_state_->GetMorePages(
- base::Bind(&PrintJob::OnPdfToEmfPageConverted, this));
+ pdf_conversion_state_->set_page_count(page_count);
+ pdf_conversion_state_->GetMorePages(
+ base::Bind(&PrintJob::OnPdfPageConverted, this));
}
-void PrintJob::OnPdfToEmfPageConverted(int page_number,
- float scale_factor,
- std::unique_ptr<MetafilePlayer> emf) {
- DCHECK(pdf_to_emf_state_);
- if (!document_.get() || !emf || page_number < 0 ||
+void PrintJob::OnPdfPageConverted(int page_number,
+ float scale_factor,
+ std::unique_ptr<MetafilePlayer> metafile) {
+ DCHECK(pdf_conversion_state_);
+ if (!document_.get() || !metafile || page_number < 0 ||
static_cast<size_t>(page_number) >= pdf_page_mapping_.size()) {
- pdf_to_emf_state_.reset();
+ pdf_conversion_state_.reset();
Cancel();
return;
}
// Update the rendered document. It will send notifications to the listener.
- document_->SetPage(pdf_page_mapping_[page_number], std::move(emf),
- scale_factor, pdf_to_emf_state_->page_size(),
- pdf_to_emf_state_->content_area());
+ document_->SetPage(pdf_page_mapping_[page_number], std::move(metafile),
+ scale_factor, pdf_conversion_state_->page_size(),
+ pdf_conversion_state_->content_area());
- pdf_to_emf_state_->GetMorePages(
- base::Bind(&PrintJob::OnPdfToEmfPageConverted, this));
+ pdf_conversion_state_->GetMorePages(
+ base::Bind(&PrintJob::OnPdfPageConverted, this));
}
-
-#endif // OS_WIN
+#endif // defined(OS_WIN)
void PrintJob::UpdatePrintedDocument(PrintedDocument* new_document) {
if (document_.get() == new_document)
@@ -370,8 +373,10 @@ void PrintJob::OnNotifyPrintJobEvent(const JobEventDetails& event_details) {
}
case JobEventDetails::PAGE_DONE:
#if defined(OS_WIN)
- pdf_to_emf_state_->OnPageProcessed(
- base::Bind(&PrintJob::OnPdfToEmfPageConverted, this));
+ if (pdf_conversion_state_) {
+ pdf_conversion_state_->OnPageProcessed(
+ base::Bind(&PrintJob::OnPdfPageConverted, this));
+ }
#endif // defined(OS_WIN)
break;
default: {
« no previous file with comments | « chrome/browser/printing/print_job.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698