| 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
|
|
|