Revert "Reland c91b178b07b0d - Delete dead signin code (SigninGlobalError)"
[chromium-blink-merge.git] / chrome / common / chrome_utility_messages.h
blobd9f7155fe898d604a330a530f10cc0567b896331
1 // Copyright (c) 2012 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.
5 // Multiply-included message file, so no include guard.
7 #if defined(OS_WIN)
8 #include <Windows.h>
9 #endif // defined(OS_WIN)
11 #include <string>
12 #include <vector>
14 #include "base/files/file_path.h"
15 #include "base/strings/string16.h"
16 #include "base/tuple.h"
17 #include "base/values.h"
18 #include "chrome/common/safe_browsing/zip_analyzer_results.h"
19 #include "ipc/ipc_message_macros.h"
20 #include "ipc/ipc_platform_file.h"
21 #include "third_party/skia/include/core/SkBitmap.h"
22 #include "ui/gfx/ipc/gfx_param_traits.h"
24 #if defined(FULL_SAFE_BROWSING)
25 #include "chrome/common/safe_browsing/ipc_protobuf_message_macros.h"
26 #include "chrome/common/safe_browsing/protobuf_message_param_traits.h"
27 #endif
29 // Singly-included section for typedefs.
30 #ifndef CHROME_COMMON_CHROME_UTILITY_MESSAGES_H_
31 #define CHROME_COMMON_CHROME_UTILITY_MESSAGES_H_
33 #if defined(OS_WIN)
34 // A vector of filters, each being a Tuple containing a display string (i.e.
35 // "Text Files") and a filter pattern (i.e. "*.txt").
36 typedef std::vector<base::Tuple<base::string16, base::string16>>
37 GetOpenFileNameFilter;
38 #endif // OS_WIN
40 #endif // CHROME_COMMON_CHROME_UTILITY_MESSAGES_H_
42 #define IPC_MESSAGE_START ChromeUtilityMsgStart
44 #if defined(FULL_SAFE_BROWSING)
45 IPC_ENUM_TRAITS_VALIDATE(
46 safe_browsing::ClientDownloadRequest_DownloadType,
47 safe_browsing::ClientDownloadRequest_DownloadType_IsValid(value))
49 IPC_PROTOBUF_MESSAGE_TRAITS_BEGIN(safe_browsing::ClientDownloadRequest_Digests)
50 IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_COMPLEX_MEMBER(sha256)
51 IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_COMPLEX_MEMBER(sha1)
52 IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_COMPLEX_MEMBER(md5)
53 IPC_PROTOBUF_MESSAGE_TRAITS_END()
55 IPC_PROTOBUF_MESSAGE_TRAITS_BEGIN(
56 safe_browsing::ClientDownloadRequest_CertificateChain_Element)
57 IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_COMPLEX_MEMBER(certificate)
58 IPC_PROTOBUF_MESSAGE_TRAITS_END()
60 IPC_PROTOBUF_MESSAGE_TRAITS_BEGIN(
61 safe_browsing::ClientDownloadRequest_CertificateChain)
62 IPC_PROTOBUF_MESSAGE_TRAITS_REPEATED_COMPLEX_MEMBER(element)
63 IPC_PROTOBUF_MESSAGE_TRAITS_END()
65 IPC_PROTOBUF_MESSAGE_TRAITS_BEGIN(
66 safe_browsing::ClientDownloadRequest_SignatureInfo)
67 IPC_PROTOBUF_MESSAGE_TRAITS_REPEATED_COMPLEX_MEMBER(certificate_chain)
68 IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_FUNDAMENTAL_MEMBER(trusted)
69 IPC_PROTOBUF_MESSAGE_TRAITS_REPEATED_COMPLEX_MEMBER(signed_data)
70 IPC_PROTOBUF_MESSAGE_TRAITS_END()
72 IPC_PROTOBUF_MESSAGE_TRAITS_BEGIN(
73 safe_browsing::ClientDownloadRequest_PEImageHeaders_DebugData)
74 IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_COMPLEX_MEMBER(directory_entry)
75 IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_COMPLEX_MEMBER(raw_data)
76 IPC_PROTOBUF_MESSAGE_TRAITS_END()
78 IPC_PROTOBUF_MESSAGE_TRAITS_BEGIN(
79 safe_browsing::ClientDownloadRequest_PEImageHeaders)
80 IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_COMPLEX_MEMBER(dos_header)
81 IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_COMPLEX_MEMBER(file_header)
82 IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_COMPLEX_MEMBER(optional_headers32)
83 IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_COMPLEX_MEMBER(optional_headers64)
84 IPC_PROTOBUF_MESSAGE_TRAITS_REPEATED_COMPLEX_MEMBER(section_header)
85 IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_COMPLEX_MEMBER(export_section_data)
86 IPC_PROTOBUF_MESSAGE_TRAITS_REPEATED_COMPLEX_MEMBER(debug_data)
87 IPC_PROTOBUF_MESSAGE_TRAITS_END()
89 IPC_PROTOBUF_MESSAGE_TRAITS_BEGIN(
90 safe_browsing::ClientDownloadRequest_MachOHeaders_LoadCommand)
91 IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_FUNDAMENTAL_MEMBER(command_id)
92 IPC_PROTOBUF_MESSAGE_TRAITS_REPEATED_COMPLEX_MEMBER(command)
93 IPC_PROTOBUF_MESSAGE_TRAITS_END()
95 IPC_PROTOBUF_MESSAGE_TRAITS_BEGIN(
96 safe_browsing::ClientDownloadRequest_MachOHeaders)
97 IPC_PROTOBUF_MESSAGE_TRAITS_REPEATED_COMPLEX_MEMBER(mach_header)
98 IPC_PROTOBUF_MESSAGE_TRAITS_REPEATED_COMPLEX_MEMBER(load_commands)
99 IPC_PROTOBUF_MESSAGE_TRAITS_END()
101 IPC_PROTOBUF_MESSAGE_TRAITS_BEGIN(
102 safe_browsing::ClientDownloadRequest_ImageHeaders)
103 IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_COMPLEX_MEMBER(pe_headers)
104 IPC_PROTOBUF_MESSAGE_TRAITS_REPEATED_COMPLEX_MEMBER(mach_o_headers)
105 IPC_PROTOBUF_MESSAGE_TRAITS_END()
107 IPC_PROTOBUF_MESSAGE_TRAITS_BEGIN(
108 safe_browsing::ClientDownloadRequest_ArchivedBinary)
109 IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_COMPLEX_MEMBER(file_basename)
110 IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_FUNDAMENTAL_MEMBER(download_type)
111 IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_COMPLEX_MEMBER(digests)
112 IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_FUNDAMENTAL_MEMBER(length)
113 IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_COMPLEX_MEMBER(signature)
114 IPC_PROTOBUF_MESSAGE_TRAITS_OPTIONAL_COMPLEX_MEMBER(image_headers)
115 IPC_PROTOBUF_MESSAGE_TRAITS_END()
117 IPC_STRUCT_TRAITS_BEGIN(safe_browsing::zip_analyzer::Results)
118 IPC_STRUCT_TRAITS_MEMBER(success)
119 IPC_STRUCT_TRAITS_MEMBER(has_executable)
120 IPC_STRUCT_TRAITS_MEMBER(has_archive)
121 IPC_STRUCT_TRAITS_MEMBER(archived_binary)
122 IPC_STRUCT_TRAITS_MEMBER(archived_archive_filetypes)
123 IPC_STRUCT_TRAITS_END()
124 #endif // FULL_SAFE_BROWSING
126 #if defined(OS_WIN)
127 IPC_STRUCT_BEGIN(ChromeUtilityMsg_GetSaveFileName_Params)
128 IPC_STRUCT_MEMBER(HWND, owner)
129 IPC_STRUCT_MEMBER(DWORD, flags)
130 IPC_STRUCT_MEMBER(GetOpenFileNameFilter, filters)
131 IPC_STRUCT_MEMBER(int, one_based_filter_index)
132 IPC_STRUCT_MEMBER(base::FilePath, suggested_filename)
133 IPC_STRUCT_MEMBER(base::FilePath, initial_directory)
134 IPC_STRUCT_MEMBER(base::string16, default_extension)
135 IPC_STRUCT_END()
136 #endif // OS_WIN
138 //------------------------------------------------------------------------------
139 // Utility process messages:
140 // These are messages from the browser to the utility process.
142 // Tell the utility process to decode the given image data.
143 IPC_MESSAGE_CONTROL3(ChromeUtilityMsg_DecodeImage,
144 std::vector<unsigned char> /* encoded image contents */,
145 bool /* shrink image if needed for IPC msg limit */,
146 int /* delegate id */)
148 #if defined(OS_CHROMEOS)
149 // Tell the utility process to decode the given JPEG image data with a robust
150 // libjpeg codec.
151 IPC_MESSAGE_CONTROL2(ChromeUtilityMsg_RobustJPEGDecodeImage,
152 std::vector<unsigned char> /* encoded image contents*/,
153 int /* delegate id */)
154 #endif // defined(OS_CHROMEOS)
156 // Tell the utility process to patch the given |input_file| using |patch_file|
157 // and place the output in |output_file|. The patch should use the bsdiff
158 // algorithm (Courgette's version).
159 IPC_MESSAGE_CONTROL3(ChromeUtilityMsg_PatchFileBsdiff,
160 base::FilePath /* input_file */,
161 base::FilePath /* patch_file */,
162 base::FilePath /* output_file */)
164 // Tell the utility process to patch the given |input_file| using |patch_file|
165 // and place the output in |output_file|. The patch should use the Courgette
166 // algorithm.
167 IPC_MESSAGE_CONTROL3(ChromeUtilityMsg_PatchFileCourgette,
168 base::FilePath /* input_file */,
169 base::FilePath /* patch_file */,
170 base::FilePath /* output_file */)
172 #if defined(OS_CHROMEOS)
173 // Tell the utility process to create a zip file on the given list of files.
174 IPC_MESSAGE_CONTROL3(ChromeUtilityMsg_CreateZipFile,
175 base::FilePath /* src_dir */,
176 std::vector<base::FilePath> /* src_relative_paths */,
177 base::FileDescriptor /* dest_fd */)
178 #endif // defined(OS_CHROMEOS)
180 // Requests the utility process to respond with a
181 // ChromeUtilityHostMsg_ProcessStarted message once it has started. This may
182 // be used if the host process needs a handle to the running utility process.
183 IPC_MESSAGE_CONTROL0(ChromeUtilityMsg_StartupPing)
185 #if defined(FULL_SAFE_BROWSING)
186 // Tells the utility process to analyze a zip file for malicious download
187 // protection, providing a file that can be used temporarily to analyze binaries
188 // contained therein.
189 IPC_MESSAGE_CONTROL2(ChromeUtilityMsg_AnalyzeZipFileForDownloadProtection,
190 IPC::PlatformFileForTransit /* zip_file */,
191 IPC::PlatformFileForTransit /* temp_file */)
193 #if defined(OS_MACOSX)
194 // Tells the utility process to analyze a DMG file for malicious download
195 // protection.
196 IPC_MESSAGE_CONTROL1(ChromeUtilityMsg_AnalyzeDmgFileForDownloadProtection,
197 IPC::PlatformFileForTransit /* dmg_file */)
198 #endif // defined(OS_MACOSX)
199 #endif // defined(FULL_SAFE_BROWSING)
201 #if defined(OS_WIN)
202 // Invokes ui::base::win::OpenFileViaShell from the utility process.
203 IPC_MESSAGE_CONTROL1(ChromeUtilityMsg_OpenFileViaShell,
204 base::FilePath /* full_path */)
206 // Invokes ui::base::win::OpenFolderViaShell from the utility process.
207 IPC_MESSAGE_CONTROL1(ChromeUtilityMsg_OpenFolderViaShell,
208 base::FilePath /* full_path */)
210 // Instructs the utility process to invoke GetOpenFileName. |owner| is the
211 // parent of the modal dialog, |flags| are OFN_* flags. |filter| constrains the
212 // user's file choices. |initial_directory| and |filename| select the directory
213 // to be displayed and the file to be initially selected.
215 // Either ChromeUtilityHostMsg_GetOpenFileName_Failed or
216 // ChromeUtilityHostMsg_GetOpenFileName_Result will be returned when the
217 // operation completes whether due to error or user action.
218 IPC_MESSAGE_CONTROL5(ChromeUtilityMsg_GetOpenFileName,
219 HWND /* owner */,
220 DWORD /* flags */,
221 GetOpenFileNameFilter /* filter */,
222 base::FilePath /* initial_directory */,
223 base::FilePath /* filename */)
224 IPC_MESSAGE_CONTROL1(ChromeUtilityMsg_GetSaveFileName,
225 ChromeUtilityMsg_GetSaveFileName_Params /* params */)
226 #endif // defined(OS_WIN)
228 //------------------------------------------------------------------------------
229 // Utility process host messages:
230 // These are messages from the utility process to the browser.
232 // Reply when the utility process has failed while unpacking and parsing a
233 // web resource. |error_message| is a user-readable explanation of what
234 // went wrong.
235 IPC_MESSAGE_CONTROL1(ChromeUtilityHostMsg_UnpackWebResource_Failed,
236 std::string /* error_message, if any */)
238 // Reply when the utility process has succeeded in decoding the image.
239 IPC_MESSAGE_CONTROL2(ChromeUtilityHostMsg_DecodeImage_Succeeded,
240 SkBitmap /* decoded image */,
241 int /* delegate id */)
243 // Reply when an error occurred decoding the image.
244 IPC_MESSAGE_CONTROL1(ChromeUtilityHostMsg_DecodeImage_Failed,
245 int /* delegate id */)
247 // Reply when a file has been patched.
248 IPC_MESSAGE_CONTROL1(ChromeUtilityHostMsg_PatchFile_Finished, int /* result */)
250 #if defined(OS_CHROMEOS)
251 // Reply when the utility process has succeeded in creating the zip file.
252 IPC_MESSAGE_CONTROL0(ChromeUtilityHostMsg_CreateZipFile_Succeeded)
254 // Reply when an error occured in creating the zip file.
255 IPC_MESSAGE_CONTROL0(ChromeUtilityHostMsg_CreateZipFile_Failed)
256 #endif // defined(OS_CHROMEOS)
258 // Reply when the utility process has started.
259 IPC_MESSAGE_CONTROL0(ChromeUtilityHostMsg_ProcessStarted)
261 #if defined(FULL_SAFE_BROWSING)
262 // Reply when a zip file has been analyzed for malicious download protection.
263 IPC_MESSAGE_CONTROL1(
264 ChromeUtilityHostMsg_AnalyzeZipFileForDownloadProtection_Finished,
265 safe_browsing::zip_analyzer::Results)
267 #if defined(OS_MACOSX)
268 // Reply when a DMG file has been analyzed for malicious download protection.
269 IPC_MESSAGE_CONTROL1(
270 ChromeUtilityHostMsg_AnalyzeDmgFileForDownloadProtection_Finished,
271 safe_browsing::zip_analyzer::Results)
272 #endif // defined(OS_MACOSX)
273 #endif // defined(FULL_SAFE_BROWSING)
275 #if defined(OS_WIN)
276 IPC_MESSAGE_CONTROL0(ChromeUtilityHostMsg_GetOpenFileName_Failed)
277 IPC_MESSAGE_CONTROL2(ChromeUtilityHostMsg_GetOpenFileName_Result,
278 base::FilePath /* directory */,
279 std::vector<base::FilePath> /* filenames */)
280 IPC_MESSAGE_CONTROL0(ChromeUtilityHostMsg_GetSaveFileName_Failed)
281 IPC_MESSAGE_CONTROL2(ChromeUtilityHostMsg_GetSaveFileName_Result,
282 base::FilePath /* path */,
283 int /* one_based_filter_index */)
284 IPC_MESSAGE_CONTROL1(ChromeUtilityHostMsg_BuildDirectWriteFontCache,
285 base::FilePath /* cache file path */)
286 #endif // defined(OS_WIN)