1f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// found in the LICENSE file. 4f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 5f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Multiply-included message file, so no include guard. 6f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 7f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include <string> 8f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include <vector> 9f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 10f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "ipc/ipc_message_macros.h" 11f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "ipc/ipc_platform_file.h" 12f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "printing/backend/print_backend.h" 13f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "printing/page_range.h" 14f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "printing/pdf_render_settings.h" 15f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "printing/pwg_raster_settings.h" 16f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#define IPC_MESSAGE_START ChromeUtilityPrintingMsgStart 18f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(ENABLE_FULL_PRINTING) 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 21f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)IPC_STRUCT_TRAITS_BEGIN(printing::PrinterCapsAndDefaults) 22f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(printer_capabilities) 23f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(caps_mime_type) 24f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(printer_defaults) 25f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(defaults_mime_type) 26f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)IPC_STRUCT_TRAITS_END() 27f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 28f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)IPC_ENUM_TRAITS_MAX_VALUE(printing::ColorModel, printing::PROCESSCOLORMODEL_RGB) 29f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 30f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)IPC_STRUCT_TRAITS_BEGIN(printing::PrinterSemanticCapsAndDefaults::Paper) 31f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(display_name) 32f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(vendor_id) 33f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(size_um) 34f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)IPC_STRUCT_TRAITS_END() 35f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 36f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)IPC_STRUCT_TRAITS_BEGIN(printing::PrinterSemanticCapsAndDefaults) 37f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(collate_capable) 38f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(collate_default) 39f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(copies_capable) 40f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(duplex_capable) 41f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(duplex_default) 42f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(color_changeable) 43f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(color_default) 44f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(color_model) 45f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(bw_model) 46f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(papers) 47f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(default_paper) 48f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(dpis) 49f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(default_dpi) 50f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)IPC_STRUCT_TRAITS_END() 51f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 52116680a4aac90f2aa7413d9095a592090648e557Ben MurdochIPC_ENUM_TRAITS(printing::PwgRasterTransformType) 53f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 54f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)IPC_STRUCT_TRAITS_BEGIN(printing::PwgRasterSettings) 55f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(odd_page_transform) 56f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(rotate_all_pages) 57f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(reverse_page_order) 58f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)IPC_STRUCT_TRAITS_END() 59f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 60f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)//------------------------------------------------------------------------------ 61f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Utility process messages: 62f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// These are messages from the browser to the utility process. 63f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(OS_WIN) 651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Tell the utility process to start rendering the given PDF into a metafile. 661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Utility process would be alive until 671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// ChromeUtilityMsg_RenderPDFPagesToMetafiles_Stop message. 681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciIPC_MESSAGE_CONTROL2(ChromeUtilityMsg_RenderPDFPagesToMetafiles, 691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci IPC::PlatformFileForTransit, /* input_file */ 701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci printing::PdfRenderSettings /* settings */) 711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Requests conversion of the next page. 731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciIPC_MESSAGE_CONTROL2(ChromeUtilityMsg_RenderPDFPagesToMetafiles_GetPage, 741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int /* page_number */, 751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci IPC::PlatformFileForTransit /* output_file */) 761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Requests utility process to stop conversion and exit. 781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciIPC_MESSAGE_CONTROL0(ChromeUtilityMsg_RenderPDFPagesToMetafiles_Stop) 791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif // OS_WIN 801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 81f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Tell the utility process to render the given PDF into a PWGRaster. 82f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)IPC_MESSAGE_CONTROL4(ChromeUtilityMsg_RenderPDFPagesToPWGRaster, 83f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) IPC::PlatformFileForTransit, /* Input PDF file */ 84f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) printing::PdfRenderSettings, /* PDF render settings */ 85f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // PWG transform settings. 86f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) printing::PwgRasterSettings, 87f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) IPC::PlatformFileForTransit /* Output PWG file */) 88f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 89f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Tells the utility process to get capabilities and defaults for the specified 90f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// printer. Used on Windows to isolate the service process from printer driver 91f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// crashes by executing this in a separate process. This does not run in a 92f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// sandbox. 93f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)IPC_MESSAGE_CONTROL1(ChromeUtilityMsg_GetPrinterCapsAndDefaults, 94f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string /* printer name */) 95f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 96f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Tells the utility process to get capabilities and defaults for the specified 97f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// printer. Used on Windows to isolate the service process from printer driver 98f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// crashes by executing this in a separate process. This does not run in a 99f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// sandbox. Returns result as printing::PrinterSemanticCapsAndDefaults. 100f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)IPC_MESSAGE_CONTROL1(ChromeUtilityMsg_GetPrinterSemanticCapsAndDefaults, 101f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string /* printer name */) 102f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 103f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)//------------------------------------------------------------------------------ 104f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Utility process host messages: 105f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// These are messages from the utility process to the browser. 106f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 1071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(OS_WIN) 1081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Reply when the utility process loaded PDF. |page_count| is 0, if loading 1091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// failed. 1101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciIPC_MESSAGE_CONTROL1(ChromeUtilityHostMsg_RenderPDFPagesToMetafiles_PageCount, 1111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int /* page_count */) 1121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Reply when the utility process rendered the PDF page. 1141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciIPC_MESSAGE_CONTROL2(ChromeUtilityHostMsg_RenderPDFPagesToMetafiles_PageDone, 1151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool /* success */, 1161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci double /* scale_factor */) 1171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif // OS_WIN 1181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 119f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Reply when the utility process has succeeded in rendering the PDF to PWG. 120f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)IPC_MESSAGE_CONTROL0(ChromeUtilityHostMsg_RenderPDFPagesToPWGRaster_Succeeded) 121f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 122f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Reply when an error occurred rendering the PDF to PWG. 123f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)IPC_MESSAGE_CONTROL0(ChromeUtilityHostMsg_RenderPDFPagesToPWGRaster_Failed) 124f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 125f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Reply when the utility process has succeeded in obtaining the printer 126f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// capabilities and defaults. 127f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)IPC_MESSAGE_CONTROL2(ChromeUtilityHostMsg_GetPrinterCapsAndDefaults_Succeeded, 128f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string /* printer name */, 129f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) printing::PrinterCapsAndDefaults) 130f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 131f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Reply when the utility process has succeeded in obtaining the printer 132f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// semantic capabilities and defaults. 133f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)IPC_MESSAGE_CONTROL2( 134f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ChromeUtilityHostMsg_GetPrinterSemanticCapsAndDefaults_Succeeded, 135f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string /* printer name */, 136f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) printing::PrinterSemanticCapsAndDefaults) 137f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 138f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Reply when the utility process has failed to obtain the printer 139f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// capabilities and defaults. 140f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)IPC_MESSAGE_CONTROL1(ChromeUtilityHostMsg_GetPrinterCapsAndDefaults_Failed, 141f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string /* printer name */) 142f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 143f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Reply when the utility process has failed to obtain the printer 144f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// semantic capabilities and defaults. 145f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)IPC_MESSAGE_CONTROL1( 146f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ChromeUtilityHostMsg_GetPrinterSemanticCapsAndDefaults_Failed, 147f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string /* printer name */) 148f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 1491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif // ENABLE_FULL_PRINTING 150