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