Home | History | Annotate | Download | only in webui
      1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CHROME_BROWSER_UI_WEBUI_PRINT_PREVIEW_HANDLER_H_
      6 #define CHROME_BROWSER_UI_WEBUI_PRINT_PREVIEW_HANDLER_H_
      7 #pragma once
      8 
      9 #include "base/memory/ref_counted.h"
     10 #include "base/memory/weak_ptr.h"
     11 #include "chrome/browser/ui/shell_dialogs.h"
     12 #include "content/browser/webui/web_ui.h"
     13 
     14 class FilePath;
     15 class PrintSystemTaskProxy;
     16 class FundamentalValue;
     17 
     18 namespace printing {
     19 class PrintBackend;
     20 }
     21 
     22 // The handler for Javascript messages related to the "print preview" dialog.
     23 class PrintPreviewHandler : public WebUIMessageHandler,
     24                             public base::SupportsWeakPtr<PrintPreviewHandler>,
     25                             public SelectFileDialog::Listener {
     26  public:
     27   PrintPreviewHandler();
     28   virtual ~PrintPreviewHandler();
     29 
     30   // WebUIMessageHandler implementation.
     31   virtual void RegisterMessages();
     32 
     33   // SelectFileDialog::Listener implementation.
     34   virtual void FileSelected(const FilePath& path, int index, void* params);
     35 
     36   // Displays a modal dialog, prompting the user to select a file.
     37   void SelectFile(const FilePath& default_path);
     38 
     39  private:
     40   friend class PrintSystemTaskProxy;
     41 
     42   // Get the list of printers. |args| is unused.
     43   void HandleGetPrinters(const ListValue* args);
     44 
     45   // Ask the initiator renderer to generate a preview.
     46   // First element of |args| is a job settings JSON string.
     47   void HandleGetPreview(const ListValue* args);
     48 
     49   // Get the job settings from Web UI and initiate printing.
     50   // First element of |args| is a job settings JSON string.
     51   void HandlePrint(const ListValue* args);
     52 
     53   // Get the printer capabilities.
     54   // First element of |args| is the printer name.
     55   void HandleGetPrinterCapabilities(const ListValue* args);
     56 
     57   // Send the printer capabilities to the Web UI.
     58   // |settings_info| contains printer capabilities information.
     59   void SendPrinterCapabilities(const DictionaryValue& settings_info);
     60 
     61   // Send the list of printers to the Web UI.
     62   void SendPrinterList(const ListValue& printers,
     63                        const FundamentalValue& default_printer_index);
     64 
     65   // Helper function to process the color setting in the dictionary.
     66   void ProcessColorSetting(const DictionaryValue& settings);
     67 
     68   // Helper function to process the landscape setting in the dictionary.
     69   void ProcessLandscapeSetting(const DictionaryValue& settings);
     70 
     71   // Pointer to current print system.
     72   scoped_refptr<printing::PrintBackend> print_backend_;
     73 
     74   // The underlying dialog object.
     75   scoped_refptr<SelectFileDialog> select_file_dialog_;
     76 
     77   static FilePath* last_saved_path_;
     78 
     79   DISALLOW_COPY_AND_ASSIGN(PrintPreviewHandler);
     80 };
     81 
     82 #endif  // CHROME_BROWSER_UI_WEBUI_PRINT_PREVIEW_HANDLER_H_
     83