1// Copyright 2014 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_UTILITY_PRINTING_HANDLER_H_ 6#define CHROME_UTILITY_PRINTING_HANDLER_H_ 7 8#include "base/compiler_specific.h" 9#include "base/macros.h" 10#include "chrome/utility/utility_message_handler.h" 11#include "ipc/ipc_platform_file.h" 12#include "printing/pdf_render_settings.h" 13 14#if !defined(ENABLE_FULL_PRINTING) && !defined(OS_WIN) 15#error "Windows or full printing must be enabled" 16#endif 17 18namespace printing { 19class PdfRenderSettings; 20struct PwgRasterSettings; 21struct PageRange; 22} 23 24// Dispatches IPCs for printing. 25class PrintingHandler : public UtilityMessageHandler { 26 public: 27 PrintingHandler(); 28 virtual ~PrintingHandler(); 29 30 static void PreSandboxStartup(); 31 32 // IPC::Listener: 33 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; 34 35 private: 36 // IPC message handlers. 37#if defined(OS_WIN) 38 void OnRenderPDFPagesToMetafile(IPC::PlatformFileForTransit pdf_transit, 39 const printing::PdfRenderSettings& settings); 40 void OnRenderPDFPagesToMetafileGetPage( 41 int page_number, 42 IPC::PlatformFileForTransit output_file); 43 void OnRenderPDFPagesToMetafileStop(); 44#endif // OS_WIN 45#if defined(ENABLE_FULL_PRINTING) 46 void OnRenderPDFPagesToPWGRaster( 47 IPC::PlatformFileForTransit pdf_transit, 48 const printing::PdfRenderSettings& settings, 49 const printing::PwgRasterSettings& bitmap_settings, 50 IPC::PlatformFileForTransit bitmap_transit); 51#endif // ENABLE_FULL_PRINTING 52 53#if defined(OS_WIN) 54 int LoadPDF(base::File pdf_file); 55 bool RenderPdfPageToMetafile(int page_number, 56 base::File output_file, 57 double* scale_factor); 58#endif // OS_WIN 59#if defined(ENABLE_FULL_PRINTING) 60 bool RenderPDFPagesToPWGRaster( 61 base::File pdf_file, 62 const printing::PdfRenderSettings& settings, 63 const printing::PwgRasterSettings& bitmap_settings, 64 base::File bitmap_file); 65 66 void OnGetPrinterCapsAndDefaults(const std::string& printer_name); 67 void OnGetPrinterSemanticCapsAndDefaults(const std::string& printer_name); 68#endif // ENABLE_FULL_PRINTING 69 70#if defined(OS_WIN) 71 std::vector<char> pdf_data_; 72 printing::PdfRenderSettings pdf_rendering_settings_; 73#endif 74 75 DISALLOW_COPY_AND_ASSIGN(PrintingHandler); 76}; 77 78#endif // CHROME_UTILITY_PRINTING_HANDLER_H_ 79