Index: chrome/browser/printing/printer_query.cc |
diff --git a/chrome/browser/printing/printer_query.cc b/chrome/browser/printing/printer_query.cc |
index f39960f89ff0fd2db6c1802881b730a2bcfe29d4..4c25df94ad4166b276e354db5dba9b5d65de61cf 100644 |
--- a/chrome/browser/printing/printer_query.cc |
+++ b/chrome/browser/printing/printer_query.cc |
@@ -107,6 +107,32 @@ void PrinterQuery::GetSettings(GetSettingsAskParam ask_user_for_settings, |
use_overlays)); |
} |
+void PrinterQuery::SetSettings(const std::string& new_settings, |
+ CancelableTask* callback) { |
+ DCHECK(!callback_.get()); |
+ DCHECK(worker_.get()); |
+ if (!worker_.get()) |
+ return; |
+ |
+ // Lazy create the worker thread. There is one worker thread per print job. |
+ if (!worker_->message_loop()) { |
+ if (!worker_->Start()) { |
+ if (callback) { |
+ callback->Cancel(); |
+ delete callback; |
+ } |
+ NOTREACHED(); |
+ return; |
+ } |
+ } |
+ |
+ callback_.reset(callback); |
+ worker_->message_loop()->PostTask(FROM_HERE, NewRunnableMethod( |
+ worker_.get(), |
+ &PrintJobWorker::SetSettings, |
+ new_settings)); |
+} |
+ |
void PrinterQuery::StopWorker() { |
if (worker_.get()) { |
// http://crbug.com/66082: We're blocking on the PrinterQuery's worker |