diff options
Diffstat (limited to 'chrome/browser/printing')
-rw-r--r-- | chrome/browser/printing/print_job_worker.cc | 13 | ||||
-rw-r--r-- | chrome/browser/printing/print_job_worker.h | 5 |
2 files changed, 16 insertions, 2 deletions
diff --git a/chrome/browser/printing/print_job_worker.cc b/chrome/browser/printing/print_job_worker.cc index 4a9eedc..24062d1 100644 --- a/chrome/browser/printing/print_job_worker.cc +++ b/chrome/browser/printing/print_job_worker.cc @@ -98,8 +98,12 @@ void PrintJobWorker::GetSettings(bool ask_user_for_settings, NewCallback(this, &PrintJobWorker::GetSettingsDone)); #endif // defined(OS_MACOSX) || defined(USE_X11) } else { - PrintingContext::Result result = printing_context_->UseDefaultSettings(); - GetSettingsDone(result); +#if defined(OS_MACOSX) || defined(USE_X11) + BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, + NewRunnableMethod(this, &PrintJobWorker::UseDefaultSettings)); +#else + UseDefaultSettings(); +#endif // defined(OS_MACOSX) || defined(USE_X11) } } @@ -137,6 +141,11 @@ void PrintJobWorker::GetSettingsWithUIDone(PrintingContext::Result result) { } #endif // defined(OS_MACOSX) || defined(USE_X11) +void PrintJobWorker::UseDefaultSettings() { + PrintingContext::Result result = printing_context_->UseDefaultSettings(); + GetSettingsDone(result); +} + void PrintJobWorker::StartPrinting(PrintedDocument* new_document) { DCHECK_EQ(message_loop(), MessageLoop::current()); DCHECK_EQ(page_number_, PageNumber::npos()); diff --git a/chrome/browser/printing/print_job_worker.h b/chrome/browser/printing/print_job_worker.h index a74cb06..a932543 100644 --- a/chrome/browser/printing/print_job_worker.h +++ b/chrome/browser/printing/print_job_worker.h @@ -99,6 +99,11 @@ class PrintJobWorker : public base::Thread { // Reports settings back to owner_. void GetSettingsDone(PrintingContext::Result result); + // Use the default settings. When using GTK+ or Mac, this can still end up + // displaying a dialog. So this needs to happen from the UI thread on these + // systems. + void UseDefaultSettings(); + // Information about the printer setting. scoped_ptr<PrintingContext> printing_context_; |