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_manager.cc21
-rw-r--r--chrome/browser/printing/print_job_manager.h13
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);
};