summaryrefslogtreecommitdiffstats
path: root/printing
diff options
context:
space:
mode:
authorPaweł Hajdan, Jr <phajdan.jr@chromium.org>2015-01-22 09:50:17 +0000
committerPaweł Hajdan, Jr <phajdan.jr@chromium.org>2015-01-22 09:51:29 +0000
commit57e9761e4828e1a41af2766c09c700017aa75ba1 (patch)
tree37a260d653ee8364efd21b6fcdbad3068e129a21 /printing
parentcc2d75bfd8b91a66fc2464abd067ed0d4deb1885 (diff)
downloadchromium_src-57e9761e4828e1a41af2766c09c700017aa75ba1.zip
chromium_src-57e9761e4828e1a41af2766c09c700017aa75ba1.tar.gz
chromium_src-57e9761e4828e1a41af2766c09c700017aa75ba1.tar.bz2
Fix crash on NULL pointer when the browser is compiled with use_cups=0
Please see https://bugs.gentoo.org/show_bug.cgi?id=530682 for context. The idea is to make cups dependency optional at compile time. Even without cups one can print to file (pdf) or use cloud print. BUG=none R=thestig@chromium.org Review URL: https://codereview.chromium.org/862023002 Cr-Commit-Position: refs/heads/master@{#312594}
Diffstat (limited to 'printing')
-rw-r--r--printing/backend/print_backend.h1
-rw-r--r--printing/backend/print_backend_dummy.cc43
2 files changed, 41 insertions, 3 deletions
diff --git a/printing/backend/print_backend.h b/printing/backend/print_backend.h
index e03ef42..a812332 100644
--- a/printing/backend/print_backend.h
+++ b/printing/backend/print_backend.h
@@ -111,7 +111,6 @@ class PRINTING_EXPORT PrintBackend
// Allocate a print backend. If |print_backend_settings| is NULL, default
// settings will be used.
- // Return NULL if no print backend available.
static scoped_refptr<PrintBackend> CreateInstance(
const base::DictionaryValue* print_backend_settings);
diff --git a/printing/backend/print_backend_dummy.cc b/printing/backend/print_backend_dummy.cc
index c73e537..db269a7 100644
--- a/printing/backend/print_backend_dummy.cc
+++ b/printing/backend/print_backend_dummy.cc
@@ -13,10 +13,49 @@
namespace printing {
+class DummyPrintBackend : public PrintBackend {
+ public:
+ DummyPrintBackend() {
+ }
+
+ bool EnumeratePrinters(PrinterList* printer_list) override {
+ return false;
+ }
+
+ std::string GetDefaultPrinterName() override {
+ return std::string();
+ }
+
+ bool GetPrinterSemanticCapsAndDefaults(
+ const std::string& printer_name,
+ PrinterSemanticCapsAndDefaults* printer_info) override {
+ return false;
+ }
+
+ bool GetPrinterCapsAndDefaults(
+ const std::string& printer_name,
+ PrinterCapsAndDefaults* printer_info) override {
+ return false;
+ }
+
+ std::string GetPrinterDriverInfo(
+ const std::string& printer_name) override {
+ return std::string();
+ }
+
+ bool IsValidPrinter(const std::string& printer_name) override {
+ return false;
+ }
+
+ private:
+ ~DummyPrintBackend() {}
+
+ DISALLOW_COPY_AND_ASSIGN(DummyPrintBackend);
+};
+
scoped_refptr<PrintBackend> PrintBackend::CreateInstance(
const base::DictionaryValue* print_backend_settings) {
- NOTREACHED();
- return NULL;
+ return new DummyPrintBackend();
}
} // namespace printing