ppapi_messages.h revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
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 header, no traditional include guard.
6#include <string>
7#include <vector>
8
9#include "base/basictypes.h"
10#include "base/files/file_path.h"
11#include "base/process.h"
12#include "base/shared_memory.h"
13#include "base/string16.h"
14#include "base/sync_socket.h"
15#include "gpu/command_buffer/common/command_buffer.h"
16#include "gpu/ipc/gpu_command_buffer_traits.h"
17#include "ipc/ipc_channel_handle.h"
18#include "ipc/ipc_message_macros.h"
19#include "ipc/ipc_message_utils.h"
20#include "ipc/ipc_platform_file.h"
21#include "ppapi/c/dev/pp_video_capture_dev.h"
22#include "ppapi/c/dev/pp_video_dev.h"
23#include "ppapi/c/dev/ppb_directory_reader_dev.h"
24#include "ppapi/c/dev/ppb_text_input_dev.h"
25#include "ppapi/c/dev/ppb_truetype_font_dev.h"
26#include "ppapi/c/dev/ppb_url_util_dev.h"
27#include "ppapi/c/dev/ppp_printing_dev.h"
28#include "ppapi/c/pp_bool.h"
29#include "ppapi/c/pp_file_info.h"
30#include "ppapi/c/pp_instance.h"
31#include "ppapi/c/pp_module.h"
32#include "ppapi/c/pp_point.h"
33#include "ppapi/c/pp_rect.h"
34#include "ppapi/c/pp_resource.h"
35#include "ppapi/c/pp_size.h"
36#include "ppapi/c/pp_time.h"
37#include "ppapi/c/ppb_audio_config.h"
38#include "ppapi/c/private/pp_content_decryptor.h"
39#include "ppapi/c/private/pp_private_font_charset.h"
40#include "ppapi/c/private/ppb_flash.h"
41#include "ppapi/c/private/ppb_host_resolver_private.h"
42#include "ppapi/c/private/ppb_net_address_private.h"
43#include "ppapi/c/private/ppb_tcp_socket_private.h"
44#include "ppapi/c/private/ppb_udp_socket_private.h"
45#include "ppapi/c/private/ppp_flash_browser_operations.h"
46#include "ppapi/proxy/host_resolver_private_resource.h"
47#include "ppapi/proxy/ppapi_param_traits.h"
48#include "ppapi/proxy/ppapi_proxy_export.h"
49#include "ppapi/proxy/resource_message_params.h"
50#include "ppapi/proxy/serialized_flash_menu.h"
51#include "ppapi/proxy/serialized_handle.h"
52#include "ppapi/proxy/serialized_structs.h"
53#include "ppapi/proxy/serialized_var.h"
54#include "ppapi/shared_impl/dir_contents.h"
55#include "ppapi/shared_impl/file_path.h"
56#include "ppapi/shared_impl/ppapi_preferences.h"
57#include "ppapi/shared_impl/ppb_device_ref_shared.h"
58#include "ppapi/shared_impl/ppb_input_event_shared.h"
59#include "ppapi/shared_impl/ppb_network_list_private_shared.h"
60#include "ppapi/shared_impl/ppb_view_shared.h"
61#include "ppapi/shared_impl/ppp_flash_browser_operations_shared.h"
62#include "ppapi/shared_impl/private/ppb_x509_certificate_private_shared.h"
63#include "ppapi/shared_impl/url_request_info_data.h"
64#include "ppapi/shared_impl/url_response_info_data.h"
65
66#undef IPC_MESSAGE_EXPORT
67#define IPC_MESSAGE_EXPORT PPAPI_PROXY_EXPORT
68
69#define IPC_MESSAGE_START PpapiMsgStart
70
71IPC_ENUM_TRAITS(PP_AudioSampleRate)
72IPC_ENUM_TRAITS(PP_DeviceType_Dev)
73IPC_ENUM_TRAITS(PP_DecryptorStreamType)
74IPC_ENUM_TRAITS(PP_FileType)
75IPC_ENUM_TRAITS(PP_Flash_BrowserOperations_Permission)
76IPC_ENUM_TRAITS(PP_Flash_BrowserOperations_SettingType)
77IPC_ENUM_TRAITS(PP_FlashSetting)
78IPC_ENUM_TRAITS(PP_InputEvent_MouseButton)
79IPC_ENUM_TRAITS(PP_InputEvent_Type)
80IPC_ENUM_TRAITS(PP_NetAddressFamily_Private)
81IPC_ENUM_TRAITS(PP_NetworkListState_Private)
82IPC_ENUM_TRAITS(PP_NetworkListType_Private)
83IPC_ENUM_TRAITS(PP_PrintOrientation_Dev)
84IPC_ENUM_TRAITS(PP_PrintOutputFormat_Dev)
85IPC_ENUM_TRAITS(PP_PrintScalingOption_Dev)
86IPC_ENUM_TRAITS(PP_PrivateFontCharset)
87IPC_ENUM_TRAITS(PP_TextInput_Type)
88IPC_ENUM_TRAITS(PP_TrueTypeFontFamily_Dev)
89IPC_ENUM_TRAITS(PP_TrueTypeFontStyle_Dev)
90IPC_ENUM_TRAITS(PP_TrueTypeFontWeight_Dev)
91IPC_ENUM_TRAITS(PP_TrueTypeFontWidth_Dev)
92IPC_ENUM_TRAITS(PP_TrueTypeFontCharset_Dev)
93IPC_ENUM_TRAITS(PP_VideoDecodeError_Dev)
94IPC_ENUM_TRAITS(PP_VideoDecoder_Profile)
95
96IPC_STRUCT_TRAITS_BEGIN(PP_Point)
97  IPC_STRUCT_TRAITS_MEMBER(x)
98  IPC_STRUCT_TRAITS_MEMBER(y)
99IPC_STRUCT_TRAITS_END()
100
101IPC_STRUCT_TRAITS_BEGIN(PP_FloatPoint)
102  IPC_STRUCT_TRAITS_MEMBER(x)
103  IPC_STRUCT_TRAITS_MEMBER(y)
104IPC_STRUCT_TRAITS_END()
105
106IPC_STRUCT_TRAITS_BEGIN(PP_Size)
107  IPC_STRUCT_TRAITS_MEMBER(height)
108  IPC_STRUCT_TRAITS_MEMBER(width)
109IPC_STRUCT_TRAITS_END()
110
111IPC_STRUCT_TRAITS_BEGIN(PP_Rect)
112  IPC_STRUCT_TRAITS_MEMBER(point)
113  IPC_STRUCT_TRAITS_MEMBER(size)
114IPC_STRUCT_TRAITS_END()
115
116IPC_STRUCT_TRAITS_BEGIN(PP_PictureBuffer_Dev)
117  IPC_STRUCT_TRAITS_MEMBER(id)
118  IPC_STRUCT_TRAITS_MEMBER(size)
119  IPC_STRUCT_TRAITS_MEMBER(texture_id)
120IPC_STRUCT_TRAITS_END()
121
122IPC_STRUCT_TRAITS_BEGIN(PP_Picture_Dev)
123  IPC_STRUCT_TRAITS_MEMBER(picture_buffer_id)
124  IPC_STRUCT_TRAITS_MEMBER(bitstream_buffer_id)
125IPC_STRUCT_TRAITS_END()
126
127IPC_STRUCT_TRAITS_BEGIN(PP_PrintPageNumberRange_Dev)
128  IPC_STRUCT_TRAITS_MEMBER(first_page_number)
129  IPC_STRUCT_TRAITS_MEMBER(last_page_number)
130IPC_STRUCT_TRAITS_END()
131
132IPC_STRUCT_TRAITS_BEGIN(PP_VideoCaptureDeviceInfo_Dev)
133  IPC_STRUCT_TRAITS_MEMBER(width)
134  IPC_STRUCT_TRAITS_MEMBER(height)
135  IPC_STRUCT_TRAITS_MEMBER(frames_per_second)
136IPC_STRUCT_TRAITS_END()
137
138IPC_STRUCT_TRAITS_BEGIN(PP_HostResolver_Private_Hint)
139  IPC_STRUCT_TRAITS_MEMBER(family)
140  IPC_STRUCT_TRAITS_MEMBER(flags)
141IPC_STRUCT_TRAITS_END()
142
143IPC_STRUCT_TRAITS_BEGIN(PP_PrintSettings_Dev)
144  IPC_STRUCT_TRAITS_MEMBER(printable_area)
145  IPC_STRUCT_TRAITS_MEMBER(content_area)
146  IPC_STRUCT_TRAITS_MEMBER(paper_size)
147  IPC_STRUCT_TRAITS_MEMBER(dpi)
148  IPC_STRUCT_TRAITS_MEMBER(orientation)
149  IPC_STRUCT_TRAITS_MEMBER(print_scaling_option)
150  IPC_STRUCT_TRAITS_MEMBER(grayscale)
151  IPC_STRUCT_TRAITS_MEMBER(format)
152IPC_STRUCT_TRAITS_END()
153
154IPC_STRUCT_TRAITS_BEGIN(PP_URLComponent_Dev)
155  IPC_STRUCT_TRAITS_MEMBER(begin)
156  IPC_STRUCT_TRAITS_MEMBER(len)
157IPC_STRUCT_TRAITS_END()
158
159IPC_STRUCT_TRAITS_BEGIN(PP_URLComponents_Dev)
160  IPC_STRUCT_TRAITS_MEMBER(scheme)
161  IPC_STRUCT_TRAITS_MEMBER(username)
162  IPC_STRUCT_TRAITS_MEMBER(password)
163  IPC_STRUCT_TRAITS_MEMBER(host)
164  IPC_STRUCT_TRAITS_MEMBER(port)
165  IPC_STRUCT_TRAITS_MEMBER(path)
166  IPC_STRUCT_TRAITS_MEMBER(query)
167  IPC_STRUCT_TRAITS_MEMBER(ref)
168IPC_STRUCT_TRAITS_END()
169
170IPC_STRUCT_TRAITS_BEGIN(ppapi::DeviceRefData)
171  IPC_STRUCT_TRAITS_MEMBER(type)
172  IPC_STRUCT_TRAITS_MEMBER(name)
173  IPC_STRUCT_TRAITS_MEMBER(id)
174IPC_STRUCT_TRAITS_END()
175
176IPC_STRUCT_TRAITS_BEGIN(ppapi::DirEntry)
177  IPC_STRUCT_TRAITS_MEMBER(name)
178  IPC_STRUCT_TRAITS_MEMBER(is_dir)
179IPC_STRUCT_TRAITS_END()
180
181IPC_STRUCT_TRAITS_BEGIN(ppapi::FlashSiteSetting)
182  IPC_STRUCT_TRAITS_MEMBER(site)
183  IPC_STRUCT_TRAITS_MEMBER(permission)
184IPC_STRUCT_TRAITS_END()
185
186IPC_STRUCT_TRAITS_BEGIN(ppapi::ViewData)
187  IPC_STRUCT_TRAITS_MEMBER(rect)
188  IPC_STRUCT_TRAITS_MEMBER(is_fullscreen)
189  IPC_STRUCT_TRAITS_MEMBER(is_page_visible)
190  IPC_STRUCT_TRAITS_MEMBER(clip_rect)
191  IPC_STRUCT_TRAITS_MEMBER(device_scale)
192  IPC_STRUCT_TRAITS_MEMBER(css_scale)
193IPC_STRUCT_TRAITS_END()
194
195IPC_STRUCT_TRAITS_BEGIN(PP_TouchPoint)
196  IPC_STRUCT_TRAITS_MEMBER(id)
197  IPC_STRUCT_TRAITS_MEMBER(position)
198  IPC_STRUCT_TRAITS_MEMBER(radius)
199  IPC_STRUCT_TRAITS_MEMBER(rotation_angle)
200  IPC_STRUCT_TRAITS_MEMBER(pressure)
201IPC_STRUCT_TRAITS_END()
202
203IPC_STRUCT_TRAITS_BEGIN(ppapi::Preferences)
204  IPC_STRUCT_TRAITS_MEMBER(standard_font_family_map)
205  IPC_STRUCT_TRAITS_MEMBER(fixed_font_family_map)
206  IPC_STRUCT_TRAITS_MEMBER(serif_font_family_map)
207  IPC_STRUCT_TRAITS_MEMBER(sans_serif_font_family_map)
208  IPC_STRUCT_TRAITS_MEMBER(default_font_size)
209  IPC_STRUCT_TRAITS_MEMBER(default_fixed_font_size)
210  IPC_STRUCT_TRAITS_MEMBER(number_of_cpu_cores)
211  IPC_STRUCT_TRAITS_MEMBER(is_3d_supported)
212  IPC_STRUCT_TRAITS_MEMBER(is_stage3d_supported)
213  IPC_STRUCT_TRAITS_MEMBER(is_stage3d_baseline_supported)
214IPC_STRUCT_TRAITS_END()
215
216IPC_STRUCT_TRAITS_BEGIN(ppapi::InputEventData)
217  IPC_STRUCT_TRAITS_MEMBER(is_filtered)
218  IPC_STRUCT_TRAITS_MEMBER(event_type)
219  IPC_STRUCT_TRAITS_MEMBER(event_time_stamp)
220  IPC_STRUCT_TRAITS_MEMBER(event_modifiers)
221  IPC_STRUCT_TRAITS_MEMBER(mouse_button)
222  IPC_STRUCT_TRAITS_MEMBER(mouse_position)
223  IPC_STRUCT_TRAITS_MEMBER(mouse_click_count)
224  IPC_STRUCT_TRAITS_MEMBER(mouse_movement)
225  IPC_STRUCT_TRAITS_MEMBER(wheel_delta)
226  IPC_STRUCT_TRAITS_MEMBER(wheel_ticks)
227  IPC_STRUCT_TRAITS_MEMBER(wheel_scroll_by_page)
228  IPC_STRUCT_TRAITS_MEMBER(key_code)
229  IPC_STRUCT_TRAITS_MEMBER(usb_key_code)
230  IPC_STRUCT_TRAITS_MEMBER(character_text)
231  IPC_STRUCT_TRAITS_MEMBER(composition_segment_offsets)
232  IPC_STRUCT_TRAITS_MEMBER(composition_target_segment)
233  IPC_STRUCT_TRAITS_MEMBER(composition_selection_start)
234  IPC_STRUCT_TRAITS_MEMBER(composition_selection_end)
235  IPC_STRUCT_TRAITS_MEMBER(touches)
236  IPC_STRUCT_TRAITS_MEMBER(changed_touches)
237  IPC_STRUCT_TRAITS_MEMBER(target_touches)
238IPC_STRUCT_TRAITS_END()
239
240IPC_STRUCT_TRAITS_BEGIN(ppapi::HostPortPair)
241  IPC_STRUCT_TRAITS_MEMBER(host)
242  IPC_STRUCT_TRAITS_MEMBER(port)
243IPC_STRUCT_TRAITS_END()
244
245IPC_STRUCT_TRAITS_BEGIN(ppapi::URLRequestInfoData)
246  IPC_STRUCT_TRAITS_MEMBER(url)
247  IPC_STRUCT_TRAITS_MEMBER(method)
248  IPC_STRUCT_TRAITS_MEMBER(headers)
249  IPC_STRUCT_TRAITS_MEMBER(stream_to_file)
250  IPC_STRUCT_TRAITS_MEMBER(follow_redirects)
251  IPC_STRUCT_TRAITS_MEMBER(record_download_progress)
252  IPC_STRUCT_TRAITS_MEMBER(record_upload_progress)
253  IPC_STRUCT_TRAITS_MEMBER(has_custom_referrer_url)
254  IPC_STRUCT_TRAITS_MEMBER(custom_referrer_url)
255  IPC_STRUCT_TRAITS_MEMBER(allow_cross_origin_requests)
256  IPC_STRUCT_TRAITS_MEMBER(allow_credentials)
257  IPC_STRUCT_TRAITS_MEMBER(has_custom_content_transfer_encoding)
258  IPC_STRUCT_TRAITS_MEMBER(custom_content_transfer_encoding)
259  IPC_STRUCT_TRAITS_MEMBER(prefetch_buffer_upper_threshold)
260  IPC_STRUCT_TRAITS_MEMBER(prefetch_buffer_lower_threshold)
261  IPC_STRUCT_TRAITS_MEMBER(has_custom_user_agent)
262  IPC_STRUCT_TRAITS_MEMBER(custom_user_agent)
263  IPC_STRUCT_TRAITS_MEMBER(body)
264IPC_STRUCT_TRAITS_END()
265
266IPC_STRUCT_TRAITS_BEGIN(ppapi::URLRequestInfoData::BodyItem)
267  IPC_STRUCT_TRAITS_MEMBER(is_file)
268  IPC_STRUCT_TRAITS_MEMBER(data)
269  // Note: we don't serialize file_ref.
270  IPC_STRUCT_TRAITS_MEMBER(file_ref_host_resource)
271  IPC_STRUCT_TRAITS_MEMBER(start_offset)
272  IPC_STRUCT_TRAITS_MEMBER(number_of_bytes)
273  IPC_STRUCT_TRAITS_MEMBER(expected_last_modified_time)
274IPC_STRUCT_TRAITS_END()
275
276IPC_STRUCT_TRAITS_BEGIN(ppapi::URLResponseInfoData)
277  IPC_STRUCT_TRAITS_MEMBER(url)
278  IPC_STRUCT_TRAITS_MEMBER(headers)
279  IPC_STRUCT_TRAITS_MEMBER(status_code)
280  IPC_STRUCT_TRAITS_MEMBER(status_text)
281  IPC_STRUCT_TRAITS_MEMBER(redirect_url)
282  IPC_STRUCT_TRAITS_MEMBER(body_as_file_ref)
283IPC_STRUCT_TRAITS_END()
284
285IPC_STRUCT_TRAITS_BEGIN(ppapi::NetworkInfo)
286  IPC_STRUCT_TRAITS_MEMBER(name)
287  IPC_STRUCT_TRAITS_MEMBER(type)
288  IPC_STRUCT_TRAITS_MEMBER(state)
289  IPC_STRUCT_TRAITS_MEMBER(addresses)
290  IPC_STRUCT_TRAITS_MEMBER(display_name)
291  IPC_STRUCT_TRAITS_MEMBER(mtu)
292IPC_STRUCT_TRAITS_END()
293
294#if !defined(OS_NACL) && !defined(NACL_WIN64)
295
296IPC_STRUCT_TRAITS_BEGIN(ppapi::proxy::PPPDecryptor_Buffer)
297  IPC_STRUCT_TRAITS_MEMBER(resource)
298  IPC_STRUCT_TRAITS_MEMBER(handle)
299  IPC_STRUCT_TRAITS_MEMBER(size)
300IPC_STRUCT_TRAITS_END()
301
302#endif  // !defined(OS_NACL) && !defined(NACL_WIN64)
303
304// These are from the browser to the plugin.
305// Loads the given plugin.
306IPC_MESSAGE_CONTROL2(PpapiMsg_LoadPlugin,
307                     base::FilePath /* path */,
308                     ppapi::PpapiPermissions /* permissions */)
309
310// Creates a channel to talk to a renderer. The plugin will respond with
311// PpapiHostMsg_ChannelCreated.
312IPC_MESSAGE_CONTROL3(PpapiMsg_CreateChannel,
313                     base::ProcessId /* renderer_pid */,
314                     int /* renderer_child_id */,
315                     bool /* incognito */)
316
317// Creates a channel to talk to a renderer. This message is only used by the
318// NaCl IPC proxy. It is intercepted by NaClIPCAdapter, which creates the
319// actual channel and rewrites the message for the untrusted side.
320IPC_MESSAGE_CONTROL4(PpapiMsg_CreateNaClChannel,
321                     int /* renderer_id */,
322                     ppapi::PpapiPermissions /* permissions */,
323                     bool /* incognito */,
324                     ppapi::proxy::SerializedHandle /* channel_handle */)
325
326// Instructs the plugin process to crash.
327IPC_MESSAGE_CONTROL0(PpapiMsg_Crash)
328
329// Instructs the plugin process to hang.
330IPC_MESSAGE_CONTROL0(PpapiMsg_Hang)
331
332// Each plugin may be referenced by multiple renderers. We need the instance
333// IDs to be unique within a plugin, despite coming from different renderers,
334// and unique within a renderer, despite going to different plugins. This means
335// that neither the renderer nor the plugin can generate instance IDs without
336// consulting the other.
337//
338// We resolve this by having the renderer generate a unique instance ID inside
339// its process. It then asks the plugin to reserve that ID by sending this sync
340// message. If the plugin has not yet seen this ID, it will remember it as used
341// (to prevent a race condition if another renderer tries to then use the same
342// instance), and set usable as true.
343//
344// If the plugin has already seen the instance ID, it will set usable as false
345// and the renderer must retry a new instance ID.
346IPC_SYNC_MESSAGE_CONTROL1_1(PpapiMsg_ReserveInstanceId,
347                            PP_Instance /* instance */,
348                            bool /* usable */)
349
350// Passes the WebKit preferences to the plugin.
351IPC_MESSAGE_CONTROL1(PpapiMsg_SetPreferences,
352                     ppapi::Preferences)
353
354// Sent in both directions to see if the other side supports the given
355// interface.
356IPC_SYNC_MESSAGE_CONTROL1_1(PpapiMsg_SupportsInterface,
357                            std::string /* interface_name */,
358                            bool /* result */)
359
360#if !defined(OS_NACL) && !defined(NACL_WIN64)
361// Network state notification from the browser for implementing
362// PPP_NetworkState_Dev.
363IPC_MESSAGE_CONTROL1(PpapiMsg_SetNetworkState,
364                     bool /* online */)
365
366// Requests a list of sites that have data stored from the plugin. The plugin
367// process will respond with PpapiHostMsg_GetSitesWithDataResult. This is used
368// for Flash.
369IPC_MESSAGE_CONTROL2(PpapiMsg_GetSitesWithData,
370                     uint32 /* request_id */,
371                     base::FilePath /* plugin_data_path */)
372IPC_MESSAGE_CONTROL2(PpapiHostMsg_GetSitesWithDataResult,
373                     uint32 /* request_id */,
374                     std::vector<std::string> /* sites */)
375
376// Instructs the plugin to clear data for the given site & time. The plugin
377// process will respond with PpapiHostMsg_ClearSiteDataResult. This is used
378// for Flash.
379IPC_MESSAGE_CONTROL5(PpapiMsg_ClearSiteData,
380                     uint32 /* request_id */,
381                     base::FilePath /* plugin_data_path */,
382                     std::string /* site */,
383                     uint64 /* flags */,
384                     uint64 /* max_age */)
385IPC_MESSAGE_CONTROL2(PpapiHostMsg_ClearSiteDataResult,
386                     uint32 /* request_id */,
387                     bool /* success */)
388
389IPC_MESSAGE_CONTROL2(PpapiMsg_DeauthorizeContentLicenses,
390                     uint32 /* request_id */,
391                     base::FilePath /* plugin_data_path */)
392IPC_MESSAGE_CONTROL2(PpapiHostMsg_DeauthorizeContentLicensesResult,
393                     uint32 /* request_id */,
394                     bool /* success */)
395
396IPC_MESSAGE_CONTROL3(PpapiMsg_GetPermissionSettings,
397                     uint32 /* request_id */,
398                     base::FilePath /* plugin_data_path */,
399                     PP_Flash_BrowserOperations_SettingType /* setting_type */)
400IPC_MESSAGE_CONTROL4(
401    PpapiHostMsg_GetPermissionSettingsResult,
402    uint32 /* request_id */,
403    bool /* success */,
404    PP_Flash_BrowserOperations_Permission /* default_permission */,
405    ppapi::FlashSiteSettings /* sites */)
406
407IPC_MESSAGE_CONTROL5(PpapiMsg_SetDefaultPermission,
408                     uint32 /* request_id */,
409                     base::FilePath /* plugin_data_path */,
410                     PP_Flash_BrowserOperations_SettingType /* setting_type */,
411                     PP_Flash_BrowserOperations_Permission /* permission */,
412                     bool /* clear_site_specific */)
413IPC_MESSAGE_CONTROL2(PpapiHostMsg_SetDefaultPermissionResult,
414                     uint32 /* request_id */,
415                     bool /* success */)
416
417IPC_MESSAGE_CONTROL4(PpapiMsg_SetSitePermission,
418                     uint32 /* request_id */,
419                     base::FilePath /* plugin_data_path */,
420                     PP_Flash_BrowserOperations_SettingType /* setting_type */,
421                     ppapi::FlashSiteSettings /* sites */)
422IPC_MESSAGE_CONTROL2(PpapiHostMsg_SetSitePermissionResult,
423                     uint32 /* request_id */,
424                     bool /* success */)
425
426// Broker Process.
427IPC_SYNC_MESSAGE_CONTROL2_1(PpapiMsg_ConnectToPlugin,
428                            PP_Instance /* instance */,
429                            IPC::PlatformFileForTransit /* handle */,
430                            int32_t /* result */)
431#endif  // !defined(OS_NACL) && !defined(NACL_WIN64)
432
433// PPB_Audio.
434
435// Notifies the result of the audio stream create call. This is called in
436// both error cases and in the normal success case. These cases are
437// differentiated by the result code, which is one of the standard PPAPI
438// result codes.
439//
440// The handler of this message should always close all of the handles passed
441// in, since some could be valid even in the error case.
442IPC_MESSAGE_ROUTED4(PpapiMsg_PPBAudio_NotifyAudioStreamCreated,
443                    ppapi::HostResource /* audio_id */,
444                    int32_t /* result_code (will be != PP_OK on failure) */,
445                    ppapi::proxy::SerializedHandle /* socket_handle */,
446                    ppapi::proxy::SerializedHandle /* handle */)
447
448// PPB_FileRef.
449IPC_MESSAGE_ROUTED3(
450    PpapiMsg_PPBFileRef_CallbackComplete,
451    ppapi::HostResource /* resource */,
452    int /* callback_id */,
453    int32_t /* result */)
454
455// PPB_FileSystem.
456IPC_MESSAGE_ROUTED2(
457    PpapiMsg_PPBFileSystem_OpenComplete,
458    ppapi::HostResource /* filesystem */,
459    int32_t /* result */)
460
461// PPB_Graphics3D.
462IPC_MESSAGE_ROUTED2(PpapiMsg_PPBGraphics3D_SwapBuffersACK,
463                    ppapi::HostResource /* graphics_3d */,
464                    int32_t /* pp_error */)
465
466// PPB_ImageData.
467IPC_MESSAGE_ROUTED1(PpapiMsg_PPBImageData_NotifyUnusedImageData,
468                    ppapi::HostResource /* old_image_data */)
469
470// PPB_Instance.
471IPC_MESSAGE_ROUTED2(PpapiMsg_PPBInstance_MouseLockComplete,
472                    PP_Instance /* instance */,
473                    int32_t /* result */)
474
475// PPP_Class.
476IPC_SYNC_MESSAGE_ROUTED3_2(PpapiMsg_PPPClass_HasProperty,
477                           int64 /* ppp_class */,
478                           int64 /* object */,
479                           ppapi::proxy::SerializedVar /* property */,
480                           ppapi::proxy::SerializedVar /* out_exception */,
481                           bool /* result */)
482IPC_SYNC_MESSAGE_ROUTED3_2(PpapiMsg_PPPClass_HasMethod,
483                           int64 /* ppp_class */,
484                           int64 /* object */,
485                           ppapi::proxy::SerializedVar /* method */,
486                           ppapi::proxy::SerializedVar /* out_exception */,
487                           bool /* result */)
488IPC_SYNC_MESSAGE_ROUTED3_2(PpapiMsg_PPPClass_GetProperty,
489                           int64 /* ppp_class */,
490                           int64 /* object */,
491                           ppapi::proxy::SerializedVar /* property */,
492                           ppapi::proxy::SerializedVar /* out_exception */,
493                           ppapi::proxy::SerializedVar /* result */)
494IPC_SYNC_MESSAGE_ROUTED2_2(PpapiMsg_PPPClass_EnumerateProperties,
495                           int64 /* ppp_class */,
496                           int64 /* object */,
497                           std::vector<ppapi::proxy::SerializedVar> /* props */,
498                           ppapi::proxy::SerializedVar /* out_exception */)
499IPC_SYNC_MESSAGE_ROUTED4_1(PpapiMsg_PPPClass_SetProperty,
500                           int64 /* ppp_class */,
501                           int64 /* object */,
502                           ppapi::proxy::SerializedVar /* name */,
503                           ppapi::proxy::SerializedVar /* value */,
504                           ppapi::proxy::SerializedVar /* out_exception */)
505IPC_SYNC_MESSAGE_ROUTED3_1(PpapiMsg_PPPClass_RemoveProperty,
506                           int64 /* ppp_class */,
507                           int64 /* object */,
508                           ppapi::proxy::SerializedVar /* property */,
509                           ppapi::proxy::SerializedVar /* out_exception */)
510IPC_SYNC_MESSAGE_ROUTED4_2(PpapiMsg_PPPClass_Call,
511                           int64 /* ppp_class */,
512                           int64 /* object */,
513                           ppapi::proxy::SerializedVar /* method_name */,
514                           std::vector<ppapi::proxy::SerializedVar> /* args */,
515                           ppapi::proxy::SerializedVar /* out_exception */,
516                           ppapi::proxy::SerializedVar /* result */)
517IPC_SYNC_MESSAGE_ROUTED3_2(PpapiMsg_PPPClass_Construct,
518                           int64 /* ppp_class */,
519                           int64 /* object */,
520                           std::vector<ppapi::proxy::SerializedVar> /* args */,
521                           ppapi::proxy::SerializedVar /* out_exception */,
522                           ppapi::proxy::SerializedVar /* result */)
523IPC_MESSAGE_ROUTED2(PpapiMsg_PPPClass_Deallocate,
524                    int64 /* ppp_class */,
525                    int64 /* object */)
526
527// PPP_Graphics3D_Dev.
528IPC_MESSAGE_ROUTED1(PpapiMsg_PPPGraphics3D_ContextLost,
529                    PP_Instance /* instance */)
530
531// PPP_InputEvent.
532IPC_MESSAGE_ROUTED2(PpapiMsg_PPPInputEvent_HandleInputEvent,
533                    PP_Instance /* instance */,
534                    ppapi::InputEventData /* data */)
535IPC_SYNC_MESSAGE_ROUTED2_1(PpapiMsg_PPPInputEvent_HandleFilteredInputEvent,
536                           PP_Instance /* instance */,
537                           ppapi::InputEventData /* data */,
538                           PP_Bool /* result */)
539
540// PPP_Instance.
541IPC_SYNC_MESSAGE_ROUTED3_1(PpapiMsg_PPPInstance_DidCreate,
542                           PP_Instance /* instance */,
543                           std::vector<std::string> /* argn */,
544                           std::vector<std::string> /* argv */,
545                           PP_Bool /* result */)
546IPC_SYNC_MESSAGE_ROUTED1_0(PpapiMsg_PPPInstance_DidDestroy,
547                           PP_Instance /* instance */)
548IPC_MESSAGE_ROUTED3(PpapiMsg_PPPInstance_DidChangeView,
549                    PP_Instance /* instance */,
550                    ppapi::ViewData /* new_data */,
551                    PP_Bool /* flash_fullscreen */)
552IPC_MESSAGE_ROUTED2(PpapiMsg_PPPInstance_DidChangeFocus,
553                    PP_Instance /* instance */,
554                    PP_Bool /* has_focus */)
555IPC_SYNC_MESSAGE_ROUTED2_1(PpapiMsg_PPPInstance_HandleDocumentLoad,
556                           PP_Instance /* instance */,
557                           ppapi::HostResource /* url_loader */,
558                           PP_Bool /* result */)
559
560// PPP_Messaging.
561IPC_MESSAGE_ROUTED2(PpapiMsg_PPPMessaging_HandleMessage,
562                    PP_Instance /* instance */,
563                    ppapi::proxy::SerializedVar /* message */)
564
565// PPP_MouseLock.
566IPC_MESSAGE_ROUTED1(PpapiMsg_PPPMouseLock_MouseLockLost,
567                    PP_Instance /* instance */)
568
569// PPB_NetworkMonitor_Private.
570IPC_MESSAGE_ROUTED2(PpapiMsg_PPBNetworkMonitor_NetworkList,
571                    uint32 /* plugin_dispatcher_id */,
572                    ppapi::NetworkList /* network_list */)
573
574// PPP_Printing
575IPC_SYNC_MESSAGE_ROUTED1_1(PpapiMsg_PPPPrinting_QuerySupportedFormats,
576                           PP_Instance /* instance */,
577                           uint32_t /* result */)
578IPC_SYNC_MESSAGE_ROUTED2_1(PpapiMsg_PPPPrinting_Begin,
579                           PP_Instance /* instance */,
580                           std::string /* settings_string */,
581                           int32_t /* result */)
582IPC_SYNC_MESSAGE_ROUTED2_1(PpapiMsg_PPPPrinting_PrintPages,
583                           PP_Instance /* instance */,
584                           std::vector<PP_PrintPageNumberRange_Dev> /* pages */,
585                           ppapi::HostResource /* result */)
586IPC_MESSAGE_ROUTED1(PpapiMsg_PPPPrinting_End,
587                    PP_Instance /* instance */)
588IPC_SYNC_MESSAGE_ROUTED1_1(PpapiMsg_PPPPrinting_IsScalingDisabled,
589                           PP_Instance /* instance */,
590                           bool /* result */)
591
592// PPP_TextInput.
593IPC_MESSAGE_ROUTED2(PpapiMsg_PPPTextInput_RequestSurroundingText,
594                   PP_Instance /* instance */,
595                   uint32_t /* desired_number_of_characters */)
596
597// PPB_URLLoader
598// (Messages from browser to plugin to notify it of changes in state.)
599//
600// NOTE: The ReadResponseBody_Ack message is a custom generated message
601// with the following fields appended:
602//   ppapi::HostResource
603//   response data (array of bytes stored via WriteData)
604//   int result
605//
606IPC_MESSAGE_ROUTED0(PpapiMsg_PPBURLLoader_ReadResponseBody_Ack)
607IPC_MESSAGE_ROUTED2(PpapiMsg_PPBURLLoader_CallbackComplete,
608                    ppapi::HostResource /* loader */,
609                    int32_t /* result */)
610#if !defined(OS_NACL) && !defined(NACL_WIN64)
611// PPB_Broker.
612IPC_MESSAGE_ROUTED3(
613    PpapiMsg_PPBBroker_ConnectComplete,
614    ppapi::HostResource /* broker */,
615    IPC::PlatformFileForTransit /* handle */,
616    int32_t /* result */)
617
618// PPP_ContentDecryptor_Dev
619IPC_MESSAGE_ROUTED4(PpapiMsg_PPPContentDecryptor_GenerateKeyRequest,
620                    PP_Instance /* instance */,
621                    ppapi::proxy::SerializedVar /* key_system, String */,
622                    ppapi::proxy::SerializedVar /* type, String */,
623                    ppapi::proxy::SerializedVar /* init_data, ArrayBuffer */)
624IPC_MESSAGE_ROUTED4(PpapiMsg_PPPContentDecryptor_AddKey,
625                    PP_Instance /* instance */,
626                    ppapi::proxy::SerializedVar /* session_id, String */,
627                    ppapi::proxy::SerializedVar /* key, ArrayBuffer */,
628                    ppapi::proxy::SerializedVar /* init_data, ArrayBuffer */)
629IPC_MESSAGE_ROUTED2(PpapiMsg_PPPContentDecryptor_CancelKeyRequest,
630                    PP_Instance /* instance */,
631                    ppapi::proxy::SerializedVar /* session_id, String */)
632IPC_MESSAGE_ROUTED3(PpapiMsg_PPPContentDecryptor_Decrypt,
633                    PP_Instance /* instance */,
634                    ppapi::proxy::PPPDecryptor_Buffer /* buffer */,
635                    std::string /* serialized_block_info */)
636IPC_MESSAGE_ROUTED3(
637    PpapiMsg_PPPContentDecryptor_InitializeAudioDecoder,
638    PP_Instance /* instance */,
639    std::string /* serialized_decoder_config */,
640    ppapi::proxy::PPPDecryptor_Buffer /* extra_data_buffer */)
641IPC_MESSAGE_ROUTED3(
642    PpapiMsg_PPPContentDecryptor_InitializeVideoDecoder,
643    PP_Instance /* instance */,
644    std::string /* serialized_decoder_config */,
645    ppapi::proxy::PPPDecryptor_Buffer /* extra_data_buffer. */)
646IPC_MESSAGE_ROUTED3(PpapiMsg_PPPContentDecryptor_DeinitializeDecoder,
647                    PP_Instance /* instance */,
648                    PP_DecryptorStreamType /* decoder_type */,
649                    uint32_t /* request_id */)
650IPC_MESSAGE_ROUTED3(PpapiMsg_PPPContentDecryptor_ResetDecoder,
651                    PP_Instance /* instance */,
652                    PP_DecryptorStreamType /* decoder_type */,
653                    uint32_t /* request_id */)
654IPC_MESSAGE_ROUTED4(PpapiMsg_PPPContentDecryptor_DecryptAndDecode,
655                    PP_Instance /* instance */,
656                    PP_DecryptorStreamType /* decoder_type */,
657                    ppapi::proxy::PPPDecryptor_Buffer /* buffer */,
658                    std::string /* serialized_block_info */)
659#endif  // !defined(OS_NACL) && !defined(NACL_WIN64)
660
661// PPB_TCPSocket_Private.
662IPC_MESSAGE_ROUTED5(PpapiMsg_PPBTCPSocket_ConnectACK,
663                    uint32 /* plugin_dispatcher_id */,
664                    uint32 /* socket_id */,
665                    bool /* succeeded */,
666                    PP_NetAddress_Private /* local_addr */,
667                    PP_NetAddress_Private /* remote_addr */)
668IPC_MESSAGE_ROUTED4(PpapiMsg_PPBTCPSocket_SSLHandshakeACK,
669                    uint32 /* plugin_dispatcher_id */,
670                    uint32 /* socket_id */,
671                    bool /* succeeded */,
672                    ppapi::PPB_X509Certificate_Fields /* certificate_fields */)
673IPC_MESSAGE_ROUTED4(PpapiMsg_PPBTCPSocket_ReadACK,
674                    uint32 /* plugin_dispatcher_id */,
675                    uint32 /* socket_id */,
676                    bool /* succeeded */,
677                    std::string /* data */)
678IPC_MESSAGE_ROUTED4(PpapiMsg_PPBTCPSocket_WriteACK,
679                    uint32 /* plugin_dispatcher_id */,
680                    uint32 /* socket_id */,
681                    bool /* succeeded */,
682                    int32_t /* bytes_written */)
683IPC_MESSAGE_ROUTED3(PpapiMsg_PPBTCPSocket_SetBoolOptionACK,
684                    uint32 /* plugin_dispatcher_id */,
685                    uint32 /* socket_id */,
686                    bool /* succeeded */)
687
688// PPB_URLLoader_Trusted
689IPC_MESSAGE_ROUTED1(
690    PpapiMsg_PPBURLLoader_UpdateProgress,
691    ppapi::proxy::PPBURLLoader_UpdateProgress_Params /* params */)
692
693// PPB_TCPServerSocket_Private.
694
695// |socket_resource| should not be used as Resource in browser. The
696// only purpose of this argument is to be echoed back.
697// |status| == PP_ERROR_NOSPACE means that the socket table is full
698// and new socket can't be initialized.
699// |status| == PP_ERROR_FAILED means that socket is correctly
700// initialized (if needed) but Listen call is failed.
701// |status| == PP_OK means that socket is correctly initialized (if
702// needed) and Listen call succeeds.
703IPC_MESSAGE_ROUTED4(PpapiMsg_PPBTCPServerSocket_ListenACK,
704                    uint32 /* plugin_dispatcher_id */,
705                    PP_Resource /* socket_resource */,
706                    uint32 /* socket_id */,
707                    int32_t /* status */)
708IPC_MESSAGE_ROUTED5(PpapiMsg_PPBTCPServerSocket_AcceptACK,
709                    uint32 /* plugin_dispatcher_id */,
710                    uint32 /* server_socket_id */,
711                    uint32 /* accepted_socket_id */,
712                    PP_NetAddress_Private /* local_addr */,
713                    PP_NetAddress_Private /* remote_addr */)
714
715#if !defined(OS_NACL) && !defined(NACL_WIN64)
716// PPP_Instance_Private.
717IPC_SYNC_MESSAGE_ROUTED1_1(PpapiMsg_PPPInstancePrivate_GetInstanceObject,
718                           PP_Instance /* instance */,
719                           ppapi::proxy::SerializedVar /* result */)
720
721// PPB_VideoDecoder_Dev.
722// (Messages from renderer to plugin to notify it to run callbacks.)
723IPC_MESSAGE_ROUTED3(PpapiMsg_PPBVideoDecoder_EndOfBitstreamACK,
724                    ppapi::HostResource /* video_decoder */,
725                    int32_t /* bitstream buffer id */,
726                    int32_t /* PP_CompletionCallback result */)
727IPC_MESSAGE_ROUTED2(PpapiMsg_PPBVideoDecoder_FlushACK,
728                    ppapi::HostResource /* video_decoder */,
729                    int32_t /* PP_CompletionCallback result  */)
730IPC_MESSAGE_ROUTED2(PpapiMsg_PPBVideoDecoder_ResetACK,
731                    ppapi::HostResource /* video_decoder */,
732                    int32_t /* PP_CompletionCallback result */)
733
734// PPP_VideoDecoder_Dev.
735IPC_MESSAGE_ROUTED4(PpapiMsg_PPPVideoDecoder_ProvidePictureBuffers,
736                    ppapi::HostResource /* video_decoder */,
737                    uint32_t /* requested number of buffers */,
738                    PP_Size /* dimensions of buffers */,
739                    uint32_t /* texture_target */)
740IPC_MESSAGE_ROUTED2(PpapiMsg_PPPVideoDecoder_DismissPictureBuffer,
741                    ppapi::HostResource /* video_decoder */,
742                    int32_t /* picture buffer id */)
743IPC_MESSAGE_ROUTED2(PpapiMsg_PPPVideoDecoder_PictureReady,
744                    ppapi::HostResource /* video_decoder */,
745                    PP_Picture_Dev /* output picture */)
746IPC_MESSAGE_ROUTED2(PpapiMsg_PPPVideoDecoder_NotifyError,
747                    ppapi::HostResource /* video_decoder */,
748                    PP_VideoDecodeError_Dev /* error */)
749#endif  // !defined(OS_NACL) && !defined(NACL_WIN64)
750
751// -----------------------------------------------------------------------------
752// These are from the plugin to the renderer.
753
754// Reply to PpapiMsg_CreateChannel. The handle will be NULL if the channel
755// could not be established. This could be because the IPC could not be created
756// for some weird reason, but more likely that the plugin failed to load or
757// initialize properly.
758IPC_MESSAGE_CONTROL1(PpapiHostMsg_ChannelCreated,
759                     IPC::ChannelHandle /* handle */)
760
761// Logs the given message to the console of all instances.
762IPC_MESSAGE_CONTROL4(PpapiHostMsg_LogWithSource,
763                     PP_Instance /* instance */,
764                     int /* log_level */,
765                     std::string /* source */,
766                     std::string /* value */)
767
768// PPB_Audio.
769IPC_SYNC_MESSAGE_ROUTED3_1(PpapiHostMsg_PPBAudio_Create,
770                           PP_Instance /* instance_id */,
771                           int32_t /* sample_rate */,
772                           uint32_t /* sample_frame_count */,
773                           ppapi::HostResource /* result */)
774IPC_MESSAGE_ROUTED2(PpapiHostMsg_PPBAudio_StartOrStop,
775                    ppapi::HostResource /* audio_id */,
776                    bool /* play */)
777
778// PPB_Core.
779IPC_MESSAGE_ROUTED1(PpapiHostMsg_PPBCore_AddRefResource,
780                    ppapi::HostResource)
781IPC_MESSAGE_ROUTED1(PpapiHostMsg_PPBCore_ReleaseResource,
782                    ppapi::HostResource)
783
784// PPB_FileRef.
785IPC_SYNC_MESSAGE_ROUTED2_1(PpapiHostMsg_PPBFileRef_Create,
786                           ppapi::HostResource /* file_system */,
787                           std::string /* path */,
788                           ppapi::PPB_FileRef_CreateInfo /* result */)
789IPC_SYNC_MESSAGE_ROUTED1_1(PpapiHostMsg_PPBFileRef_GetParent,
790                           ppapi::HostResource /* file_ref */,
791                           ppapi::PPB_FileRef_CreateInfo /* result */)
792IPC_MESSAGE_ROUTED3(PpapiHostMsg_PPBFileRef_MakeDirectory,
793                    ppapi::HostResource /* file_ref */,
794                    PP_Bool /* make_ancestors */,
795                    int /* callback_id */)
796IPC_MESSAGE_ROUTED4(PpapiHostMsg_PPBFileRef_Touch,
797                    ppapi::HostResource /* file_ref */,
798                    PP_Time /* last_access */,
799                    PP_Time /* last_modified */,
800                    int /* callback_id */)
801IPC_MESSAGE_ROUTED2(PpapiHostMsg_PPBFileRef_Delete,
802                    ppapi::HostResource /* file_ref */,
803                    int /* callback_id */)
804IPC_MESSAGE_ROUTED3(PpapiHostMsg_PPBFileRef_Rename,
805                    ppapi::HostResource /* file_ref */,
806                    ppapi::HostResource /* new_file_ref */,
807                    int /* callback_id */)
808IPC_SYNC_MESSAGE_ROUTED1_1(PpapiHostMsg_PPBFileRef_GetAbsolutePath,
809                           ppapi::HostResource /* file_ref */,
810                           ppapi::proxy::SerializedVar /* result */)
811
812// PPB_FileSystem.
813IPC_SYNC_MESSAGE_ROUTED2_1(PpapiHostMsg_PPBFileSystem_Create,
814                           PP_Instance /* instance */,
815                           int /* type */,
816                           ppapi::HostResource /* result */)
817IPC_MESSAGE_ROUTED2(PpapiHostMsg_PPBFileSystem_Open,
818                    ppapi::HostResource /* result */,
819                    int64_t /* expected_size */)
820
821// PPB_Graphics3D.
822IPC_SYNC_MESSAGE_ROUTED3_1(PpapiHostMsg_PPBGraphics3D_Create,
823                           PP_Instance /* instance */,
824                           ppapi::HostResource /* share_context */,
825                           std::vector<int32_t> /* attrib_list */,
826                           ppapi::HostResource /* result */)
827IPC_SYNC_MESSAGE_ROUTED1_0(PpapiHostMsg_PPBGraphics3D_InitCommandBuffer,
828                           ppapi::HostResource /* context */)
829IPC_SYNC_MESSAGE_ROUTED2_0(PpapiHostMsg_PPBGraphics3D_SetGetBuffer,
830                           ppapi::HostResource /* context */,
831                           int32 /* transfer_buffer_id */)
832IPC_SYNC_MESSAGE_ROUTED1_2(PpapiHostMsg_PPBGraphics3D_GetState,
833                           ppapi::HostResource /* context */,
834                           gpu::CommandBuffer::State /* state */,
835                           bool /* success */)
836IPC_SYNC_MESSAGE_ROUTED3_2(PpapiHostMsg_PPBGraphics3D_Flush,
837                           ppapi::HostResource /* context */,
838                           int32 /* put_offset */,
839                           int32 /* last_known_get */,
840                           gpu::CommandBuffer::State /* state */,
841                           bool /* success */)
842IPC_MESSAGE_ROUTED2(PpapiHostMsg_PPBGraphics3D_AsyncFlush,
843                    ppapi::HostResource /* context */,
844                    int32 /* put_offset */)
845IPC_SYNC_MESSAGE_ROUTED2_1(PpapiHostMsg_PPBGraphics3D_CreateTransferBuffer,
846                           ppapi::HostResource /* context */,
847                           uint32 /* size */,
848                           int32 /* id */)
849IPC_SYNC_MESSAGE_ROUTED2_0(PpapiHostMsg_PPBGraphics3D_DestroyTransferBuffer,
850                           ppapi::HostResource /* context */,
851                           int32 /* id */)
852IPC_SYNC_MESSAGE_ROUTED2_1(PpapiHostMsg_PPBGraphics3D_GetTransferBuffer,
853                           ppapi::HostResource /* context */,
854                           int32 /* id */,
855                           ppapi::proxy::SerializedHandle /* transfer_buffer */)
856IPC_MESSAGE_ROUTED1(PpapiHostMsg_PPBGraphics3D_SwapBuffers,
857                    ppapi::HostResource /* graphics_3d */)
858IPC_SYNC_MESSAGE_ROUTED1_1(PpapiHostMsg_PPBGraphics3D_InsertSyncPoint,
859                           ppapi::HostResource /* context */,
860                           uint32 /* sync_point */)
861
862// PPB_ImageData.
863IPC_SYNC_MESSAGE_ROUTED4_3(PpapiHostMsg_PPBImageData_Create,
864                           PP_Instance /* instance */,
865                           int32 /* format */,
866                           PP_Size /* size */,
867                           PP_Bool /* init_to_zero */,
868                           ppapi::HostResource /* result_resource */,
869                           std::string /* image_data_desc */,
870                           ppapi::proxy::ImageHandle /* result */)
871IPC_SYNC_MESSAGE_ROUTED4_3(PpapiHostMsg_PPBImageData_CreateNaCl,
872                           PP_Instance /* instance */,
873                           int32 /* format */,
874                           PP_Size /* size */,
875                           PP_Bool /* init_to_zero */,
876                           ppapi::HostResource /* result_resource */,
877                           std::string /* image_data_desc */,
878                           ppapi::proxy::SerializedHandle /* result */)
879
880// PPB_Instance.
881IPC_SYNC_MESSAGE_ROUTED1_1(PpapiHostMsg_PPBInstance_GetWindowObject,
882                           PP_Instance /* instance */,
883                           ppapi::proxy::SerializedVar /* result */)
884IPC_SYNC_MESSAGE_ROUTED1_1(PpapiHostMsg_PPBInstance_GetOwnerElementObject,
885                           PP_Instance /* instance */,
886                           ppapi::proxy::SerializedVar /* result */)
887IPC_MESSAGE_ROUTED2(PpapiHostMsg_PPBInstance_BindGraphics,
888                    PP_Instance /* instance */,
889                    PP_Resource /* device */)
890IPC_SYNC_MESSAGE_ROUTED1_1(
891    PpapiHostMsg_PPBInstance_GetAudioHardwareOutputSampleRate,
892                           PP_Instance /* instance */,
893                           uint32_t /* result */)
894IPC_SYNC_MESSAGE_ROUTED1_1(
895    PpapiHostMsg_PPBInstance_GetAudioHardwareOutputBufferSize,
896                           PP_Instance /* instance */,
897                           uint32_t /* result */)
898IPC_SYNC_MESSAGE_ROUTED1_1(PpapiHostMsg_PPBInstance_IsFullFrame,
899                           PP_Instance /* instance */,
900                           PP_Bool /* result */)
901IPC_SYNC_MESSAGE_ROUTED2_2(PpapiHostMsg_PPBInstance_ExecuteScript,
902                           PP_Instance /* instance */,
903                           ppapi::proxy::SerializedVar /* script */,
904                           ppapi::proxy::SerializedVar /* out_exception */,
905                           ppapi::proxy::SerializedVar /* result */)
906IPC_SYNC_MESSAGE_ROUTED1_1(PpapiHostMsg_PPBInstance_GetDefaultCharSet,
907                           PP_Instance /* instance */,
908                           ppapi::proxy::SerializedVar /* result */)
909IPC_SYNC_MESSAGE_ROUTED2_1(PpapiHostMsg_PPBInstance_SetFullscreen,
910                           PP_Instance /* instance */,
911                           PP_Bool /* fullscreen */,
912                           PP_Bool /* result */)
913IPC_SYNC_MESSAGE_ROUTED1_2(PpapiHostMsg_PPBInstance_GetScreenSize,
914                           PP_Instance /* instance */,
915                           PP_Bool /* result */,
916                           PP_Size /* size */)
917IPC_MESSAGE_ROUTED3(PpapiHostMsg_PPBInstance_RequestInputEvents,
918                    PP_Instance /* instance */,
919                    bool /* is_filtering */,
920                    uint32_t /* event_classes */)
921IPC_MESSAGE_ROUTED2(PpapiHostMsg_PPBInstance_ClearInputEvents,
922                    PP_Instance /* instance */,
923                    uint32_t /* event_classes */)
924IPC_MESSAGE_ROUTED2(PpapiHostMsg_PPBInstance_PostMessage,
925                    PP_Instance /* instance */,
926                    ppapi::proxy::SerializedVar /* message */)
927IPC_MESSAGE_ROUTED1(PpapiHostMsg_PPBInstance_LockMouse,
928                    PP_Instance /* instance */)
929IPC_MESSAGE_ROUTED1(PpapiHostMsg_PPBInstance_UnlockMouse,
930                    PP_Instance /* instance */)
931IPC_SYNC_MESSAGE_ROUTED2_1(PpapiHostMsg_PPBInstance_ResolveRelativeToDocument,
932                           PP_Instance /* instance */,
933                           ppapi::proxy::SerializedVar /* relative */,
934                           ppapi::proxy::SerializedVar /* result */)
935IPC_SYNC_MESSAGE_ROUTED2_1(PpapiHostMsg_PPBInstance_DocumentCanRequest,
936                           PP_Instance /* instance */,
937                           ppapi::proxy::SerializedVar /* relative */,
938                           PP_Bool /* result */)
939IPC_SYNC_MESSAGE_ROUTED2_1(PpapiHostMsg_PPBInstance_DocumentCanAccessDocument,
940                           PP_Instance /* active */,
941                           PP_Instance /* target */,
942                           PP_Bool /* result */)
943IPC_SYNC_MESSAGE_ROUTED1_2(PpapiHostMsg_PPBInstance_GetDocumentURL,
944                           PP_Instance /* active */,
945                           PP_URLComponents_Dev /* components */,
946                           ppapi::proxy::SerializedVar /* result */)
947IPC_SYNC_MESSAGE_ROUTED1_1(PpapiHostMsg_PPBInstance_GetPluginInstanceURL,
948                           PP_Instance /* active */,
949                           ppapi::proxy::SerializedVar /* result */)
950IPC_MESSAGE_ROUTED4(PpapiHostMsg_PPBInstance_SetCursor,
951                    PP_Instance /* instance */,
952                    int32_t /* type */,
953                    ppapi::HostResource /* custom_image */,
954                    PP_Point /* hot_spot */)
955IPC_MESSAGE_ROUTED2(PpapiHostMsg_PPBInstance_SetTextInputType,
956                    PP_Instance /* instance */,
957                    PP_TextInput_Type /* type */)
958IPC_MESSAGE_ROUTED3(PpapiHostMsg_PPBInstance_UpdateCaretPosition,
959                    PP_Instance /* instance */,
960                    PP_Rect /* caret */,
961                    PP_Rect /* bounding_box */)
962IPC_MESSAGE_ROUTED1(PpapiHostMsg_PPBInstance_CancelCompositionText,
963                    PP_Instance /* instance */)
964IPC_MESSAGE_ROUTED4(PpapiHostMsg_PPBInstance_UpdateSurroundingText,
965                    PP_Instance /* instance */,
966                    std::string /* text */,
967                    uint32_t /* caret */,
968                    uint32_t /* anchor */)
969
970// PPB_URLLoader.
971IPC_SYNC_MESSAGE_ROUTED1_1(PpapiHostMsg_PPBURLLoader_Create,
972                           PP_Instance /* instance */,
973                           ppapi::HostResource /* result */)
974IPC_MESSAGE_ROUTED2(PpapiHostMsg_PPBURLLoader_Open,
975                    ppapi::HostResource /* loader */,
976                    ppapi::URLRequestInfoData /* request_data */)
977IPC_MESSAGE_ROUTED1(PpapiHostMsg_PPBURLLoader_FollowRedirect,
978                    ppapi::HostResource /* loader */)
979IPC_SYNC_MESSAGE_ROUTED1_2(
980    PpapiHostMsg_PPBURLLoader_GetResponseInfo,
981    ppapi::HostResource /* loader */,
982    bool /* success */,
983    ppapi::URLResponseInfoData /* result */)
984IPC_MESSAGE_ROUTED2(PpapiHostMsg_PPBURLLoader_ReadResponseBody,
985                    ppapi::HostResource /* loader */,
986                    int32_t /* bytes_to_read */)
987IPC_MESSAGE_ROUTED1(PpapiHostMsg_PPBURLLoader_FinishStreamingToFile,
988                    ppapi::HostResource /* loader */)
989IPC_MESSAGE_ROUTED1(PpapiHostMsg_PPBURLLoader_Close,
990                    ppapi::HostResource /* loader */)
991IPC_MESSAGE_ROUTED1(PpapiHostMsg_PPBURLLoader_GrantUniversalAccess,
992                    ppapi::HostResource /* loader */)
993
994// PPB_Var.
995IPC_SYNC_MESSAGE_ROUTED1_1(PpapiHostMsg_PPBVar_AddRefObject,
996                           int64 /* object_id */,
997                           int /* unused - need a return value for sync msgs */)
998IPC_MESSAGE_ROUTED1(PpapiHostMsg_PPBVar_ReleaseObject,
999                    int64 /* object_id */)
1000IPC_SYNC_MESSAGE_ROUTED2_2(PpapiHostMsg_PPBVar_HasProperty,
1001                           ppapi::proxy::SerializedVar /* object */,
1002                           ppapi::proxy::SerializedVar /* property */,
1003                           ppapi::proxy::SerializedVar /* out_exception */,
1004                           PP_Bool /* result */)
1005IPC_SYNC_MESSAGE_ROUTED2_2(PpapiHostMsg_PPBVar_HasMethodDeprecated,
1006                           ppapi::proxy::SerializedVar /* object */,
1007                           ppapi::proxy::SerializedVar /* method */,
1008                           ppapi::proxy::SerializedVar /* out_exception */,
1009                           PP_Bool /* result */)
1010IPC_SYNC_MESSAGE_ROUTED2_2(PpapiHostMsg_PPBVar_GetProperty,
1011                           ppapi::proxy::SerializedVar /* object */,
1012                           ppapi::proxy::SerializedVar /* property */,
1013                           ppapi::proxy::SerializedVar /* out_exception */,
1014                           ppapi::proxy::SerializedVar /* result */)
1015IPC_SYNC_MESSAGE_ROUTED2_2(PpapiHostMsg_PPBVar_DeleteProperty,
1016                           ppapi::proxy::SerializedVar /* object */,
1017                           ppapi::proxy::SerializedVar /* property */,
1018                           ppapi::proxy::SerializedVar /* out_exception */,
1019                           PP_Bool /* result */)
1020IPC_SYNC_MESSAGE_ROUTED1_2(PpapiHostMsg_PPBVar_EnumerateProperties,
1021                           ppapi::proxy::SerializedVar /* object */,
1022                           std::vector<ppapi::proxy::SerializedVar> /* props */,
1023                           ppapi::proxy::SerializedVar /* out_exception */)
1024IPC_SYNC_MESSAGE_ROUTED3_1(PpapiHostMsg_PPBVar_SetPropertyDeprecated,
1025                           ppapi::proxy::SerializedVar /* object */,
1026                           ppapi::proxy::SerializedVar /* name */,
1027                           ppapi::proxy::SerializedVar /* value */,
1028                           ppapi::proxy::SerializedVar /* out_exception */)
1029IPC_SYNC_MESSAGE_ROUTED3_2(PpapiHostMsg_PPBVar_CallDeprecated,
1030                           ppapi::proxy::SerializedVar /* object */,
1031                           ppapi::proxy::SerializedVar /* method_name */,
1032                           std::vector<ppapi::proxy::SerializedVar> /* args */,
1033                           ppapi::proxy::SerializedVar /* out_exception */,
1034                           ppapi::proxy::SerializedVar /* result */)
1035IPC_SYNC_MESSAGE_ROUTED2_2(PpapiHostMsg_PPBVar_Construct,
1036                           ppapi::proxy::SerializedVar /* object */,
1037                           std::vector<ppapi::proxy::SerializedVar> /* args */,
1038                           ppapi::proxy::SerializedVar /* out_exception */,
1039                           ppapi::proxy::SerializedVar /* result */)
1040IPC_SYNC_MESSAGE_ROUTED2_2(PpapiHostMsg_PPBVar_IsInstanceOfDeprecated,
1041                           ppapi::proxy::SerializedVar /* var */,
1042                           int64 /* object_class */,
1043                           int64 /* object-data */,
1044                           PP_Bool /* result */)
1045IPC_SYNC_MESSAGE_ROUTED3_1(PpapiHostMsg_PPBVar_CreateObjectDeprecated,
1046                           PP_Instance /* instance */,
1047                           int64 /* object_class */,
1048                           int64 /* object_data */,
1049                           ppapi::proxy::SerializedVar /* result */)
1050
1051#if !defined(OS_NACL) && !defined(NACL_WIN64)
1052// PPB_Broker.
1053IPC_SYNC_MESSAGE_ROUTED1_1(PpapiHostMsg_PPBBroker_Create,
1054                           PP_Instance /* instance */,
1055                           ppapi::HostResource /* result_resource */)
1056IPC_MESSAGE_ROUTED1(PpapiHostMsg_PPBBroker_Connect,
1057                    ppapi::HostResource /* broker */)
1058
1059// PPB_Buffer.
1060IPC_SYNC_MESSAGE_ROUTED2_2(
1061    PpapiHostMsg_PPBBuffer_Create,
1062    PP_Instance /* instance */,
1063    uint32_t /* size */,
1064    ppapi::HostResource /* result_resource */,
1065    ppapi::proxy::SerializedHandle /* result_shm_handle */)
1066
1067// PPB_ContentDecryptor_Dev messages handled in PPB_Instance_Proxy.
1068IPC_MESSAGE_ROUTED4(PpapiHostMsg_PPBInstance_NeedKey,
1069                    PP_Instance /* instance */,
1070                    ppapi::proxy::SerializedVar /* key_system, String */,
1071                    ppapi::proxy::SerializedVar /* session_id, String */,
1072                    ppapi::proxy::SerializedVar /* init_data, ArrayBuffer */)
1073IPC_MESSAGE_ROUTED3(PpapiHostMsg_PPBInstance_KeyAdded,
1074                    PP_Instance /* instance */,
1075                    ppapi::proxy::SerializedVar /* key_system, String */,
1076                    ppapi::proxy::SerializedVar /* session_id, String */)
1077IPC_MESSAGE_ROUTED5(PpapiHostMsg_PPBInstance_KeyMessage,
1078                    PP_Instance /* instance */,
1079                    ppapi::proxy::SerializedVar /* key_system, String */,
1080                    ppapi::proxy::SerializedVar /* session_id, String */,
1081                    ppapi::proxy::SerializedVar /* message, ArrayBuffer */,
1082                    ppapi::proxy::SerializedVar /* default_url, String */)
1083IPC_MESSAGE_ROUTED5(PpapiHostMsg_PPBInstance_KeyError,
1084                    PP_Instance /* instance */,
1085                    ppapi::proxy::SerializedVar /* key_system, String */,
1086                    ppapi::proxy::SerializedVar /* session_id, String */,
1087                    int32_t /* media_error */,
1088                    int32_t /* system_code */)
1089IPC_MESSAGE_ROUTED3(PpapiHostMsg_PPBInstance_DeliverBlock,
1090                    PP_Instance /* instance */,
1091                    PP_Resource /* decrypted_block, PPB_Buffer_Dev */,
1092                    std::string /* serialized_block_info */)
1093IPC_MESSAGE_ROUTED4(PpapiHostMsg_PPBInstance_DecoderInitializeDone,
1094                    PP_Instance /* instance */,
1095                    PP_DecryptorStreamType /* decoder_type */,
1096                    uint32_t /* request_id */,
1097                    PP_Bool /* success */)
1098IPC_MESSAGE_ROUTED3(PpapiHostMsg_PPBInstance_DecoderDeinitializeDone,
1099                    PP_Instance /* instance */,
1100                    PP_DecryptorStreamType /* decoder_type */,
1101                    uint32_t /* request_id */)
1102IPC_MESSAGE_ROUTED3(PpapiHostMsg_PPBInstance_DecoderResetDone,
1103                    PP_Instance /* instance */,
1104                    PP_DecryptorStreamType /* decoder_type */,
1105                    uint32_t /* request_id */)
1106IPC_MESSAGE_ROUTED3(PpapiHostMsg_PPBInstance_DeliverFrame,
1107                    PP_Instance /* instance */,
1108                    PP_Resource /* decrypted_frame, PPB_Buffer_Dev */,
1109                    std::string /* serialized_block_info */)
1110IPC_MESSAGE_ROUTED3(PpapiHostMsg_PPBInstance_DeliverSamples,
1111                    PP_Instance /* instance */,
1112                    PP_Resource /* audio_frames, PPB_Buffer_Dev */,
1113                    std::string /* serialized_block_info */)
1114#endif  // !defined(OS_NACL) && !defined(NACL_WIN64)
1115
1116// PPB_NetworkMonitor_Private.
1117IPC_MESSAGE_CONTROL1(PpapiHostMsg_PPBNetworkMonitor_Start,
1118                     uint32 /* plugin_dispatcher_id */)
1119IPC_MESSAGE_CONTROL1(PpapiHostMsg_PPBNetworkMonitor_Stop,
1120                     uint32 /* plugin_dispatcher_id */)
1121
1122#if !defined(OS_NACL) && !defined(NACL_WIN64)
1123// PPB_PDF
1124IPC_SYNC_MESSAGE_ROUTED3_1(
1125    PpapiHostMsg_PPBPDF_GetFontFileWithFallback,
1126    PP_Instance /* instance */,
1127    ppapi::proxy::SerializedFontDescription /* description */,
1128    int32_t /* charset */,
1129    ppapi::HostResource /* result */)
1130IPC_SYNC_MESSAGE_ROUTED2_1(
1131    PpapiHostMsg_PPBPDF_GetFontTableForPrivateFontFile,
1132    ppapi::HostResource /* font_file */,
1133    uint32_t /* table */,
1134    std::string /* result */)
1135#endif  // !defined(OS_NACL) && !defined(NACL_WIN64)
1136
1137// PPB_Testing.
1138IPC_SYNC_MESSAGE_ROUTED3_1(
1139    PpapiHostMsg_PPBTesting_ReadImageData,
1140    ppapi::HostResource /* device_context_2d */,
1141    ppapi::HostResource /* image */,
1142    PP_Point /* top_left */,
1143    PP_Bool /* result */)
1144IPC_SYNC_MESSAGE_ROUTED1_1(PpapiHostMsg_PPBTesting_GetLiveObjectsForInstance,
1145                           PP_Instance /* instance */,
1146                           uint32 /* result */)
1147IPC_MESSAGE_ROUTED2(PpapiHostMsg_PPBTesting_SimulateInputEvent,
1148                    PP_Instance /* instance */,
1149                    ppapi::InputEventData /* input_event */)
1150
1151#if !defined(OS_NACL) && !defined(NACL_WIN64)
1152
1153// PPB_VideoDecoder.
1154IPC_SYNC_MESSAGE_ROUTED3_1(PpapiHostMsg_PPBVideoDecoder_Create,
1155                           PP_Instance /* instance */,
1156                           ppapi::HostResource /* context */,
1157                           PP_VideoDecoder_Profile /* profile */,
1158                           ppapi::HostResource /* result */)
1159IPC_MESSAGE_ROUTED4(PpapiHostMsg_PPBVideoDecoder_Decode,
1160                    ppapi::HostResource /* video_decoder */,
1161                    ppapi::HostResource /* bitstream buffer */,
1162                    int32 /* bitstream buffer id */,
1163                    uint32 /* size of buffer */)
1164IPC_MESSAGE_ROUTED2(PpapiHostMsg_PPBVideoDecoder_AssignPictureBuffers,
1165                    ppapi::HostResource /* video_decoder */,
1166                    std::vector<PP_PictureBuffer_Dev> /* picture buffers */)
1167IPC_MESSAGE_ROUTED2(PpapiHostMsg_PPBVideoDecoder_ReusePictureBuffer,
1168                    ppapi::HostResource /* video_decoder */,
1169                    int32_t /* picture buffer id */)
1170IPC_MESSAGE_ROUTED1(PpapiHostMsg_PPBVideoDecoder_Flush,
1171                    ppapi::HostResource /* video_decoder */)
1172IPC_MESSAGE_ROUTED1(PpapiHostMsg_PPBVideoDecoder_Reset,
1173                    ppapi::HostResource /* video_decoder */)
1174IPC_SYNC_MESSAGE_ROUTED1_0(PpapiHostMsg_PPBVideoDecoder_Destroy,
1175                           ppapi::HostResource /* video_decoder */)
1176
1177// PPB_Flash_MessageLoop.
1178IPC_SYNC_MESSAGE_ROUTED1_1(PpapiHostMsg_PPBFlashMessageLoop_Create,
1179                           PP_Instance /* instance */,
1180                           ppapi::HostResource /* result */)
1181IPC_SYNC_MESSAGE_ROUTED1_1(PpapiHostMsg_PPBFlashMessageLoop_Run,
1182                           ppapi::HostResource /* flash_message_loop */,
1183                           int32_t /* result */)
1184IPC_SYNC_MESSAGE_ROUTED1_0(PpapiHostMsg_PPBFlashMessageLoop_Quit,
1185                           ppapi::HostResource /* flash_message_loop */)
1186#endif  // !defined(OS_NACL) && !defined(NACL_WIN64)
1187
1188// PPB_TCPSocket_Private.
1189IPC_SYNC_MESSAGE_CONTROL2_1(PpapiHostMsg_PPBTCPSocket_Create,
1190                            int32 /* routing_id */,
1191                            uint32 /* plugin_dispatcher_id */,
1192                            uint32 /* socket_id */)
1193IPC_MESSAGE_CONTROL4(PpapiHostMsg_PPBTCPSocket_Connect,
1194                     int32 /* routing_id */,
1195                     uint32 /* socket_id */,
1196                     std::string /* host */,
1197                     uint16_t /* port */)
1198IPC_MESSAGE_CONTROL3(PpapiHostMsg_PPBTCPSocket_ConnectWithNetAddress,
1199                     int32 /* routing_id */,
1200                     uint32 /* socket_id */,
1201                     PP_NetAddress_Private /* net_addr */)
1202IPC_MESSAGE_CONTROL5(PpapiHostMsg_PPBTCPSocket_SSLHandshake,
1203                     uint32 /* socket_id */,
1204                     std::string /* server_name */,
1205                     uint16_t /* server_port */,
1206                     std::vector<std::vector<char> > /* trusted_certs */,
1207                     std::vector<std::vector<char> > /* untrusted_certs */)
1208IPC_MESSAGE_CONTROL2(PpapiHostMsg_PPBTCPSocket_Read,
1209                     uint32 /* socket_id */,
1210                     int32_t /* bytes_to_read */)
1211IPC_MESSAGE_CONTROL2(PpapiHostMsg_PPBTCPSocket_Write,
1212                     uint32 /* socket_id */,
1213                     std::string /* data */)
1214IPC_MESSAGE_CONTROL1(PpapiHostMsg_PPBTCPSocket_Disconnect,
1215                     uint32 /* socket_id */)
1216IPC_MESSAGE_CONTROL3(PpapiHostMsg_PPBTCPSocket_SetBoolOption,
1217                     uint32 /* socket_id */,
1218                     uint32 /* name */,
1219                     bool /* value */)
1220
1221// UDPSocketPrivate.
1222IPC_MESSAGE_CONTROL0(PpapiHostMsg_UDPSocketPrivate_Create)
1223IPC_MESSAGE_CONTROL2(PpapiHostMsg_UDPSocketPrivate_SetBoolSocketFeature,
1224                     int32_t /* name */,
1225                     bool /* value */)
1226IPC_MESSAGE_CONTROL1(PpapiHostMsg_UDPSocketPrivate_Bind,
1227                     PP_NetAddress_Private /* net_addr */)
1228IPC_MESSAGE_CONTROL1(PpapiHostMsg_UDPSocketPrivate_RecvFrom,
1229                     int32_t /* num_bytes */)
1230IPC_MESSAGE_CONTROL2(PpapiHostMsg_UDPSocketPrivate_SendTo,
1231                     std::string /* data */,
1232                     PP_NetAddress_Private /* net_addr */)
1233IPC_MESSAGE_CONTROL0(PpapiHostMsg_UDPSocketPrivate_Close)
1234IPC_MESSAGE_CONTROL1(PpapiPluginMsg_UDPSocketPrivate_BindReply,
1235                     PP_NetAddress_Private /* bound_addr */)
1236IPC_MESSAGE_CONTROL2(PpapiPluginMsg_UDPSocketPrivate_RecvFromReply,
1237                     std::string /* data */,
1238                     PP_NetAddress_Private /* remote_addr */)
1239IPC_MESSAGE_CONTROL1(PpapiPluginMsg_UDPSocketPrivate_SendToReply,
1240                     int32_t /* bytes_written */)
1241
1242// PPB_TCPServerSocket_Private.
1243IPC_MESSAGE_CONTROL5(PpapiHostMsg_PPBTCPServerSocket_Listen,
1244                     int32 /* routing_id */,
1245                     uint32 /* plugin_dispatcher_id */,
1246                     PP_Resource /* socket_resource */,
1247                     PP_NetAddress_Private /* addr */,
1248                     int32_t /* backlog */)
1249IPC_MESSAGE_CONTROL2(PpapiHostMsg_PPBTCPServerSocket_Accept,
1250                     int32 /* tcp_client_socket_routing_id */,
1251                     uint32 /* server_socket_id */)
1252IPC_MESSAGE_CONTROL1(PpapiHostMsg_PPBTCPServerSocket_Destroy,
1253                     uint32 /* socket_id */)
1254
1255// PPB_X509Certificate_Private
1256IPC_SYNC_MESSAGE_CONTROL1_2(PpapiHostMsg_PPBX509Certificate_ParseDER,
1257                            std::vector<char> /* der */,
1258                            bool /* succeeded */,
1259                            ppapi::PPB_X509Certificate_Fields /* result */)
1260
1261//-----------------------------------------------------------------------------
1262// Resource call/reply messages.
1263//
1264// These are the new-style resource implementations where the resource is only
1265// implemented in the proxy and "resource messages" are sent between this and a
1266// host object. Resource messages are a wrapper around some general routing
1267// information and a separate message of a type defined by the specific resource
1268// sending/receiving it. The extra paremeters allow the nested message to be
1269// routed automatically to the correct resource.
1270
1271// Notification that a resource has been created in the plugin. The nested
1272// message will be resource-type-specific.
1273IPC_MESSAGE_CONTROL3(PpapiHostMsg_ResourceCreated,
1274                     ppapi::proxy::ResourceMessageCallParams /* call_params */,
1275                     PP_Instance  /* instance */,
1276                     IPC::Message /* nested_msg */)
1277
1278// Notification that a resource has been destroyed in the plugin.
1279IPC_MESSAGE_CONTROL1(PpapiHostMsg_ResourceDestroyed,
1280                     PP_Resource /* resource */)
1281
1282// Most resources are created by the plugin, which then sends a ResourceCreated
1283// message to create a corresponding ResourceHost in the renderer or browser
1284// host process. However, some resources are first created in the host and
1285// "pushed" or returned to the plugin.
1286//
1287// In this case, the host will create a "pending" ResourceHost object which
1288// is identified by an ID. The ID is sent to the plugin process and the
1289// PluginResource object is created. This message is sent from the plugin to
1290// the host process to connect the PluginResource and the pending ResourceHost
1291// (at which point, it's no longer pending).
1292IPC_MESSAGE_CONTROL2(PpapiHostMsg_AttachToPendingHost,
1293                     PP_Resource /* resource */,
1294                     int /* pending_host_id */)
1295
1296// A resource call is a request from the plugin to the host. It may or may not
1297// require a reply, depending on the params. The nested message will be
1298// resource-type-specific.
1299IPC_MESSAGE_CONTROL2(PpapiHostMsg_ResourceCall,
1300                     ppapi::proxy::ResourceMessageCallParams /* call_params */,
1301                     IPC::Message /* nested_msg */)
1302
1303// A resource reply is a response to a ResourceCall from a host to the
1304// plugin. The resource ID + sequence number in the params will correspond to
1305// that of the previous ResourceCall.
1306IPC_MESSAGE_CONTROL2(
1307    PpapiPluginMsg_ResourceReply,
1308    ppapi::proxy::ResourceMessageReplyParams /* reply_params */,
1309    IPC::Message /* nested_msg */)
1310
1311IPC_SYNC_MESSAGE_CONTROL2_2(PpapiHostMsg_ResourceSyncCall,
1312    ppapi::proxy::ResourceMessageCallParams /* call_params */,
1313    IPC::Message /* nested_msg */,
1314    ppapi::proxy::ResourceMessageReplyParams /* reply_params */,
1315    IPC::Message /* reply_msg */)
1316
1317//-----------------------------------------------------------------------------
1318// Messages for resources using call/reply above.
1319
1320// Broker ----------------------------------------------------------------------
1321IPC_MESSAGE_CONTROL0(PpapiHostMsg_Broker_Create)
1322
1323// Queries whether the plugin has permission to connect to the Pepper broker.
1324// The response is contained in the error value of the
1325// ResourceMessageReplyParams in the reply message.
1326IPC_MESSAGE_CONTROL0(PpapiHostMsg_Broker_IsAllowed)
1327
1328// Directory reader.
1329IPC_MESSAGE_CONTROL0(PpapiHostMsg_DirectoryReader_Create)
1330IPC_MESSAGE_CONTROL1(PpapiHostMsg_DirectoryReader_GetEntries,
1331                     ppapi::HostResource /* file_ref_resource */)
1332IPC_MESSAGE_CONTROL2(PpapiPluginMsg_DirectoryReader_GetEntriesReply,
1333                     std::vector<ppapi::PPB_FileRef_CreateInfo> /* files */,
1334                     std::vector<PP_FileType> /* file_types */)
1335
1336// File chooser.
1337IPC_MESSAGE_CONTROL0(PpapiHostMsg_FileChooser_Create)
1338IPC_MESSAGE_CONTROL4(PpapiHostMsg_FileChooser_Show,
1339                     bool /* save_as */,
1340                     bool /* open_multiple */,
1341                     std::string /* suggested_file_name */,
1342                     std::vector<std::string> /* accept_mime_types */)
1343IPC_MESSAGE_CONTROL1(PpapiPluginMsg_FileChooser_ShowReply,
1344                     std::vector<ppapi::PPB_FileRef_CreateInfo> /* files */)
1345
1346// FileIO
1347IPC_MESSAGE_CONTROL0(PpapiHostMsg_FileIO_Create)
1348IPC_MESSAGE_CONTROL2(PpapiHostMsg_FileIO_Open,
1349                     PP_Resource /* file_ref_resource */,
1350                     int32_t /* open_flags */)
1351IPC_MESSAGE_CONTROL0(PpapiPluginMsg_FileIO_OpenReply)
1352IPC_MESSAGE_CONTROL0(PpapiHostMsg_FileIO_Close)
1353IPC_MESSAGE_CONTROL0(PpapiHostMsg_FileIO_Query)
1354IPC_MESSAGE_CONTROL1(PpapiPluginMsg_FileIO_QueryReply, PP_FileInfo /* info */)
1355IPC_MESSAGE_CONTROL2(PpapiHostMsg_FileIO_Touch,
1356                     PP_Time /* last_access_time */,
1357                     PP_Time /* last_modified_time */)
1358IPC_MESSAGE_CONTROL2(PpapiHostMsg_FileIO_Read,
1359                     int64_t /* offset */,
1360                     int32_t /* bytes_to_read */)
1361IPC_MESSAGE_CONTROL1(PpapiPluginMsg_FileIO_ReadReply, std::string /* data */)
1362IPC_MESSAGE_CONTROL2(PpapiHostMsg_FileIO_Write,
1363                     int64_t /* offset */,
1364                     std::string /* data */)
1365IPC_MESSAGE_CONTROL1(PpapiHostMsg_FileIO_SetLength,
1366                     int64_t /* length */)
1367IPC_MESSAGE_CONTROL0(PpapiHostMsg_FileIO_Flush)
1368IPC_MESSAGE_CONTROL2(PpapiHostMsg_FileIO_WillWrite,
1369                     int64_t /* offset */,
1370                     int32_t /* bytes_to_write */)
1371IPC_MESSAGE_CONTROL1(PpapiHostMsg_FileIO_WillSetLength,
1372                     int64_t /* length */)
1373IPC_MESSAGE_CONTROL0(PpapiHostMsg_FileIO_GetOSFileDescriptor)
1374IPC_MESSAGE_CONTROL1(PpapiPluginMsg_FileIO_GetOSFileDescriptorReply,
1375                     int32_t /* file descriptor */)
1376IPC_MESSAGE_CONTROL0(PpapiPluginMsg_FileIO_GeneralReply)
1377
1378// Flash device ID.
1379IPC_MESSAGE_CONTROL0(PpapiHostMsg_FlashDeviceID_Create)
1380IPC_MESSAGE_CONTROL0(PpapiHostMsg_FlashDeviceID_GetDeviceID)
1381IPC_MESSAGE_CONTROL1(PpapiPluginMsg_FlashDeviceID_GetDeviceIDReply,
1382                     std::string /* id */)
1383
1384// Gamepad.
1385IPC_MESSAGE_CONTROL0(PpapiHostMsg_Gamepad_Create)
1386
1387// Requests that the gamepad host send the shared memory handle to the plugin
1388// process.
1389IPC_MESSAGE_CONTROL0(PpapiHostMsg_Gamepad_RequestMemory)
1390
1391// Reply to a RequestMemory call. This supplies the shared memory handle. The
1392// actual handle is passed in the ReplyParams struct.
1393IPC_MESSAGE_CONTROL0(PpapiPluginMsg_Gamepad_SendMemory)
1394
1395
1396// Graphics2D, plugin -> host
1397IPC_MESSAGE_CONTROL2(PpapiHostMsg_Graphics2D_Create,
1398                     PP_Size /* size */,
1399                     PP_Bool /* is_always_opaque */)
1400IPC_MESSAGE_CONTROL4(PpapiHostMsg_Graphics2D_PaintImageData,
1401                     ppapi::HostResource /* image_data */,
1402                     PP_Point /* top_left */,
1403                     bool /* src_rect_specified */,
1404                     PP_Rect /* src_rect */)
1405IPC_MESSAGE_CONTROL3(PpapiHostMsg_Graphics2D_Scroll,
1406                     bool /* clip_specified */,
1407                     PP_Rect /* clip */,
1408                     PP_Point /* amount */)
1409IPC_MESSAGE_CONTROL1(PpapiHostMsg_Graphics2D_ReplaceContents,
1410                     ppapi::HostResource /* image_data */)
1411IPC_MESSAGE_CONTROL1(PpapiHostMsg_Graphics2D_Dev_SetScale,
1412                     float /* scale */)
1413
1414// Graphics2D, plugin -> host -> plugin
1415IPC_MESSAGE_CONTROL0(PpapiHostMsg_Graphics2D_Flush)
1416IPC_MESSAGE_CONTROL0(PpapiPluginMsg_Graphics2D_FlushAck)
1417
1418IPC_MESSAGE_CONTROL2(PpapiHostMsg_Graphics2D_ReadImageData,
1419                     PP_Resource /* image */,
1420                     PP_Point /* top_left */)
1421IPC_MESSAGE_CONTROL0(PpapiPluginMsg_Graphics2D_ReadImageDataAck)
1422
1423// TrueTypeFont.
1424IPC_MESSAGE_CONTROL0(PpapiHostMsg_TrueTypeFontSingleton_Create)
1425IPC_MESSAGE_CONTROL0(PpapiHostMsg_TrueTypeFontSingleton_GetFontFamilies)
1426IPC_MESSAGE_CONTROL1(PpapiPluginMsg_TrueTypeFontSingleton_GetFontFamiliesReply,
1427                     std::vector<std::string> /* font_families */)
1428IPC_MESSAGE_CONTROL1(PpapiHostMsg_TrueTypeFont_Create,
1429                     ppapi::proxy::SerializedTrueTypeFontDesc /* desc */)
1430IPC_MESSAGE_CONTROL0(PpapiHostMsg_TrueTypeFont_Describe)
1431IPC_MESSAGE_CONTROL1(PpapiPluginMsg_TrueTypeFont_DescribeReply,
1432                     ppapi::proxy::SerializedTrueTypeFontDesc /* desc */)
1433IPC_MESSAGE_CONTROL0(PpapiHostMsg_TrueTypeFont_GetTableTags)
1434IPC_MESSAGE_CONTROL1(PpapiPluginMsg_TrueTypeFont_GetTableTagsReply,
1435                     std::vector<uint32_t> /* tags */)
1436IPC_MESSAGE_CONTROL3(PpapiHostMsg_TrueTypeFont_GetTable,
1437                     uint32_t /* table */,
1438                     int32_t /* offset */,
1439                     int32_t /* max_data_length */)
1440IPC_MESSAGE_CONTROL1(PpapiPluginMsg_TrueTypeFont_GetTableReply,
1441                     std::string /* data */)
1442
1443// HostResolverPrivate, plugin -> host -> plugin
1444IPC_MESSAGE_CONTROL0(PpapiHostMsg_HostResolverPrivate_Create)
1445IPC_MESSAGE_CONTROL2(PpapiHostMsg_HostResolverPrivate_Resolve,
1446                     ppapi::HostPortPair /* host_port */,
1447                     PP_HostResolver_Private_Hint /* hint */)
1448IPC_MESSAGE_CONTROL2(PpapiPluginMsg_HostResolverPrivate_ResolveReply,
1449                     std::string /* canonical_name */,
1450                     std::vector<PP_NetAddress_Private> /* net_address_list */)
1451
1452// Printing.
1453IPC_MESSAGE_CONTROL0(PpapiHostMsg_Printing_Create)
1454IPC_MESSAGE_CONTROL0(PpapiHostMsg_Printing_GetDefaultPrintSettings)
1455IPC_MESSAGE_CONTROL1(PpapiPluginMsg_Printing_GetDefaultPrintSettingsReply,
1456                     PP_PrintSettings_Dev /* print_settings */)
1457
1458// Shared memory ---------------------------------------------------------------
1459// Creates shared memory on the host side, returning a handle to the shared
1460// memory on the plugin and keeping the memory mapped in on the host.
1461// We return a "host handle_id" that can be mapped back to the
1462// handle on the host side by PpapiGlobals::UntrackSharedMemoryHandle().
1463IPC_SYNC_MESSAGE_CONTROL2_2(PpapiHostMsg_SharedMemory_CreateSharedMemory,
1464                            PP_Instance /* instance */,
1465                            uint32_t /* size */,
1466                            int /* host_handle_id */,
1467                            ppapi::proxy::SerializedHandle /* plugin_handle */)
1468
1469// WebSocket ------------------------------------------------------------------
1470IPC_MESSAGE_CONTROL0(PpapiHostMsg_WebSocket_Create)
1471
1472// Establishes the connection to a server. This message requires
1473// WebSocket_ConnectReply as a reply message.
1474IPC_MESSAGE_CONTROL2(PpapiHostMsg_WebSocket_Connect,
1475                     std::string /* url */,
1476                     std::vector<std::string> /* protocols */)
1477
1478// Closes established connection with graceful closing handshake. This message
1479// requires WebSocket_CloseReply as a reply message.
1480IPC_MESSAGE_CONTROL2(PpapiHostMsg_WebSocket_Close,
1481                     int32_t /* code */,
1482                     std::string /* reason */)
1483
1484// Sends a text frame to the server. No reply is defined.
1485IPC_MESSAGE_CONTROL1(PpapiHostMsg_WebSocket_SendText,
1486                     std::string /* message */)
1487
1488// Sends a binary frame to the server. No reply is defined.
1489IPC_MESSAGE_CONTROL1(PpapiHostMsg_WebSocket_SendBinary,
1490                     std::vector<uint8_t> /* message */)
1491
1492// Fails the connection. This message invokes RFC6455 defined
1493// _Fail the WebSocket Connection_ operation. No reply is defined.
1494IPC_MESSAGE_CONTROL1(PpapiHostMsg_WebSocket_Fail,
1495                     std::string /* message */)
1496
1497// This message is a reply to WebSocket_Connect. If the |url| and |protocols|
1498// are invalid, WebSocket_ConnectReply is issued immediately and it contains
1499// proper error code in its result. Otherwise, WebSocket_ConnectReply is sent
1500// with valid |url|, |protocol|, and result PP_OK. |protocol| is not a passed
1501// |protocols|, but a result of opening handshake negotiation. If the
1502// connection can not be established successfully, WebSocket_ConnectReply is
1503// not issued, but WebSocket_ClosedReply is sent instead.
1504IPC_MESSAGE_CONTROL2(PpapiPluginMsg_WebSocket_ConnectReply,
1505                     std::string /* url */,
1506                     std::string /* protocol */)
1507
1508// This message is a reply to WebSocket_Close. If the operation fails,
1509// WebSocket_CloseReply is issued immediately and it contains PP_ERROR_FAILED.
1510// Otherwise, CloseReply will be issued after the closing handshake is
1511// finished. All arguments will be valid iff the result is PP_OK and it means
1512// that the client initiated closing handshake is finished gracefully.
1513IPC_MESSAGE_CONTROL4(PpapiPluginMsg_WebSocket_CloseReply,
1514                     uint64_t /* buffered_amount */,
1515                     bool /* was_clean */,
1516                     uint16_t /* code */,
1517                     std::string /* reason */)
1518
1519// Unsolicited reply message to transmit a receiving text frame.
1520IPC_MESSAGE_CONTROL1(PpapiPluginMsg_WebSocket_ReceiveTextReply,
1521                     std::string /* message */)
1522
1523// Unsolicited reply message to transmit a receiving binary frame.
1524IPC_MESSAGE_CONTROL1(PpapiPluginMsg_WebSocket_ReceiveBinaryReply,
1525                     std::vector<uint8_t> /* message */)
1526
1527// Unsolicited reply message to notify a error on underlying network connetion.
1528IPC_MESSAGE_CONTROL0(PpapiPluginMsg_WebSocket_ErrorReply)
1529
1530// Unsolicited reply message to update the buffered amount value.
1531IPC_MESSAGE_CONTROL1(PpapiPluginMsg_WebSocket_BufferedAmountReply,
1532                     uint64_t /* buffered_amount */)
1533
1534// Unsolicited reply message to update |state| because of incoming external
1535// events, e.g., protocol error, or unexpected network closure.
1536IPC_MESSAGE_CONTROL1(PpapiPluginMsg_WebSocket_StateReply,
1537                     int32_t /* state */)
1538
1539// Unsolicited reply message to notify that the connection is closed without
1540// any WebSocket_Close request. Server initiated closing handshake or
1541// unexpected network errors will invoke this message.
1542IPC_MESSAGE_CONTROL4(PpapiPluginMsg_WebSocket_ClosedReply,
1543                     uint64_t /* buffered_amount */,
1544                     bool /* was_clean */,
1545                     uint16_t /* code */,
1546                     std::string /* reason */)
1547
1548#if !defined(OS_NACL) && !defined(NACL_WIN64)
1549
1550// Audio input.
1551IPC_MESSAGE_CONTROL0(PpapiHostMsg_AudioInput_Create)
1552IPC_MESSAGE_CONTROL3(PpapiHostMsg_AudioInput_Open,
1553                     std::string /* device_id */,
1554                     PP_AudioSampleRate /* sample_rate */,
1555                     uint32_t /* sample_frame_count */)
1556// Reply to an Open call. This supplies a socket handle and a shared memory
1557// handle. Both handles are passed in the ReplyParams struct.
1558IPC_MESSAGE_CONTROL0(PpapiPluginMsg_AudioInput_OpenReply)
1559IPC_MESSAGE_CONTROL1(PpapiHostMsg_AudioInput_StartOrStop, bool /* capture */)
1560IPC_MESSAGE_CONTROL0(PpapiHostMsg_AudioInput_Close)
1561
1562// BrowserFont -----------------------------------------------------------------
1563
1564IPC_MESSAGE_CONTROL0(PpapiHostMsg_BrowserFontSingleton_Create)
1565
1566// Requests that the browser reply with the list of font families via
1567// PpapiPluginMsg_BrowserFontSingleton_GetFontFamiliesReply.
1568IPC_MESSAGE_CONTROL0(PpapiHostMsg_BrowserFontSingleton_GetFontFamilies)
1569
1570// Reply to PpapiHostMsg_BrowserFontSingleton_GetFontFamilies with the font
1571// family list. The |families| result is encoded by separating each family name
1572// by a null character.
1573IPC_MESSAGE_CONTROL1(PpapiPluginMsg_BrowserFontSingleton_GetFontFamiliesReply,
1574                     std::string /* families */)
1575
1576// Flash -----------------------------------------------------------------------
1577
1578IPC_MESSAGE_CONTROL0(PpapiHostMsg_Flash_Create)
1579
1580// Message to notify the browser to register an update in system activity.
1581IPC_MESSAGE_CONTROL0(PpapiHostMsg_Flash_UpdateActivity)
1582
1583// Query the browser for the proxy server to use for the given URL.
1584IPC_MESSAGE_CONTROL1(PpapiHostMsg_Flash_GetProxyForURL, std::string /* url */)
1585// Reply message for GetProxyForURL containing the proxy server.
1586IPC_MESSAGE_CONTROL1(PpapiPluginMsg_Flash_GetProxyForURLReply,
1587                     std::string /* proxy */)
1588
1589// Queries the browser for the local time zone offset for a given time.
1590IPC_MESSAGE_CONTROL1(PpapiHostMsg_Flash_GetLocalTimeZoneOffset,
1591                     base::Time /* time */)
1592// Reply to GetLocalTimeZoneOffset containing the time zone offset as a double.
1593IPC_MESSAGE_CONTROL1(PpapiPluginMsg_Flash_GetLocalTimeZoneOffsetReply,
1594                     double /* offset */)
1595
1596// Query the browser for the restrictions on storing Flash LSOs.
1597IPC_MESSAGE_CONTROL0(PpapiHostMsg_Flash_GetLocalDataRestrictions)
1598// Reply message for GetLocalDataRestrictions containing the restrictions to
1599// use. These are PP_FlashLSORestrictions cast to an int32_t.
1600IPC_MESSAGE_CONTROL1(PpapiPluginMsg_Flash_GetLocalDataRestrictionsReply,
1601                     int32_t /* restrictions */)
1602
1603// Notifies the renderer whether the Flash instance is in windowed mode. No
1604// reply is sent.
1605IPC_MESSAGE_CONTROL1(PpapiHostMsg_Flash_SetInstanceAlwaysOnTop,
1606                     bool /* on_top */)
1607
1608// Notifies the renderer to draw text to the given PP_ImageData resource. All
1609// parmeters for drawing (including the resource to draw to) are contianed in
1610// the PPBFlash_DrawGlyphs_Params structure. An error code is sent in a reply
1611// message indicating success.
1612IPC_MESSAGE_CONTROL1(PpapiHostMsg_Flash_DrawGlyphs,
1613                     ppapi::proxy::PPBFlash_DrawGlyphs_Params /* params */)
1614
1615// Notifies the renderer to navigate to the given URL contained in the
1616// URLRequestInfoData. An error code is sent in a reply message indicating
1617// success.
1618IPC_MESSAGE_CONTROL3(PpapiHostMsg_Flash_Navigate,
1619                     ppapi::URLRequestInfoData /* data */,
1620                     std::string /* target */,
1621                     bool /* from_user_action */)
1622
1623// Queries the renderer on whether the plugin instance is the topmost element
1624// in the area of the instance specified by the given PP_Rect. PP_OK is sent as
1625// the error code in a reply message if the rect is topmost otherwise
1626// PP_ERROR_FAILED is sent.
1627IPC_MESSAGE_CONTROL1(PpapiHostMsg_Flash_IsRectTopmost,
1628                     PP_Rect /* rect */)
1629
1630// Notifies the renderer to invoke printing for the given plugin instance. No
1631// reply is sent.
1632IPC_MESSAGE_CONTROL0(PpapiHostMsg_Flash_InvokePrinting)
1633
1634// DeviceEnumeration -----------------------------------------------------------
1635// Device enumeration messages used by audio input and video capture.
1636IPC_MESSAGE_CONTROL0(PpapiHostMsg_DeviceEnumeration_EnumerateDevices)
1637IPC_MESSAGE_CONTROL1(PpapiPluginMsg_DeviceEnumeration_EnumerateDevicesReply,
1638                     std::vector<ppapi::DeviceRefData> /* devices */)
1639IPC_MESSAGE_CONTROL1(PpapiHostMsg_DeviceEnumeration_MonitorDeviceChange,
1640                     uint32_t /* callback_id */)
1641IPC_MESSAGE_CONTROL0(PpapiHostMsg_DeviceEnumeration_StopMonitoringDeviceChange)
1642IPC_MESSAGE_CONTROL2(PpapiPluginMsg_DeviceEnumeration_NotifyDeviceChange,
1643                     uint32_t /* callback_id */,
1644                     std::vector<ppapi::DeviceRefData> /* devices */)
1645
1646// Flash clipboard.
1647IPC_MESSAGE_CONTROL0(PpapiHostMsg_FlashClipboard_Create)
1648IPC_MESSAGE_CONTROL1(PpapiHostMsg_FlashClipboard_RegisterCustomFormat,
1649                     std::string /* format_name */)
1650IPC_MESSAGE_CONTROL1(PpapiPluginMsg_FlashClipboard_RegisterCustomFormatReply,
1651                     uint32_t /* format */)
1652IPC_MESSAGE_CONTROL2(PpapiHostMsg_FlashClipboard_IsFormatAvailable,
1653                     uint32_t /* clipboard_type */,
1654                     uint32_t /* format */)
1655IPC_MESSAGE_CONTROL2(PpapiHostMsg_FlashClipboard_ReadData,
1656                     uint32_t /* clipboard_type */,
1657                     uint32_t /* format */)
1658IPC_MESSAGE_CONTROL1(PpapiPluginMsg_FlashClipboard_ReadDataReply,
1659                     std::string /* result */)
1660IPC_MESSAGE_CONTROL3(PpapiHostMsg_FlashClipboard_WriteData,
1661                     uint32_t /* clipboard_type */,
1662                     std::vector<uint32_t> /* formats */,
1663                     std::vector<std::string> /* data */)
1664
1665// Flash file.
1666IPC_MESSAGE_CONTROL0(PpapiHostMsg_FlashFile_Create)
1667IPC_MESSAGE_CONTROL2(PpapiHostMsg_FlashFile_OpenFile,
1668                     ppapi::PepperFilePath /* path */,
1669                     int /* flags */)
1670IPC_MESSAGE_CONTROL2(PpapiHostMsg_FlashFile_RenameFile,
1671                     ppapi::PepperFilePath /* from_path */,
1672                     ppapi::PepperFilePath /* to_path */)
1673IPC_MESSAGE_CONTROL2(PpapiHostMsg_FlashFile_DeleteFileOrDir,
1674                     ppapi::PepperFilePath /* path */,
1675                     bool /* recursive */)
1676IPC_MESSAGE_CONTROL1(PpapiHostMsg_FlashFile_CreateDir,
1677                     ppapi::PepperFilePath /* path */)
1678IPC_MESSAGE_CONTROL1(PpapiHostMsg_FlashFile_QueryFile,
1679                     ppapi::PepperFilePath /* path */)
1680IPC_MESSAGE_CONTROL1(PpapiPluginMsg_FlashFile_QueryFileReply,
1681                     base::PlatformFileInfo /* file_info */)
1682IPC_MESSAGE_CONTROL1(PpapiHostMsg_FlashFile_GetDirContents,
1683                     ppapi::PepperFilePath /* path */)
1684IPC_MESSAGE_CONTROL1(PpapiPluginMsg_FlashFile_GetDirContentsReply,
1685                     ppapi::DirContents /* entries */)
1686IPC_MESSAGE_CONTROL0(PpapiHostMsg_FlashFile_CreateTemporaryFile)
1687
1688// Flash font file.
1689IPC_MESSAGE_CONTROL2(PpapiHostMsg_FlashFontFile_Create,
1690                     ppapi::proxy::SerializedFontDescription /* description */,
1691                     PP_PrivateFontCharset /* charset */)
1692IPC_MESSAGE_CONTROL1(PpapiHostMsg_FlashFontFile_GetFontTable,
1693                     uint32_t /* table */)
1694IPC_MESSAGE_CONTROL1(PpapiPluginMsg_FlashFontFile_GetFontTableReply,
1695                     std::string /* output */)
1696
1697// Flash fullscreen.
1698IPC_MESSAGE_CONTROL0(PpapiHostMsg_FlashFullscreen_Create)
1699IPC_MESSAGE_CONTROL1(PpapiHostMsg_FlashFullscreen_SetFullscreen,
1700                     bool /* fullscreen */)
1701
1702// FlashMenu ------------------------------------------------------------------
1703
1704// Creates the flash menu with the given data.
1705IPC_MESSAGE_CONTROL1(PpapiHostMsg_FlashMenu_Create,
1706                     ppapi::proxy::SerializedFlashMenu /* menu_data */)
1707
1708// Shows the menu at the given location relative to the plugin instance.
1709IPC_MESSAGE_CONTROL1(PpapiHostMsg_FlashMenu_Show,
1710                     PP_Point /* location */)
1711
1712// Reply to a show command. If the resource reply is PP_OK, the selected_id
1713// will be the menu item ID chosen by the user.
1714IPC_MESSAGE_CONTROL1(PpapiPluginMsg_FlashMenu_ShowReply,
1715                     int32_t /* selected_id */)
1716
1717// VideoCapture_Dev, plugin -> host
1718IPC_MESSAGE_CONTROL0(PpapiHostMsg_VideoCapture_Create)
1719IPC_MESSAGE_CONTROL0(PpapiHostMsg_VideoCapture_StartCapture)
1720IPC_MESSAGE_CONTROL1(PpapiHostMsg_VideoCapture_ReuseBuffer,
1721                     uint32_t /* buffer */)
1722IPC_MESSAGE_CONTROL0(PpapiHostMsg_VideoCapture_StopCapture)
1723IPC_MESSAGE_CONTROL0(PpapiHostMsg_VideoCapture_Close)
1724
1725// VideoCapture_Dev, plugin -> host -> plugin
1726IPC_MESSAGE_CONTROL3(PpapiHostMsg_VideoCapture_Open,
1727                     std::string /* device_id */,
1728                     PP_VideoCaptureDeviceInfo_Dev /* requested_info */,
1729                     uint32_t /* buffer_count */)
1730IPC_MESSAGE_CONTROL0(PpapiPluginMsg_VideoCapture_OpenReply)
1731
1732// Talk ------------------------------------------------------------------------
1733
1734IPC_MESSAGE_CONTROL0(PpapiHostMsg_Talk_Create)
1735
1736// Requests talk permissions. The host will respond with GetPermissionReply.
1737IPC_MESSAGE_CONTROL0(PpapiHostMsg_Talk_GetPermission)
1738
1739// Response to GetPermission.
1740//
1741// The result of this message is the general Pepper "result" in the ReplyParams.
1742IPC_MESSAGE_CONTROL0(PpapiPluginMsg_Talk_GetPermissionReply)
1743
1744// VideoCapture_Dev, host -> plugin
1745IPC_MESSAGE_CONTROL3(PpapiPluginMsg_VideoCapture_OnDeviceInfo,
1746                     PP_VideoCaptureDeviceInfo_Dev /* info */,
1747                     std::vector<ppapi::HostResource> /* buffers */,
1748                     uint32_t /* buffer_size */)
1749IPC_MESSAGE_CONTROL1(PpapiPluginMsg_VideoCapture_OnStatus,
1750                     uint32_t /* status */)
1751IPC_MESSAGE_CONTROL1(PpapiPluginMsg_VideoCapture_OnError,
1752                     uint32_t /* error */)
1753IPC_MESSAGE_CONTROL1(PpapiPluginMsg_VideoCapture_OnBufferReady,
1754                     uint32_t /* buffer */)
1755
1756#endif  // !defined(OS_NACL) && !defined(NACL_WIN64)
1757