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 // Multiply-included message file, so no include guard. 6 7 #include <string> 8 #include <vector> 9 10 #include "ipc/ipc_message_macros.h" 11 #include "ipc/ipc_platform_file.h" 12 #include "printing/backend/print_backend.h" 13 #include "printing/page_range.h" 14 #include "printing/pdf_render_settings.h" 15 #include "printing/pwg_raster_settings.h" 16 17 #define IPC_MESSAGE_START ChromeUtilityPrintingMsgStart 18 19 #if defined(ENABLE_FULL_PRINTING) 20 21 IPC_STRUCT_TRAITS_BEGIN(printing::PrinterCapsAndDefaults) 22 IPC_STRUCT_TRAITS_MEMBER(printer_capabilities) 23 IPC_STRUCT_TRAITS_MEMBER(caps_mime_type) 24 IPC_STRUCT_TRAITS_MEMBER(printer_defaults) 25 IPC_STRUCT_TRAITS_MEMBER(defaults_mime_type) 26 IPC_STRUCT_TRAITS_END() 27 28 IPC_ENUM_TRAITS_MAX_VALUE(printing::ColorModel, printing::PROCESSCOLORMODEL_RGB) 29 30 IPC_STRUCT_TRAITS_BEGIN(printing::PrinterSemanticCapsAndDefaults::Paper) 31 IPC_STRUCT_TRAITS_MEMBER(display_name) 32 IPC_STRUCT_TRAITS_MEMBER(vendor_id) 33 IPC_STRUCT_TRAITS_MEMBER(size_um) 34 IPC_STRUCT_TRAITS_END() 35 36 IPC_STRUCT_TRAITS_BEGIN(printing::PrinterSemanticCapsAndDefaults) 37 IPC_STRUCT_TRAITS_MEMBER(collate_capable) 38 IPC_STRUCT_TRAITS_MEMBER(collate_default) 39 IPC_STRUCT_TRAITS_MEMBER(copies_capable) 40 IPC_STRUCT_TRAITS_MEMBER(duplex_capable) 41 IPC_STRUCT_TRAITS_MEMBER(duplex_default) 42 IPC_STRUCT_TRAITS_MEMBER(color_changeable) 43 IPC_STRUCT_TRAITS_MEMBER(color_default) 44 IPC_STRUCT_TRAITS_MEMBER(color_model) 45 IPC_STRUCT_TRAITS_MEMBER(bw_model) 46 IPC_STRUCT_TRAITS_MEMBER(papers) 47 IPC_STRUCT_TRAITS_MEMBER(default_paper) 48 IPC_STRUCT_TRAITS_MEMBER(dpis) 49 IPC_STRUCT_TRAITS_MEMBER(default_dpi) 50 IPC_STRUCT_TRAITS_END() 51 52 IPC_ENUM_TRAITS(printing::PwgRasterTransformType) 53 54 IPC_STRUCT_TRAITS_BEGIN(printing::PwgRasterSettings) 55 IPC_STRUCT_TRAITS_MEMBER(odd_page_transform) 56 IPC_STRUCT_TRAITS_MEMBER(rotate_all_pages) 57 IPC_STRUCT_TRAITS_MEMBER(reverse_page_order) 58 IPC_STRUCT_TRAITS_END() 59 60 //------------------------------------------------------------------------------ 61 // Utility process messages: 62 // These are messages from the browser to the utility process. 63 64 #if defined(OS_WIN) 65 // Tell the utility process to start rendering the given PDF into a metafile. 66 // Utility process would be alive until 67 // ChromeUtilityMsg_RenderPDFPagesToMetafiles_Stop message. 68 IPC_MESSAGE_CONTROL2(ChromeUtilityMsg_RenderPDFPagesToMetafiles, 69 IPC::PlatformFileForTransit, /* input_file */ 70 printing::PdfRenderSettings /* settings */) 71 72 // Requests conversion of the next page. 73 IPC_MESSAGE_CONTROL2(ChromeUtilityMsg_RenderPDFPagesToMetafiles_GetPage, 74 int /* page_number */, 75 IPC::PlatformFileForTransit /* output_file */) 76 77 // Requests utility process to stop conversion and exit. 78 IPC_MESSAGE_CONTROL0(ChromeUtilityMsg_RenderPDFPagesToMetafiles_Stop) 79 #endif // OS_WIN 80 81 // Tell the utility process to render the given PDF into a PWGRaster. 82 IPC_MESSAGE_CONTROL4(ChromeUtilityMsg_RenderPDFPagesToPWGRaster, 83 IPC::PlatformFileForTransit, /* Input PDF file */ 84 printing::PdfRenderSettings, /* PDF render settings */ 85 // PWG transform settings. 86 printing::PwgRasterSettings, 87 IPC::PlatformFileForTransit /* Output PWG file */) 88 89 // Tells the utility process to get capabilities and defaults for the specified 90 // printer. Used on Windows to isolate the service process from printer driver 91 // crashes by executing this in a separate process. This does not run in a 92 // sandbox. 93 IPC_MESSAGE_CONTROL1(ChromeUtilityMsg_GetPrinterCapsAndDefaults, 94 std::string /* printer name */) 95 96 // Tells the utility process to get capabilities and defaults for the specified 97 // printer. Used on Windows to isolate the service process from printer driver 98 // crashes by executing this in a separate process. This does not run in a 99 // sandbox. Returns result as printing::PrinterSemanticCapsAndDefaults. 100 IPC_MESSAGE_CONTROL1(ChromeUtilityMsg_GetPrinterSemanticCapsAndDefaults, 101 std::string /* printer name */) 102 103 //------------------------------------------------------------------------------ 104 // Utility process host messages: 105 // These are messages from the utility process to the browser. 106 107 #if defined(OS_WIN) 108 // Reply when the utility process loaded PDF. |page_count| is 0, if loading 109 // failed. 110 IPC_MESSAGE_CONTROL1(ChromeUtilityHostMsg_RenderPDFPagesToMetafiles_PageCount, 111 int /* page_count */) 112 113 // Reply when the utility process rendered the PDF page. 114 IPC_MESSAGE_CONTROL2(ChromeUtilityHostMsg_RenderPDFPagesToMetafiles_PageDone, 115 bool /* success */, 116 double /* scale_factor */) 117 #endif // OS_WIN 118 119 // Reply when the utility process has succeeded in rendering the PDF to PWG. 120 IPC_MESSAGE_CONTROL0(ChromeUtilityHostMsg_RenderPDFPagesToPWGRaster_Succeeded) 121 122 // Reply when an error occurred rendering the PDF to PWG. 123 IPC_MESSAGE_CONTROL0(ChromeUtilityHostMsg_RenderPDFPagesToPWGRaster_Failed) 124 125 // Reply when the utility process has succeeded in obtaining the printer 126 // capabilities and defaults. 127 IPC_MESSAGE_CONTROL2(ChromeUtilityHostMsg_GetPrinterCapsAndDefaults_Succeeded, 128 std::string /* printer name */, 129 printing::PrinterCapsAndDefaults) 130 131 // Reply when the utility process has succeeded in obtaining the printer 132 // semantic capabilities and defaults. 133 IPC_MESSAGE_CONTROL2( 134 ChromeUtilityHostMsg_GetPrinterSemanticCapsAndDefaults_Succeeded, 135 std::string /* printer name */, 136 printing::PrinterSemanticCapsAndDefaults) 137 138 // Reply when the utility process has failed to obtain the printer 139 // capabilities and defaults. 140 IPC_MESSAGE_CONTROL1(ChromeUtilityHostMsg_GetPrinterCapsAndDefaults_Failed, 141 std::string /* printer name */) 142 143 // Reply when the utility process has failed to obtain the printer 144 // semantic capabilities and defaults. 145 IPC_MESSAGE_CONTROL1( 146 ChromeUtilityHostMsg_GetPrinterSemanticCapsAndDefaults_Failed, 147 std::string /* printer name */) 148 149 #endif // ENABLE_FULL_PRINTING 150