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 21IPC_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) 26IPC_STRUCT_TRAITS_END() 27 28IPC_ENUM_TRAITS_MAX_VALUE(printing::ColorModel, printing::PROCESSCOLORMODEL_RGB) 29 30IPC_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) 34IPC_STRUCT_TRAITS_END() 35 36IPC_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) 50IPC_STRUCT_TRAITS_END() 51 52IPC_ENUM_TRAITS(printing::PwgRasterTransformType) 53 54IPC_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) 58IPC_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. 68IPC_MESSAGE_CONTROL2(ChromeUtilityMsg_RenderPDFPagesToMetafiles, 69 IPC::PlatformFileForTransit, /* input_file */ 70 printing::PdfRenderSettings /* settings */) 71 72// Requests conversion of the next page. 73IPC_MESSAGE_CONTROL2(ChromeUtilityMsg_RenderPDFPagesToMetafiles_GetPage, 74 int /* page_number */, 75 IPC::PlatformFileForTransit /* output_file */) 76 77// Requests utility process to stop conversion and exit. 78IPC_MESSAGE_CONTROL0(ChromeUtilityMsg_RenderPDFPagesToMetafiles_Stop) 79#endif // OS_WIN 80 81// Tell the utility process to render the given PDF into a PWGRaster. 82IPC_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. 93IPC_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. 100IPC_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. 110IPC_MESSAGE_CONTROL1(ChromeUtilityHostMsg_RenderPDFPagesToMetafiles_PageCount, 111 int /* page_count */) 112 113// Reply when the utility process rendered the PDF page. 114IPC_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. 120IPC_MESSAGE_CONTROL0(ChromeUtilityHostMsg_RenderPDFPagesToPWGRaster_Succeeded) 121 122// Reply when an error occurred rendering the PDF to PWG. 123IPC_MESSAGE_CONTROL0(ChromeUtilityHostMsg_RenderPDFPagesToPWGRaster_Failed) 124 125// Reply when the utility process has succeeded in obtaining the printer 126// capabilities and defaults. 127IPC_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. 133IPC_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. 140IPC_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. 145IPC_MESSAGE_CONTROL1( 146 ChromeUtilityHostMsg_GetPrinterSemanticCapsAndDefaults_Failed, 147 std::string /* printer name */) 148 149#endif // ENABLE_FULL_PRINTING 150