Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / chrome / common / chrome_utility_messages.h
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.
4
5 // Multiply-included message file, so no include guard.
6
7 #include <string>
8 #include <vector>
9
10 #include "base/basictypes.h"
11 #include "base/files/file_path.h"
12 #include "base/platform_file.h"
13 #include "base/strings/string16.h"
14 #include "base/tuple.h"
15 #include "base/values.h"
16 #include "chrome/common/extensions/update_manifest.h"
17 #include "chrome/common/media_galleries/iphoto_library.h"
18 #include "chrome/common/media_galleries/itunes_library.h"
19 #include "chrome/common/media_galleries/picasa_types.h"
20 #include "chrome/common/safe_browsing/zip_analyzer.h"
21 #include "ipc/ipc_message_macros.h"
22 #include "ipc/ipc_platform_file.h"
23 #include "printing/backend/print_backend.h"
24 #include "printing/page_range.h"
25 #include "printing/pdf_render_settings.h"
26 #include "printing/pwg_raster_settings.h"
27 #include "third_party/skia/include/core/SkBitmap.h"
28
29 #define IPC_MESSAGE_START ChromeUtilityMsgStart
30
31 #ifndef CHROME_COMMON_CHROME_UTILITY_MESSAGES_H_
32 #define CHROME_COMMON_CHROME_UTILITY_MESSAGES_H_
33
34 typedef std::vector<Tuple2<SkBitmap, base::FilePath> > DecodedImages;
35
36 #endif  // CHROME_COMMON_CHROME_UTILITY_MESSAGES_H_
37
38 IPC_STRUCT_TRAITS_BEGIN(printing::PageRange)
39   IPC_STRUCT_TRAITS_MEMBER(from)
40   IPC_STRUCT_TRAITS_MEMBER(to)
41 IPC_STRUCT_TRAITS_END()
42
43 IPC_STRUCT_TRAITS_BEGIN(printing::PrinterCapsAndDefaults)
44   IPC_STRUCT_TRAITS_MEMBER(printer_capabilities)
45   IPC_STRUCT_TRAITS_MEMBER(caps_mime_type)
46   IPC_STRUCT_TRAITS_MEMBER(printer_defaults)
47   IPC_STRUCT_TRAITS_MEMBER(defaults_mime_type)
48 IPC_STRUCT_TRAITS_END()
49
50 IPC_ENUM_TRAITS(printing::DuplexMode)
51
52 #if defined(OS_WIN)
53 IPC_STRUCT_TRAITS_BEGIN(printing::PrinterSemanticCapsAndDefaults::Paper)
54   IPC_STRUCT_TRAITS_MEMBER(name)
55   IPC_STRUCT_TRAITS_MEMBER(size_um)
56 IPC_STRUCT_TRAITS_END()
57 #endif
58
59 IPC_STRUCT_TRAITS_BEGIN(printing::PrinterSemanticCapsAndDefaults)
60   IPC_STRUCT_TRAITS_MEMBER(color_changeable)
61   IPC_STRUCT_TRAITS_MEMBER(color_default)
62 #if defined(USE_CUPS)
63   IPC_STRUCT_TRAITS_MEMBER(color_model)
64   IPC_STRUCT_TRAITS_MEMBER(bw_model)
65 #endif
66 #if defined(OS_WIN)
67   IPC_STRUCT_TRAITS_MEMBER(collate_capable)
68   IPC_STRUCT_TRAITS_MEMBER(collate_default)
69   IPC_STRUCT_TRAITS_MEMBER(copies_capable)
70   IPC_STRUCT_TRAITS_MEMBER(papers)
71   IPC_STRUCT_TRAITS_MEMBER(default_paper)
72   IPC_STRUCT_TRAITS_MEMBER(dpis)
73   IPC_STRUCT_TRAITS_MEMBER(default_dpi)
74 #endif
75   IPC_STRUCT_TRAITS_MEMBER(duplex_capable)
76   IPC_STRUCT_TRAITS_MEMBER(duplex_default)
77 IPC_STRUCT_TRAITS_END()
78
79 IPC_ENUM_TRAITS(printing::PwgRasterTransformType);
80
81 IPC_STRUCT_TRAITS_BEGIN(printing::PwgRasterSettings)
82   IPC_STRUCT_TRAITS_MEMBER(odd_page_transform)
83   IPC_STRUCT_TRAITS_MEMBER(rotate_all_pages)
84   IPC_STRUCT_TRAITS_MEMBER(reverse_page_order)
85 IPC_STRUCT_TRAITS_END()
86
87 IPC_STRUCT_TRAITS_BEGIN(UpdateManifest::Result)
88   IPC_STRUCT_TRAITS_MEMBER(extension_id)
89   IPC_STRUCT_TRAITS_MEMBER(version)
90   IPC_STRUCT_TRAITS_MEMBER(browser_min_version)
91   IPC_STRUCT_TRAITS_MEMBER(package_hash)
92   IPC_STRUCT_TRAITS_MEMBER(crx_url)
93 IPC_STRUCT_TRAITS_END()
94
95 IPC_STRUCT_TRAITS_BEGIN(UpdateManifest::Results)
96   IPC_STRUCT_TRAITS_MEMBER(list)
97   IPC_STRUCT_TRAITS_MEMBER(daystart_elapsed_seconds)
98 IPC_STRUCT_TRAITS_END()
99
100 IPC_STRUCT_TRAITS_BEGIN(safe_browsing::zip_analyzer::Results)
101   IPC_STRUCT_TRAITS_MEMBER(success)
102   IPC_STRUCT_TRAITS_MEMBER(has_executable)
103   IPC_STRUCT_TRAITS_MEMBER(has_archive)
104 IPC_STRUCT_TRAITS_END()
105
106 #if defined(OS_MACOSX)
107 IPC_STRUCT_TRAITS_BEGIN(iphoto::parser::Photo)
108   IPC_STRUCT_TRAITS_MEMBER(id)
109   IPC_STRUCT_TRAITS_MEMBER(location)
110   IPC_STRUCT_TRAITS_MEMBER(original_location)
111 IPC_STRUCT_TRAITS_END()
112
113 IPC_STRUCT_TRAITS_BEGIN(iphoto::parser::Library)
114   IPC_STRUCT_TRAITS_MEMBER(albums)
115   IPC_STRUCT_TRAITS_MEMBER(all_photos)
116 IPC_STRUCT_TRAITS_END()
117 #endif  // defined(OS_MACOSX)
118
119 #if defined(OS_WIN) || defined(OS_MACOSX)
120 IPC_STRUCT_TRAITS_BEGIN(itunes::parser::Track)
121   IPC_STRUCT_TRAITS_MEMBER(id)
122   IPC_STRUCT_TRAITS_MEMBER(location)
123 IPC_STRUCT_TRAITS_END()
124
125 IPC_STRUCT_TRAITS_BEGIN(picasa::AlbumInfo)
126   IPC_STRUCT_TRAITS_MEMBER(name)
127   IPC_STRUCT_TRAITS_MEMBER(timestamp)
128   IPC_STRUCT_TRAITS_MEMBER(uid)
129   IPC_STRUCT_TRAITS_MEMBER(path)
130 IPC_STRUCT_TRAITS_END()
131
132 // These files are opened read-only. Please see the constructor for
133 // picasa::AlbumTableFiles for details.
134 IPC_STRUCT_TRAITS_BEGIN(picasa::AlbumTableFilesForTransit)
135   IPC_STRUCT_TRAITS_MEMBER(indicator_file)
136   IPC_STRUCT_TRAITS_MEMBER(category_file)
137   IPC_STRUCT_TRAITS_MEMBER(date_file)
138   IPC_STRUCT_TRAITS_MEMBER(filename_file)
139   IPC_STRUCT_TRAITS_MEMBER(name_file)
140   IPC_STRUCT_TRAITS_MEMBER(token_file)
141   IPC_STRUCT_TRAITS_MEMBER(uid_file)
142 IPC_STRUCT_TRAITS_END()
143
144 IPC_STRUCT_TRAITS_BEGIN(picasa::FolderINIContents)
145   IPC_STRUCT_TRAITS_MEMBER(folder_path)
146   IPC_STRUCT_TRAITS_MEMBER(ini_contents)
147 IPC_STRUCT_TRAITS_END()
148 #endif  // defined(OS_WIN) || defined(OS_MACOSX)
149
150 //------------------------------------------------------------------------------
151 // Utility process messages:
152 // These are messages from the browser to the utility process.
153
154 // Tells the utility process to unpack the given extension file in its
155 // directory and verify that it is valid.
156 IPC_MESSAGE_CONTROL4(ChromeUtilityMsg_UnpackExtension,
157                      base::FilePath /* extension_filename */,
158                      std::string /* extension_id */,
159                      int /* Manifest::Location */,
160                      int /* InitFromValue flags */)
161
162 // Tell the utility process to parse the given JSON data and verify its
163 // validity.
164 IPC_MESSAGE_CONTROL1(ChromeUtilityMsg_UnpackWebResource,
165                      std::string /* JSON data */)
166
167 // Tell the utility process to parse the given xml document.
168 IPC_MESSAGE_CONTROL1(ChromeUtilityMsg_ParseUpdateManifest,
169                      std::string /* xml document contents */)
170
171 // Tell the utility process to decode the given image data.
172 IPC_MESSAGE_CONTROL1(ChromeUtilityMsg_DecodeImage,
173                      std::vector<unsigned char>)  // encoded image contents
174
175 // Tell the utility process to decode the given image data, which is base64
176 // encoded.
177 IPC_MESSAGE_CONTROL1(ChromeUtilityMsg_DecodeImageBase64,
178                      std::string)  // base64 encoded image contents
179
180 // Tell the utility process to render the given PDF into a metafile.
181 // TODO(vitalybuka): switch to IPC::PlatformFileForTransit.
182 IPC_MESSAGE_CONTROL4(ChromeUtilityMsg_RenderPDFPagesToMetafile,
183                      base::PlatformFile,       // PDF file
184                      base::FilePath,           // Location for output metafile
185                      printing::PdfRenderSettings,  // PDF render settings
186                      std::vector<printing::PageRange>)
187
188 // Tell the utility process to render the given PDF into a PWGRaster.
189 IPC_MESSAGE_CONTROL4(ChromeUtilityMsg_RenderPDFPagesToPWGRaster,
190                      IPC::PlatformFileForTransit, /* Input PDF file */
191                      printing::PdfRenderSettings, /* PDF render settings */
192                      // PWG transform settings.
193                      printing::PwgRasterSettings,
194                      IPC::PlatformFileForTransit /* Output PWG file */)
195
196 // Tell the utility process to decode the given JPEG image data with a robust
197 // libjpeg codec.
198 IPC_MESSAGE_CONTROL1(ChromeUtilityMsg_RobustJPEGDecodeImage,
199                      std::vector<unsigned char>)  // encoded image contents
200
201 // Tell the utility process to parse a JSON string into a Value object.
202 IPC_MESSAGE_CONTROL1(ChromeUtilityMsg_ParseJSON,
203                      std::string /* JSON to parse */)
204
205 // Tells the utility process to get capabilities and defaults for the specified
206 // printer. Used on Windows to isolate the service process from printer driver
207 // crashes by executing this in a separate process. This does not run in a
208 // sandbox.
209 IPC_MESSAGE_CONTROL1(ChromeUtilityMsg_GetPrinterCapsAndDefaults,
210                      std::string /* printer name */)
211
212 // Tells the utility process to get capabilities and defaults for the specified
213 // printer. Used on Windows to isolate the service process from printer driver
214 // crashes by executing this in a separate process. This does not run in a
215 // sandbox. Returns result as printing::PrinterSemanticCapsAndDefaults.
216 IPC_MESSAGE_CONTROL1(ChromeUtilityMsg_GetPrinterSemanticCapsAndDefaults,
217                      std::string /* printer name */)
218
219 // Tell the utility process to patch the given |input_file| using |patch_file|
220 // and place the output in |output_file|. The patch should use the bsdiff
221 // algorithm (Courgette's version).
222 IPC_MESSAGE_CONTROL3(ChromeUtilityMsg_PatchFileBsdiff,
223                      base::FilePath /* input_file */,
224                      base::FilePath /* patch_file */,
225                      base::FilePath /* output_file */)
226
227 // Tell the utility process to patch the given |input_file| using |patch_file|
228 // and place the output in |output_file|. The patch should use the Courgette
229 // algorithm.
230 IPC_MESSAGE_CONTROL3(ChromeUtilityMsg_PatchFileCourgette,
231                      base::FilePath /* input_file */,
232                      base::FilePath /* patch_file */,
233                      base::FilePath /* output_file */)
234
235 #if defined(OS_CHROMEOS)
236 // Tell the utility process to create a zip file on the given list of files.
237 IPC_MESSAGE_CONTROL3(ChromeUtilityMsg_CreateZipFile,
238                      base::FilePath /* src_dir */,
239                      std::vector<base::FilePath> /* src_relative_paths */,
240                      base::FileDescriptor /* dest_fd */)
241 #endif  // defined(OS_CHROMEOS)
242
243 // Requests the utility process to respond with a
244 // ChromeUtilityHostMsg_ProcessStarted message once it has started.  This may
245 // be used if the host process needs a handle to the running utility process.
246 IPC_MESSAGE_CONTROL0(ChromeUtilityMsg_StartupPing)
247
248 // Tells the utility process to analyze a zip file for malicious download
249 // protection.
250 IPC_MESSAGE_CONTROL1(ChromeUtilityMsg_AnalyzeZipFileForDownloadProtection,
251                      IPC::PlatformFileForTransit /* zip_file */)
252
253 #if defined(OS_WIN)
254 // Tell the utility process to parse the iTunes preference XML file contents
255 // and return the path to the iTunes directory.
256 IPC_MESSAGE_CONTROL1(ChromeUtilityMsg_ParseITunesPrefXml,
257                      std::string /* XML to parse */)
258 #endif  // defined(OS_WIN)
259
260 #if defined(OS_MACOSX)
261 // Tell the utility process to parse the iPhoto library XML file and
262 // return the parse result as well as the iPhoto library as an iphoto::Library.
263 IPC_MESSAGE_CONTROL1(ChromeUtilityMsg_ParseIPhotoLibraryXmlFile,
264                      IPC::PlatformFileForTransit /* XML file to parse */)
265 #endif  // defined(OS_MACOSX)
266
267 #if defined(OS_WIN) || defined(OS_MACOSX)
268 // Tell the utility process to parse the iTunes library XML file and
269 // return the parse result as well as the iTunes library as an itunes::Library.
270 IPC_MESSAGE_CONTROL1(ChromeUtilityMsg_ParseITunesLibraryXmlFile,
271                      IPC::PlatformFileForTransit /* XML file to parse */)
272
273 // Tells the utility process to parse the Picasa PMP database and return a
274 // listing of the user's Picasa albums and folders, along with metadata.
275 IPC_MESSAGE_CONTROL1(ChromeUtilityMsg_ParsePicasaPMPDatabase,
276                      picasa::AlbumTableFilesForTransit /* album_table_files */)
277
278 // Tells the utility process to index the Picasa user-created Album contents
279 // by parsing all the INI files in Picasa Folders.
280 IPC_MESSAGE_CONTROL2(ChromeUtilityMsg_IndexPicasaAlbumsContents,
281                      picasa::AlbumUIDSet /* album_uids */,
282                      std::vector<picasa::FolderINIContents> /* folders_inis */)
283 #endif  // defined(OS_WIN) || defined(OS_MACOSX)
284
285 #if !defined(OS_ANDROID) && !defined(OS_IOS)
286 // Tell the utility process to attempt to validate the passed media file. The
287 // file will undergo basic sanity checks and will be decoded for up to
288 // |milliseconds_of_decoding| wall clock time. It is still not safe to decode
289 // the file in the browser process after this check.
290 IPC_MESSAGE_CONTROL2(ChromeUtilityMsg_CheckMediaFile,
291                      int64 /* milliseconds_of_decoding */,
292                      IPC::PlatformFileForTransit /* Media file to parse */)
293
294 IPC_MESSAGE_CONTROL2(ChromeUtilityMsg_ParseMediaMetadata,
295                      std::string /* mime_type */,
296                      int64 /* total_size */)
297
298 IPC_MESSAGE_CONTROL2(ChromeUtilityMsg_RequestBlobBytes_Finished,
299                      int64 /* request_id */,
300                      std::string /* bytes */)
301 #endif  // !defined(OS_ANDROID) && !defined(OS_IOS)
302
303 // Requests that the utility process write the contents of the source file to
304 // the removable drive listed in the target file. The target will be restricted
305 // to removable drives by the utility process.
306 IPC_MESSAGE_CONTROL2(ChromeUtilityMsg_ImageWriter_Write,
307                      base::FilePath /* source file */,
308                      base::FilePath /* target file */)
309
310 // Requests that the utility process verify that the contents of the source file
311 // was written to the target. As above the target will be restricted to
312 // removable drives by the utility process.
313 IPC_MESSAGE_CONTROL2(ChromeUtilityMsg_ImageWriter_Verify,
314                      base::FilePath /* source file */,
315                      base::FilePath /* target file */)
316
317 // Cancels a pending write or verify operation.
318 IPC_MESSAGE_CONTROL0(ChromeUtilityMsg_ImageWriter_Cancel)
319
320 //------------------------------------------------------------------------------
321 // Utility process host messages:
322 // These are messages from the utility process to the browser.
323
324 // Reply when the utility process is done unpacking an extension.  |manifest|
325 // is the parsed manifest.json file.
326 // The unpacker should also have written out files containing the decoded
327 // images and message catalogs from the extension. The data is written into a
328 // DecodedImages struct into a file named kDecodedImagesFilename in the
329 // directory that was passed in. This is done because the data is too large to
330 // pass over IPC.
331 IPC_MESSAGE_CONTROL1(ChromeUtilityHostMsg_UnpackExtension_Succeeded,
332                      base::DictionaryValue /* manifest */)
333
334 // Reply when the utility process has failed while unpacking an extension.
335 // |error_message| is a user-displayable explanation of what went wrong.
336 IPC_MESSAGE_CONTROL1(ChromeUtilityHostMsg_UnpackExtension_Failed,
337                      base::string16 /* error_message, if any */)
338
339 // Reply when the utility process is done unpacking and parsing JSON data
340 // from a web resource.
341 IPC_MESSAGE_CONTROL1(ChromeUtilityHostMsg_UnpackWebResource_Succeeded,
342                      base::DictionaryValue /* json data */)
343
344 // Reply when the utility process has failed while unpacking and parsing a
345 // web resource.  |error_message| is a user-readable explanation of what
346 // went wrong.
347 IPC_MESSAGE_CONTROL1(ChromeUtilityHostMsg_UnpackWebResource_Failed,
348                      std::string /* error_message, if any */)
349
350 // Reply when the utility process has succeeded in parsing an update manifest
351 // xml document.
352 IPC_MESSAGE_CONTROL1(ChromeUtilityHostMsg_ParseUpdateManifest_Succeeded,
353                      UpdateManifest::Results /* updates */)
354
355 // Reply when an error occurred parsing the update manifest. |error_message|
356 // is a description of what went wrong suitable for logging.
357 IPC_MESSAGE_CONTROL1(ChromeUtilityHostMsg_ParseUpdateManifest_Failed,
358                      std::string /* error_message, if any */)
359
360 // Reply when the utility process has succeeded in decoding the image.
361 IPC_MESSAGE_CONTROL1(ChromeUtilityHostMsg_DecodeImage_Succeeded,
362                      SkBitmap)  // decoded image
363
364 // Reply when an error occurred decoding the image.
365 IPC_MESSAGE_CONTROL0(ChromeUtilityHostMsg_DecodeImage_Failed)
366
367 // Reply when the utility process has succeeded in rendering the PDF.
368 IPC_MESSAGE_CONTROL2(ChromeUtilityHostMsg_RenderPDFPagesToMetafile_Succeeded,
369                      int,          // Highest rendered page number
370                      double)       // Scale factor
371
372 // Reply when an error occurred rendering the PDF.
373 IPC_MESSAGE_CONTROL0(ChromeUtilityHostMsg_RenderPDFPagesToMetafile_Failed)
374
375 // Reply when the utility process has succeeded in rendering the PDF to PWG.
376 IPC_MESSAGE_CONTROL0(ChromeUtilityHostMsg_RenderPDFPagesToPWGRaster_Succeeded)
377
378 // Reply when an error occurred rendering the PDF to PWG.
379 IPC_MESSAGE_CONTROL0(ChromeUtilityHostMsg_RenderPDFPagesToPWGRaster_Failed)
380
381 // Reply when the utility process successfully parsed a JSON string.
382 //
383 // WARNING: The result can be of any Value subclass type, but we can't easily
384 // pass indeterminate value types by const object reference with our IPC macros,
385 // so we put the result Value into a ListValue. Handlers should examine the
386 // first (and only) element of the ListValue for the actual result.
387 IPC_MESSAGE_CONTROL1(ChromeUtilityHostMsg_ParseJSON_Succeeded,
388                      base::ListValue)
389
390 // Reply when the utility process failed in parsing a JSON string.
391 IPC_MESSAGE_CONTROL1(ChromeUtilityHostMsg_ParseJSON_Failed,
392                      std::string /* error message, if any*/)
393
394 #if defined(ENABLE_FULL_PRINTING)
395 // Reply when the utility process has succeeded in obtaining the printer
396 // capabilities and defaults.
397 IPC_MESSAGE_CONTROL2(ChromeUtilityHostMsg_GetPrinterCapsAndDefaults_Succeeded,
398                      std::string /* printer name */,
399                      printing::PrinterCapsAndDefaults)
400
401 // Reply when the utility process has succeeded in obtaining the printer
402 // semantic capabilities and defaults.
403 IPC_MESSAGE_CONTROL2(
404     ChromeUtilityHostMsg_GetPrinterSemanticCapsAndDefaults_Succeeded,
405     std::string /* printer name */,
406     printing::PrinterSemanticCapsAndDefaults)
407 #endif
408
409 // Reply when a file has been patched successfully.
410 IPC_MESSAGE_CONTROL0(ChromeUtilityHostMsg_PatchFile_Succeeded)
411
412 // Reply when patching a file failed.
413 IPC_MESSAGE_CONTROL1(ChromeUtilityHostMsg_PatchFile_Failed,
414                      int /* error code */)
415
416 // Reply when the utility process has failed to obtain the printer
417 // capabilities and defaults.
418 IPC_MESSAGE_CONTROL1(ChromeUtilityHostMsg_GetPrinterCapsAndDefaults_Failed,
419                      std::string /* printer name */)
420
421 // Reply when the utility process has failed to obtain the printer
422 // semantic capabilities and defaults.
423 IPC_MESSAGE_CONTROL1(
424   ChromeUtilityHostMsg_GetPrinterSemanticCapsAndDefaults_Failed,
425   std::string /* printer name */)
426
427 #if defined(OS_CHROMEOS)
428 // Reply when the utility process has succeeded in creating the zip file.
429 IPC_MESSAGE_CONTROL0(ChromeUtilityHostMsg_CreateZipFile_Succeeded)
430
431 // Reply when an error occured in creating the zip file.
432 IPC_MESSAGE_CONTROL0(ChromeUtilityHostMsg_CreateZipFile_Failed)
433 #endif  // defined(OS_CHROMEOS)
434
435 // Reply when the utility process has started.
436 IPC_MESSAGE_CONTROL0(ChromeUtilityHostMsg_ProcessStarted)
437
438 // Reply when a zip file has been analyzed for malicious download protection.
439 IPC_MESSAGE_CONTROL1(
440     ChromeUtilityHostMsg_AnalyzeZipFileForDownloadProtection_Finished,
441     safe_browsing::zip_analyzer::Results)
442
443 #if defined(OS_WIN)
444 // Reply after parsing the iTunes preferences XML file contents with either the
445 // path to the iTunes directory or an empty FilePath.
446 IPC_MESSAGE_CONTROL1(ChromeUtilityHostMsg_GotITunesDirectory,
447                      base::FilePath /* Path to iTunes library */)
448 #endif  // defined(OS_WIN)
449
450 #if defined(OS_MACOSX)
451 // Reply after parsing the iPhoto library XML file with the parser result and
452 // an iphoto::Library data structure.
453 IPC_MESSAGE_CONTROL2(ChromeUtilityHostMsg_GotIPhotoLibrary,
454                      bool /* Parser result */,
455                      iphoto::parser::Library /* iPhoto library */)
456 #endif  // defined(OS_MACOSX)
457
458 #if defined(OS_WIN) || defined(OS_MACOSX)
459 // Reply after parsing the iTunes library XML file with the parser result and
460 // an itunes::Library data structure.
461 IPC_MESSAGE_CONTROL2(ChromeUtilityHostMsg_GotITunesLibrary,
462                      bool /* Parser result */,
463                      itunes::parser::Library /* iTunes library */)
464
465 // Reply after parsing the Picasa PMP Database with the parser result and a
466 // listing of the user's Picasa albums and folders, along with metadata.
467 IPC_MESSAGE_CONTROL3(ChromeUtilityHostMsg_ParsePicasaPMPDatabase_Finished,
468                      bool /* parse_success */,
469                      std::vector<picasa::AlbumInfo> /* albums */,
470                      std::vector<picasa::AlbumInfo> /* folders */)
471
472 // Reply after indexing the Picasa user-created Album contents by parsing all
473 // the INI files in Picasa Folders.
474 IPC_MESSAGE_CONTROL1(ChromeUtilityHostMsg_IndexPicasaAlbumsContents_Finished,
475                      picasa::AlbumImagesMap /* albums_images */)
476 #endif  // defined(OS_WIN) || defined(OS_MACOSX)
477
478 #if !defined(OS_ANDROID) && !defined(OS_IOS)
479 // Reply after checking the passed media file. A true result indicates that
480 // the file appears to be a well formed media file.
481 IPC_MESSAGE_CONTROL1(ChromeUtilityHostMsg_CheckMediaFile_Finished,
482                      bool /* passed_checks */)
483
484 IPC_MESSAGE_CONTROL2(ChromeUtilityHostMsg_ParseMediaMetadata_Finished,
485                      bool /* parse_success */,
486                      base::DictionaryValue /* metadata */)
487
488 IPC_MESSAGE_CONTROL3(ChromeUtilityHostMsg_RequestBlobBytes,
489                      int64 /* request_id */,
490                      int64 /* start_byte */,
491                      int64 /* length */)
492 #endif  // !defined(OS_ANDROID) && !defined(OS_IOS)
493
494 // Reply when a write or verify operation succeeds.
495 IPC_MESSAGE_CONTROL0(ChromeUtilityHostMsg_ImageWriter_Succeeded)
496
497 // Reply when a write or verify operation has been fully cancelled.
498 IPC_MESSAGE_CONTROL0(ChromeUtilityHostMsg_ImageWriter_Cancelled)
499
500 // Reply when a write or verify operation fails to complete.
501 IPC_MESSAGE_CONTROL1(ChromeUtilityHostMsg_ImageWriter_Failed,
502                      std::string /* message */)
503
504 // Periodic status update about the progress of an operation.
505 IPC_MESSAGE_CONTROL1(ChromeUtilityHostMsg_ImageWriter_Progress,
506                      int64 /* number of bytes processed */)
507
508 #if defined(OS_WIN)
509 // Get plain-text WiFi credentials from the system (requires UAC privilege
510 // elevation) and encrypt them with |public_key|.
511 IPC_MESSAGE_CONTROL2(ChromeUtilityHostMsg_GetAndEncryptWiFiCredentials,
512                      std::string /* ssid */,
513                      std::vector<uint8> /* public_key */)
514
515 // Reply after getting WiFi credentials from the system and encrypting them with
516 // caller's public key. |success| is false if error occurred.
517 IPC_MESSAGE_CONTROL2(ChromeUtilityHostMsg_GotEncryptedWiFiCredentials,
518                      std::vector<uint8> /* encrypted_key_data */,
519                      bool /* success */)
520 #endif  // defined(OS_WIN)