diff options
Diffstat (limited to 'chrome/browser/printing')
-rw-r--r-- | chrome/browser/printing/print_job_manager.cc | 21 | ||||
-rw-r--r-- | chrome/browser/printing/print_job_manager.h | 13 |
2 files changed, 34 insertions, 0 deletions
diff --git a/chrome/browser/printing/print_job_manager.cc b/chrome/browser/printing/print_job_manager.cc index dc122ea..ce02f9e 100644 --- a/chrome/browser/printing/print_job_manager.cc +++ b/chrome/browser/printing/print_job_manager.cc @@ -4,9 +4,12 @@ #include "chrome/browser/printing/print_job_manager.h" +#include "chrome/browser/browser_process.h" +#include "chrome/browser/prefs/pref_service.h" #include "chrome/browser/printing/print_job.h" #include "chrome/browser/printing/printer_query.h" #include "chrome/common/notification_service.h" +#include "chrome/common/pref_names.h" #include "printing/printed_document.h" #include "printing/printed_page.h" @@ -78,6 +81,14 @@ void PrintJobManager::Observe(NotificationType type, *Details<JobEventDetails>(details).ptr()); break; } + case NotificationType::PREF_CHANGED: { + const std::string* pref_name = Details<std::string>(details).ptr(); + if (*pref_name == prefs::kPrintingEnabled) { + PrefService *local_state = g_browser_process->local_state(); + set_printing_enabled(local_state->GetBoolean(prefs::kPrintingEnabled)); + } + break; + } default: { NOTREACHED(); break; @@ -139,4 +150,14 @@ void PrintJobManager::OnPrintJobEvent( } } +bool PrintJobManager::printing_enabled() { + AutoLock lock(enabled_lock_); + return printing_enabled_; +} + +void PrintJobManager::set_printing_enabled(bool printing_enabled) { + AutoLock lock(enabled_lock_); + printing_enabled_ = printing_enabled; +} + } // namespace printing diff --git a/chrome/browser/printing/print_job_manager.h b/chrome/browser/printing/print_job_manager.h index 59cc1ce..ca2bb47 100644 --- a/chrome/browser/printing/print_job_manager.h +++ b/chrome/browser/printing/print_job_manager.h @@ -43,6 +43,10 @@ class PrintJobManager : public NotificationObserver { const NotificationSource& source, const NotificationDetails& details); + bool printing_enabled(); + + void set_printing_enabled(bool printing_enabled); + private: typedef std::vector<scoped_refptr<PrintJob> > PrintJobs; typedef std::vector<scoped_refptr<PrinterQuery> > PrinterQueries; @@ -56,11 +60,20 @@ class PrintJobManager : public NotificationObserver { // Used to serialize access to queued_workers_. Lock lock_; + // Used to serialize access to printing_enabled_ + Lock enabled_lock_; + PrinterQueries queued_queries_; // Current print jobs that are active. PrintJobs current_jobs_; + // Printing is enabled/disabled. This variable is checked at only one place, + // by ResourceMessageFilter::OnGetDefaultPrintSettings. If its value is true + // at that point, then the initiated print flow will complete itself, + // even if the value of this variable changes afterwards. + bool printing_enabled_; + DISALLOW_COPY_AND_ASSIGN(PrintJobManager); }; |