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