summaryrefslogtreecommitdiffstats
path: root/chrome/browser/printing
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/printing')
-rw-r--r--chrome/browser/printing/print_job_worker.cc13
-rw-r--r--chrome/browser/printing/print_job_worker.h5
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_;