• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
7 #include <string>
8 
9 #include "base/basictypes.h"
10 #include "base/process/process.h"
11 #include "content/common/content_export.h"
12 #include "content/common/content_param_traits.h"
13 #include "content/common/cursors/webcursor.h"
14 #include "content/common/edit_command.h"
15 #include "content/common/frame_param_macros.h"
16 #include "content/public/common/common_param_traits.h"
17 #include "content/public/common/drop_data.h"
18 #include "ipc/ipc_channel_handle.h"
19 #include "ipc/ipc_message_macros.h"
20 #include "ipc/ipc_message_utils.h"
21 #include "third_party/WebKit/public/web/WebCompositionUnderline.h"
22 #include "third_party/WebKit/public/web/WebDragOperation.h"
23 #include "third_party/WebKit/public/web/WebDragStatus.h"
24 #include "third_party/skia/include/core/SkBitmap.h"
25 #include "ui/gfx/ipc/gfx_param_traits.h"
26 #include "ui/gfx/point.h"
27 #include "ui/gfx/rect.h"
28 #include "ui/gfx/size.h"
29 #include "url/gurl.h"
30 
31 #undef IPC_MESSAGE_EXPORT
32 #define IPC_MESSAGE_EXPORT CONTENT_EXPORT
33 
34 #define IPC_MESSAGE_START BrowserPluginMsgStart
35 
36 
37 IPC_ENUM_TRAITS_MAX_VALUE(blink::WebDragStatus, blink::WebDragStatusLast)
38 
39 IPC_STRUCT_BEGIN(BrowserPluginHostMsg_ResizeGuest_Params)
40   // The new size of guest view.
41   IPC_STRUCT_MEMBER(gfx::Size, view_size)
42   // Indicates the scale factor of the embedder WebView.
43   IPC_STRUCT_MEMBER(float, scale_factor)
44   // Indicates a request for a full repaint of the page.
45   // This is required for switching from compositing to the software
46   // rendering path.
47   IPC_STRUCT_MEMBER(bool, repaint)
48 IPC_STRUCT_END()
49 
50 IPC_STRUCT_BEGIN(BrowserPluginHostMsg_Attach_Params)
51   IPC_STRUCT_MEMBER(bool, focused)
52   IPC_STRUCT_MEMBER(bool, visible)
53   IPC_STRUCT_MEMBER(BrowserPluginHostMsg_ResizeGuest_Params,
54                     resize_guest_params)
55   IPC_STRUCT_MEMBER(gfx::Point, origin)
56 IPC_STRUCT_END()
57 
58 // Browser plugin messages
59 
60 // -----------------------------------------------------------------------------
61 // These messages are from the embedder to the browser process.
62 
63 // This message is sent from BrowserPlugin to BrowserPluginGuest to issue an
64 // edit command.
65 IPC_MESSAGE_ROUTED2(BrowserPluginHostMsg_ExecuteEditCommand,
66                     int /* browser_plugin_instance_id */,
67                     std::string /* command */)
68 
69 // This message must be sent just before sending a key event.
70 IPC_MESSAGE_ROUTED2(BrowserPluginHostMsg_SetEditCommandsForNextKeyEvent,
71                     int /* browser_plugin_instance_id */,
72                     std::vector<content::EditCommand> /* edit_commands */)
73 
74 // This message is sent from BrowserPlugin to BrowserPluginGuest whenever IME
75 // composition state is updated.
76 IPC_MESSAGE_ROUTED5(
77     BrowserPluginHostMsg_ImeSetComposition,
78     int /* browser_plugin_instance_id */,
79     std::string /* text */,
80     std::vector<blink::WebCompositionUnderline> /* underlines */,
81     int /* selectiont_start */,
82     int /* selection_end */)
83 
84 // This message is sent from BrowserPlugin to BrowserPluginGuest to notify that
85 // confirming the current composition is requested.
86 IPC_MESSAGE_ROUTED3(BrowserPluginHostMsg_ImeConfirmComposition,
87                     int /* browser_plugin_instance_id */,
88                     std::string /* text */,
89                     bool /* keep selection */)
90 
91 // Deletes the current selection plus the specified number of characters before
92 // and after the selection or caret.
93 IPC_MESSAGE_ROUTED3(BrowserPluginHostMsg_ExtendSelectionAndDelete,
94                     int /* browser_plugin_instance_id */,
95                     int /* before */,
96                     int /* after */)
97 
98 // This message is sent to the browser process to indicate that a BrowserPlugin
99 // has taken ownership of the lifetime of the guest of the given
100 // |browser_plugin_instance_id|. |params| is the state of the BrowserPlugin
101 // taking ownership of the guest.
102 IPC_MESSAGE_ROUTED2(BrowserPluginHostMsg_Attach,
103                     int /* browser_plugin_instance_id */,
104                     BrowserPluginHostMsg_Attach_Params /* params */)
105 
106 // Tells the guest to focus or defocus itself.
107 IPC_MESSAGE_ROUTED2(BrowserPluginHostMsg_SetFocus,
108                     int /* browser_plugin_instance_id */,
109                     bool /* enable */)
110 
111 // Sends an input event to the guest.
112 IPC_MESSAGE_ROUTED3(BrowserPluginHostMsg_HandleInputEvent,
113                     int /* browser_plugin_instance_id */,
114                     gfx::Rect /* guest_window_rect */,
115                     IPC::WebInputEventPointer /* event */)
116 
117 IPC_MESSAGE_ROUTED3(BrowserPluginHostMsg_CopyFromCompositingSurfaceAck,
118                     int /* browser_plugin_instance_id */,
119                     int /* request_id */,
120                     SkBitmap)
121 
122 // Notify the guest renderer that some resources given to the embededer
123 // are not used any more.
124 IPC_MESSAGE_ROUTED2(BrowserPluginHostMsg_ReclaimCompositorResources,
125                     int /* browser_plugin_instance_id */,
126                     FrameHostMsg_ReclaimCompositorResources_Params /* params */)
127 
128 // When a BrowserPlugin has been removed from the embedder's DOM, it informs
129 // the browser process to cleanup the guest.
130 IPC_MESSAGE_ROUTED1(BrowserPluginHostMsg_PluginDestroyed,
131                     int /* browser_plugin_instance_id */)
132 
133 // Tells the guest it has been shown or hidden.
134 IPC_MESSAGE_ROUTED2(BrowserPluginHostMsg_SetVisibility,
135                     int /* browser_plugin_instance_id */,
136                     bool /* visible */)
137 
138 // Tells the guest that a drag event happened on the plugin.
139 IPC_MESSAGE_ROUTED5(BrowserPluginHostMsg_DragStatusUpdate,
140                     int /* browser_plugin_instance_id */,
141                     blink::WebDragStatus /* drag_status */,
142                     content::DropData /* drop_data */,
143                     blink::WebDragOperationsMask /* operation_mask */,
144                     gfx::Point /* plugin_location */)
145 
146 // Sends a PointerLock Lock ACK to the BrowserPluginGuest.
147 IPC_MESSAGE_ROUTED2(BrowserPluginHostMsg_LockMouse_ACK,
148                     int /* browser_plugin_instance_id */,
149                     bool /* succeeded */)
150 
151 // Sends a PointerLock Unlock ACK to the BrowserPluginGuest.
152 IPC_MESSAGE_ROUTED1(BrowserPluginHostMsg_UnlockMouse_ACK,
153                     int /* browser_plugin_instance_id */)
154 
155 // Sent when plugin's position has changed.
156 IPC_MESSAGE_ROUTED2(BrowserPluginHostMsg_UpdateGeometry,
157                     int /* browser_plugin_instance_id */,
158                     gfx::Rect /* view_rect */)
159 
160 // -----------------------------------------------------------------------------
161 // These messages are from the guest renderer to the browser process
162 
163 // A embedder sends this message to the browser when it wants
164 // to resize a guest plugin container so that the guest is relaid out
165 // according to the new size.
166 IPC_MESSAGE_ROUTED2(BrowserPluginHostMsg_ResizeGuest,
167                     int /* browser_plugin_instance_id*/,
168                     BrowserPluginHostMsg_ResizeGuest_Params)
169 
170 // -----------------------------------------------------------------------------
171 // These messages are from the browser process to the embedder.
172 
173 // This message is sent in response to a completed attachment of a guest
174 // to a BrowserPlugin.
175 IPC_MESSAGE_CONTROL1(BrowserPluginMsg_Attach_ACK,
176                      int /* browser_plugin_instance_id */)
177 
178 // When the guest crashes, the browser process informs the embedder through this
179 // message.
180 IPC_MESSAGE_CONTROL1(BrowserPluginMsg_GuestGone,
181                      int /* browser_plugin_instance_id */)
182 
183 // When the user tabs to the end of the tab stops of a guest, the browser
184 // process informs the embedder to tab out of the browser plugin.
185 IPC_MESSAGE_CONTROL2(BrowserPluginMsg_AdvanceFocus,
186                      int /* browser_plugin_instance_id */,
187                      bool /* reverse */)
188 
189 // When the guest starts/stops listening to touch events, it needs to notify the
190 // plugin in the embedder about it.
191 IPC_MESSAGE_CONTROL2(BrowserPluginMsg_ShouldAcceptTouchEvents,
192                      int /* browser_plugin_instance_id */,
193                      bool /* accept */)
194 
195 // Tells the guest to change its background opacity.
196 IPC_MESSAGE_CONTROL2(BrowserPluginMsg_SetContentsOpaque,
197                      int /* browser_plugin_instance_id */,
198                      bool /* opaque */)
199 
200 // Inform the embedder of the cursor the guest wishes to display.
201 IPC_MESSAGE_CONTROL2(BrowserPluginMsg_SetCursor,
202                      int /* browser_plugin_instance_id */,
203                      content::WebCursor /* cursor */)
204 
205 IPC_MESSAGE_CONTROL4(BrowserPluginMsg_CopyFromCompositingSurface,
206                      int /* browser_plugin_instance_id */,
207                      int /* request_id */,
208                      gfx::Rect  /* source_rect */,
209                      gfx::Size  /* dest_size */)
210 
211 IPC_MESSAGE_CONTROL2(BrowserPluginMsg_CompositorFrameSwapped,
212                      int /* browser_plugin_instance_id */,
213                      FrameMsg_CompositorFrameSwapped_Params /* params */)
214 
215 // Forwards a PointerLock Unlock request to the BrowserPlugin.
216 IPC_MESSAGE_CONTROL2(BrowserPluginMsg_SetMouseLock,
217                      int /* browser_plugin_instance_id */,
218                      bool /* enable */)
219 
220 // Acknowledge that we presented an ubercomp frame.
221 IPC_MESSAGE_ROUTED2(BrowserPluginHostMsg_CompositorFrameSwappedACK,
222                     int /* browser_plugin_instance_id */,
223                     FrameHostMsg_CompositorFrameSwappedACK_Params /* params */)
224