diff options
Diffstat (limited to 'chrome/browser/printing/print_system_task_proxy.h')
-rw-r--r-- | chrome/browser/printing/print_system_task_proxy.h | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/chrome/browser/printing/print_system_task_proxy.h b/chrome/browser/printing/print_system_task_proxy.h new file mode 100644 index 0000000..8d5b00c --- /dev/null +++ b/chrome/browser/printing/print_system_task_proxy.h @@ -0,0 +1,73 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_PRINTING_PRINT_SYSTEM_TASK_PROXY_H_ +#define CHROME_BROWSER_PRINTING_PRINT_SYSTEM_TASK_PROXY_H_ +#pragma once + +#include "base/memory/ref_counted.h" +#include "base/memory/scoped_ptr.h" +#include "build/build_config.h" +#include "chrome/browser/ui/webui/print_preview_handler.h" +#include "content/browser/browser_thread.h" + +namespace base { +class DictionaryValue; +class FundamentalValue; +class StringValue; +} + +namespace printing { +class PrintBackend; +} + +#if defined(UNIT_TEST) && defined(USE_CUPS) && !defined(OS_MACOSX) +typedef struct cups_option_s cups_option_t; + +namespace printing_internal { +// Helper function to parse the lpoptions custom settings. |num_options| and +// |options| will be updated if the custom settings for |printer_name| are +// found, otherwise nothing is done. +// NOTE: This function is declared here so it can be exposed for unit testing. +void parse_lpoptions(const FilePath& filepath, const std::string& printer_name, + int* num_options, cups_option_t** options); +} // namespace printing_internal + +#endif + +class PrintSystemTaskProxy + : public base::RefCountedThreadSafe<PrintSystemTaskProxy, + BrowserThread::DeleteOnUIThread> { + public: + PrintSystemTaskProxy(const base::WeakPtr<PrintPreviewHandler>& handler, + printing::PrintBackend* print_backend, + bool has_logged_printers_count); + + void GetDefaultPrinter(); + + void EnumeratePrinters(); + + void GetPrinterCapabilities(const std::string& printer_name); + + private: + friend struct BrowserThread::DeleteOnThread<BrowserThread::UI>; + friend class DeleteTask<PrintSystemTaskProxy>; + + void SendDefaultPrinter(const base::StringValue* default_printer, + const base::StringValue* cloud_print_data); + void SetupPrinterList(base::ListValue* printers); + void SendPrinterCapabilities(base::DictionaryValue* settings_info); + + ~PrintSystemTaskProxy(); + + base::WeakPtr<PrintPreviewHandler> handler_; + + scoped_refptr<printing::PrintBackend> print_backend_; + + bool has_logged_printers_count_; + + DISALLOW_COPY_AND_ASSIGN(PrintSystemTaskProxy); +}; + +#endif // CHROME_BROWSER_PRINTING_PRINT_SYSTEM_TASK_PROXY_H_ |