// 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_UI_WEBUI_PRINT_PREVIEW_HANDLER_H_ #define CHROME_BROWSER_UI_WEBUI_PRINT_PREVIEW_HANDLER_H_ #pragma once #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "chrome/browser/ui/shell_dialogs.h" #include "content/browser/webui/web_ui.h" class FilePath; class PrintSystemTaskProxy; class FundamentalValue; namespace printing { class PrintBackend; } // The handler for Javascript messages related to the "print preview" dialog. class PrintPreviewHandler : public WebUIMessageHandler, public base::SupportsWeakPtr, public SelectFileDialog::Listener { public: PrintPreviewHandler(); virtual ~PrintPreviewHandler(); // WebUIMessageHandler implementation. virtual void RegisterMessages(); // SelectFileDialog::Listener implementation. virtual void FileSelected(const FilePath& path, int index, void* params); // Displays a modal dialog, prompting the user to select a file. void SelectFile(const FilePath& default_path); private: friend class PrintSystemTaskProxy; // Get the list of printers. |args| is unused. void HandleGetPrinters(const ListValue* args); // Ask the initiator renderer to generate a preview. // First element of |args| is a job settings JSON string. void HandleGetPreview(const ListValue* args); // Get the job settings from Web UI and initiate printing. // First element of |args| is a job settings JSON string. void HandlePrint(const ListValue* args); // Get the printer capabilities. // First element of |args| is the printer name. void HandleGetPrinterCapabilities(const ListValue* args); // Send the printer capabilities to the Web UI. // |settings_info| contains printer capabilities information. void SendPrinterCapabilities(const DictionaryValue& settings_info); // Send the list of printers to the Web UI. void SendPrinterList(const ListValue& printers, const FundamentalValue& default_printer_index); // Helper function to process the color setting in the dictionary. void ProcessColorSetting(const DictionaryValue& settings); // Helper function to process the landscape setting in the dictionary. void ProcessLandscapeSetting(const DictionaryValue& settings); // Pointer to current print system. scoped_refptr print_backend_; // The underlying dialog object. scoped_refptr select_file_dialog_; static FilePath* last_saved_path_; DISALLOW_COPY_AND_ASSIGN(PrintPreviewHandler); }; #endif // CHROME_BROWSER_UI_WEBUI_PRINT_PREVIEW_HANDLER_H_