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

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

Issue 7831041: Fix print preview workflow to reflect settings of selected printer. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Update per code review Created 9 years, 3 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
Index: chrome/browser/printing/printing_message_filter.cc
diff --git a/chrome/browser/printing/printing_message_filter.cc b/chrome/browser/printing/printing_message_filter.cc
index f0b8a651d7a41fbf69c5408eaa39ba6eaec9a8e7..98bcc6f344ea31f4bd9cc461f067684deb4f1605 100644
--- a/chrome/browser/printing/printing_message_filter.cc
+++ b/chrome/browser/printing/printing_message_filter.cc
@@ -288,22 +288,29 @@ void PrintingMessageFilter::OnUpdatePrintSettings(
int document_cookie, const DictionaryValue& job_settings,
IPC::Message* reply_msg) {
scoped_refptr<printing::PrinterQuery> printer_query;
- print_job_manager_->PopPrinterQuery(document_cookie, &printer_query);
- if (printer_query.get()) {
- CancelableTask* task = NewRunnableMethod(
- this,
- &PrintingMessageFilter::OnUpdatePrintSettingsReply,
- printer_query,
- reply_msg);
- printer_query->SetSettings(job_settings, task);
+ if (!print_job_manager_->printing_enabled()) {
+ // Reply with NULL query.
+ OnUpdatePrintSettingsReply(printer_query, reply_msg);
+ return;
}
+
+ print_job_manager_->PopPrinterQuery(document_cookie, &printer_query);
+ if (!printer_query.get())
+ printer_query = new printing::PrinterQuery;
+ CancelableTask* task = NewRunnableMethod(
+ this,
+ &PrintingMessageFilter::OnUpdatePrintSettingsReply,
+ printer_query,
+ reply_msg);
+ printer_query->SetSettings(job_settings, task);
}
void PrintingMessageFilter::OnUpdatePrintSettingsReply(
scoped_refptr<printing::PrinterQuery> printer_query,
IPC::Message* reply_msg) {
PrintMsg_PrintPages_Params params;
- if (printer_query->last_status() != printing::PrintingContext::OK) {
+ if (!printer_query.get() ||
+ printer_query->last_status() != printing::PrintingContext::OK) {
params.Reset();
} else {
RenderParamsFromPrintSettings(printer_query->settings(), &params.params);
@@ -314,10 +321,12 @@ void PrintingMessageFilter::OnUpdatePrintSettingsReply(
PrintHostMsg_UpdatePrintSettings::WriteReplyParams(reply_msg, params);
Send(reply_msg);
// If user hasn't cancelled.
- if (printer_query->cookie() && printer_query->settings().dpi())
- print_job_manager_->QueuePrinterQuery(printer_query.get());
- else
- printer_query->StopWorker();
+ if (printer_query.get()) {
+ if (printer_query->cookie() && printer_query->settings().dpi())
+ print_job_manager_->QueuePrinterQuery(printer_query.get());
+ else
+ printer_query->StopWorker();
+ }
}
void PrintingMessageFilter::OnCheckForCancel(const std::string& preview_ui_addr,
« no previous file with comments | « chrome/browser/printing/print_dialog_gtk.cc ('k') | chrome/browser/resources/print_preview/print_preview.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698