diff options
Diffstat (limited to 'content/child/plugin_messages.h')
-rw-r--r-- | content/child/plugin_messages.h | 380 |
1 files changed, 380 insertions, 0 deletions
diff --git a/content/child/plugin_messages.h b/content/child/plugin_messages.h new file mode 100644 index 0000000..7c0d825 --- /dev/null +++ b/content/child/plugin_messages.h @@ -0,0 +1,380 @@ +// Copyright 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// Multiply-included message file, hence no include guard. + +#include "build/build_config.h" +#include "content/child/plugin_param_traits.h" +#include "content/common/content_export.h" +#include "content/common/content_param_traits.h" +#include "content/public/common/common_param_traits.h" +#include "ipc/ipc_channel_handle.h" +#include "ipc/ipc_message_macros.h" +#include "ui/gfx/native_widget_types.h" +#include "ui/gfx/rect.h" +#include "webkit/common/cursors/webcursor.h" + +#if defined(OS_POSIX) +#include "base/file_descriptor_posix.h" +#endif + +#undef IPC_MESSAGE_EXPORT +#define IPC_MESSAGE_EXPORT CONTENT_EXPORT + +#define IPC_MESSAGE_START PluginMsgStart + +IPC_STRUCT_BEGIN(PluginMsg_Init_Params) + IPC_STRUCT_MEMBER(GURL, url) + IPC_STRUCT_MEMBER(GURL, page_url) + IPC_STRUCT_MEMBER(std::vector<std::string>, arg_names) + IPC_STRUCT_MEMBER(std::vector<std::string>, arg_values) + IPC_STRUCT_MEMBER(bool, load_manually) + IPC_STRUCT_MEMBER(int, host_render_view_routing_id) +IPC_STRUCT_END() + +IPC_STRUCT_BEGIN(PluginHostMsg_URLRequest_Params) + IPC_STRUCT_MEMBER(std::string, url) + IPC_STRUCT_MEMBER(std::string, method) + IPC_STRUCT_MEMBER(std::string, target) + IPC_STRUCT_MEMBER(std::vector<char>, buffer) + IPC_STRUCT_MEMBER(int, notify_id) + IPC_STRUCT_MEMBER(bool, popups_allowed) + IPC_STRUCT_MEMBER(bool, notify_redirects) +IPC_STRUCT_END() + +IPC_STRUCT_BEGIN(PluginMsg_DidReceiveResponseParams) + IPC_STRUCT_MEMBER(unsigned long, id) + IPC_STRUCT_MEMBER(std::string, mime_type) + IPC_STRUCT_MEMBER(std::string, headers) + IPC_STRUCT_MEMBER(uint32, expected_length) + IPC_STRUCT_MEMBER(uint32, last_modified) + IPC_STRUCT_MEMBER(bool, request_is_seekable) +IPC_STRUCT_END() + +IPC_STRUCT_BEGIN(PluginMsg_UpdateGeometry_Param) + IPC_STRUCT_MEMBER(gfx::Rect, window_rect) + IPC_STRUCT_MEMBER(gfx::Rect, clip_rect) + IPC_STRUCT_MEMBER(TransportDIB::Handle, windowless_buffer0) + IPC_STRUCT_MEMBER(TransportDIB::Handle, windowless_buffer1) + IPC_STRUCT_MEMBER(int, windowless_buffer_index) +IPC_STRUCT_END() + +//----------------------------------------------------------------------------- +// Plugin messages +// These are messages sent from the renderer process to the plugin process. +// Tells the plugin process to create a new plugin instance with the given +// id. A corresponding WebPluginDelegateStub is created which hosts the +// WebPluginDelegateImpl. +IPC_SYNC_MESSAGE_CONTROL1_1(PluginMsg_CreateInstance, + std::string /* mime_type */, + int /* instance_id */) + +// The WebPluginDelegateProxy sends this to the WebPluginDelegateStub in its +// destructor, so that the stub deletes the actual WebPluginDelegateImpl +// object that it's hosting. +IPC_SYNC_MESSAGE_CONTROL1_0(PluginMsg_DestroyInstance, + int /* instance_id */) + +IPC_SYNC_MESSAGE_CONTROL0_1(PluginMsg_GenerateRouteID, + int /* id */) + +// The messages below all map to WebPluginDelegate methods. +IPC_SYNC_MESSAGE_ROUTED1_2(PluginMsg_Init, + PluginMsg_Init_Params, + bool /* transparent */, + bool /* result */) + +// Used to synchronously request a paint for windowless plugins. +IPC_SYNC_MESSAGE_ROUTED1_0(PluginMsg_Paint, + gfx::Rect /* damaged_rect */) + +// Sent by the renderer after it paints from its backing store so that the +// plugin knows it can send more invalidates. +IPC_MESSAGE_ROUTED0(PluginMsg_DidPaint) + +IPC_SYNC_MESSAGE_ROUTED0_1(PluginMsg_GetPluginScriptableObject, + int /* route_id */) + +// Gets the form value of the plugin instance synchronously. +IPC_SYNC_MESSAGE_ROUTED0_2(PluginMsg_GetFormValue, + string16 /* value */, + bool /* success */) + +IPC_MESSAGE_ROUTED3(PluginMsg_DidFinishLoadWithReason, + GURL /* url */, + int /* reason */, + int /* notify_id */) + +// Updates the plugin location. +IPC_MESSAGE_ROUTED1(PluginMsg_UpdateGeometry, + PluginMsg_UpdateGeometry_Param) + +// A synchronous version of above. +IPC_SYNC_MESSAGE_ROUTED1_0(PluginMsg_UpdateGeometrySync, + PluginMsg_UpdateGeometry_Param) + +IPC_SYNC_MESSAGE_ROUTED1_0(PluginMsg_SetFocus, + bool /* focused */) + +IPC_SYNC_MESSAGE_ROUTED1_2(PluginMsg_HandleInputEvent, + IPC::WebInputEventPointer /* event */, + bool /* handled */, + WebCursor /* cursor type*/) + +IPC_MESSAGE_ROUTED1(PluginMsg_SetContentAreaFocus, + bool /* has_focus */) + +#if defined(OS_WIN) +IPC_MESSAGE_ROUTED4(PluginMsg_ImeCompositionUpdated, + string16 /* text */, + std::vector<int> /* clauses */, + std::vector<int>, /* target */ + int /* cursor_position */) + +IPC_MESSAGE_ROUTED1(PluginMsg_ImeCompositionCompleted, + string16 /* text */) +#endif + +#if defined(OS_MACOSX) +IPC_MESSAGE_ROUTED1(PluginMsg_SetWindowFocus, + bool /* has_focus */) + +IPC_MESSAGE_ROUTED0(PluginMsg_ContainerHidden) + +IPC_MESSAGE_ROUTED3(PluginMsg_ContainerShown, + gfx::Rect /* window_frame */, + gfx::Rect /* view_frame */, + bool /* has_focus */) + +IPC_MESSAGE_ROUTED2(PluginMsg_WindowFrameChanged, + gfx::Rect /* window_frame */, + gfx::Rect /* view_frame */) + +IPC_MESSAGE_ROUTED1(PluginMsg_ImeCompositionCompleted, + string16 /* text */) +#endif + +IPC_SYNC_MESSAGE_ROUTED3_0(PluginMsg_WillSendRequest, + unsigned long /* id */, + GURL /* url */, + int /* http_status_code */) + +IPC_MESSAGE_ROUTED1(PluginMsg_DidReceiveResponse, + PluginMsg_DidReceiveResponseParams) + +IPC_MESSAGE_ROUTED3(PluginMsg_DidReceiveData, + unsigned long /* id */, + std::vector<char> /* buffer */, + int /* data_offset */) + +IPC_MESSAGE_ROUTED1(PluginMsg_DidFinishLoading, + unsigned long /* id */) + +IPC_MESSAGE_ROUTED1(PluginMsg_DidFail, + unsigned long /* id */) + +IPC_MESSAGE_ROUTED4(PluginMsg_SendJavaScriptStream, + GURL /* url */, + std::string /* result */, + bool /* success */, + int /* notify_id */) + +IPC_MESSAGE_ROUTED2(PluginMsg_DidReceiveManualResponse, + GURL /* url */, + PluginMsg_DidReceiveResponseParams) + +IPC_MESSAGE_ROUTED1(PluginMsg_DidReceiveManualData, + std::vector<char> /* buffer */) + +IPC_MESSAGE_ROUTED0(PluginMsg_DidFinishManualLoading) + +IPC_MESSAGE_ROUTED0(PluginMsg_DidManualLoadFail) + +IPC_MESSAGE_ROUTED3(PluginMsg_HandleURLRequestReply, + unsigned long /* resource_id */, + GURL /* url */, + int /* notify_id */) + +IPC_MESSAGE_ROUTED2(PluginMsg_HTTPRangeRequestReply, + unsigned long /* resource_id */, + int /* range_request_id */) + +IPC_MESSAGE_CONTROL1(PluginMsg_SignalModalDialogEvent, + int /* render_view_id */) + +IPC_MESSAGE_CONTROL1(PluginMsg_ResetModalDialogEvent, + int /* render_view_id */) + +#if defined(OS_MACOSX) +// This message, used only on 10.6 and later, transmits the "fake" +// window handle allocated by the browser on behalf of the renderer +// to the GPU plugin. +IPC_MESSAGE_ROUTED1(PluginMsg_SetFakeAcceleratedSurfaceWindowHandle, + gfx::PluginWindowHandle /* window */) +#endif + +//----------------------------------------------------------------------------- +// PluginHost messages +// These are messages sent from the plugin process to the renderer process. +// They all map to the corresponding WebPlugin methods. +// Sends the plugin window information to the renderer. +// The window parameter is a handle to the window if the plugin is a windowed +// plugin. It is NULL for windowless plugins. +IPC_SYNC_MESSAGE_ROUTED1_0(PluginHostMsg_SetWindow, + gfx::PluginWindowHandle /* window */) + +#if defined(OS_WIN) +// The modal_loop_pump_messages_event parameter is an event handle which is +// passed in for windowless plugins and is used to indicate if messages +// are to be pumped in sync calls to the plugin process. Currently used +// in HandleEvent calls. +IPC_SYNC_MESSAGE_ROUTED2_0(PluginHostMsg_SetWindowlessData, + HANDLE /* modal_loop_pump_messages_event */, + gfx::NativeViewId /* dummy_activation_window*/) + +// Send the IME status retrieved from a windowless plug-in. A windowless plug-in +// uses the IME attached to a browser process as a renderer does. A plug-in +// sends this message to control the IME status of a browser process. I would +// note that a plug-in sends this message to a renderer process that hosts this +// plug-in (not directly to a browser process) so the renderer process can +// update its IME status. +IPC_MESSAGE_ROUTED2(PluginHostMsg_NotifyIMEStatus, + int /* input_type */, + gfx::Rect /* caret_rect */) +#endif + +IPC_MESSAGE_ROUTED1(PluginHostMsg_URLRequest, + PluginHostMsg_URLRequest_Params) + +IPC_MESSAGE_ROUTED1(PluginHostMsg_CancelResource, + int /* id */) + +IPC_MESSAGE_ROUTED1(PluginHostMsg_InvalidateRect, + gfx::Rect /* rect */) + +IPC_SYNC_MESSAGE_ROUTED1_1(PluginHostMsg_GetWindowScriptNPObject, + int /* route id */, + bool /* success */) + +IPC_SYNC_MESSAGE_ROUTED1_1(PluginHostMsg_GetPluginElement, + int /* route id */, + bool /* success */) + +IPC_SYNC_MESSAGE_ROUTED1_2(PluginHostMsg_ResolveProxy, + GURL /* url */, + bool /* result */, + std::string /* proxy list */) + +IPC_MESSAGE_ROUTED3(PluginHostMsg_SetCookie, + GURL /* url */, + GURL /* first_party_for_cookies */, + std::string /* cookie */) + +IPC_SYNC_MESSAGE_ROUTED2_1(PluginHostMsg_GetCookies, + GURL /* url */, + GURL /* first_party_for_cookies */, + std::string /* cookies */) + +IPC_MESSAGE_ROUTED0(PluginHostMsg_CancelDocumentLoad) + +IPC_MESSAGE_ROUTED3(PluginHostMsg_InitiateHTTPRangeRequest, + std::string /* url */, + std::string /* range_info */, + int /* range_request_id */) + +IPC_MESSAGE_ROUTED2(PluginHostMsg_DeferResourceLoading, + unsigned long /* resource_id */, + bool /* defer */) + +IPC_SYNC_MESSAGE_CONTROL1_0(PluginHostMsg_SetException, + std::string /* message */) + +IPC_MESSAGE_CONTROL0(PluginHostMsg_PluginShuttingDown) + +#if defined(OS_MACOSX) +IPC_MESSAGE_ROUTED1(PluginHostMsg_FocusChanged, + bool /* focused */) + +IPC_MESSAGE_ROUTED0(PluginHostMsg_StartIme) + +//---------------------------------------------------------------------- +// Core Animation plugin implementation rendering via compositor. + +// Notifies the renderer process that this plugin will be using the +// accelerated rendering path. +IPC_MESSAGE_ROUTED0(PluginHostMsg_AcceleratedPluginEnabledRendering) + +// Notifies the renderer process that the plugin allocated a new +// IOSurface into which it is rendering. The renderer process forwards +// this IOSurface to the GPU process, causing it to be bound to a +// texture from which the compositor can render. Any previous +// IOSurface allocated by this plugin must be implicitly released by +// the receipt of this message. +IPC_MESSAGE_ROUTED3(PluginHostMsg_AcceleratedPluginAllocatedIOSurface, + int32 /* width */, + int32 /* height */, + uint32 /* surface_id */) + +// Notifies the renderer process that the plugin produced a new frame +// of content into its IOSurface, and therefore that the compositor +// needs to redraw. +IPC_MESSAGE_ROUTED0(PluginHostMsg_AcceleratedPluginSwappedIOSurface) +#endif + +IPC_MESSAGE_ROUTED2(PluginHostMsg_URLRedirectResponse, + bool /* allow */, + int /* resource_id */) + + +//----------------------------------------------------------------------------- +// NPObject messages +// These are messages used to marshall NPObjects. They are sent both from the +// plugin to the renderer and from the renderer to the plugin. +IPC_SYNC_MESSAGE_ROUTED0_0(NPObjectMsg_Release) + +IPC_SYNC_MESSAGE_ROUTED1_1(NPObjectMsg_HasMethod, + content::NPIdentifier_Param /* name */, + bool /* result */) + +IPC_SYNC_MESSAGE_ROUTED3_2(NPObjectMsg_Invoke, + bool /* is_default */, + content::NPIdentifier_Param /* method */, + std::vector<content::NPVariant_Param> /* args */, + content::NPVariant_Param /* result_param */, + bool /* result */) + +IPC_SYNC_MESSAGE_ROUTED1_1(NPObjectMsg_HasProperty, + content::NPIdentifier_Param /* name */, + bool /* result */) + +IPC_SYNC_MESSAGE_ROUTED1_2(NPObjectMsg_GetProperty, + content::NPIdentifier_Param /* name */, + content::NPVariant_Param /* property */, + bool /* result */) + +IPC_SYNC_MESSAGE_ROUTED2_1(NPObjectMsg_SetProperty, + content::NPIdentifier_Param /* name */, + content::NPVariant_Param /* property */, + bool /* result */) + +IPC_SYNC_MESSAGE_ROUTED1_1(NPObjectMsg_RemoveProperty, + content::NPIdentifier_Param /* name */, + bool /* result */) + +IPC_SYNC_MESSAGE_ROUTED0_0(NPObjectMsg_Invalidate) + +IPC_SYNC_MESSAGE_ROUTED0_2(NPObjectMsg_Enumeration, + std::vector<content::NPIdentifier_Param> /* value */, + bool /* result */) + +IPC_SYNC_MESSAGE_ROUTED1_2(NPObjectMsg_Construct, + std::vector<content::NPVariant_Param> /* args */, + content::NPVariant_Param /* result_param */, + bool /* result */) + +IPC_SYNC_MESSAGE_ROUTED2_2(NPObjectMsg_Evaluate, + std::string /* script */, + bool /* popups_allowed */, + content::NPVariant_Param /* result_param */, + bool /* result */) |