diff options
author | Paweł Hajdan, Jr <phajdan.jr@chromium.org> | 2015-01-22 09:50:17 +0000 |
---|---|---|
committer | Paweł Hajdan, Jr <phajdan.jr@chromium.org> | 2015-01-22 09:51:29 +0000 |
commit | 57e9761e4828e1a41af2766c09c700017aa75ba1 (patch) | |
tree | 37a260d653ee8364efd21b6fcdbad3068e129a21 /printing | |
parent | cc2d75bfd8b91a66fc2464abd067ed0d4deb1885 (diff) | |
download | chromium_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.h | 1 | ||||
-rw-r--r-- | printing/backend/print_backend_dummy.cc | 43 |
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 |