15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Multiply-included message header, no traditional include guard.
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string>
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h"
1058e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch#include "base/process/process.h"
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/values.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/common/content_export.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/common/content_param_traits.h"
1423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "content/common/cursors/webcursor.h"
15868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "content/common/edit_command.h"
165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "content/common/frame_param_macros.h"
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/common/common_param_traits.h"
18eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "content/public/common/drop_data.h"
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ipc/ipc_channel_handle.h"
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ipc/ipc_message_macros.h"
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ipc/ipc_message_utils.h"
225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "third_party/WebKit/public/web/WebCompositionUnderline.h"
237d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebDragOperation.h"
247d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebDragStatus.h"
2523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "third_party/skia/include/core/SkBitmap.h"
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/point.h"
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/rect.h"
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/size.h"
2968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "url/gurl.h"
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef IPC_MESSAGE_EXPORT
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define IPC_MESSAGE_EXPORT CONTENT_EXPORT
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define IPC_MESSAGE_START BrowserPluginMsgStart
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_ENUM_TRAITS_MAX_VALUE(blink::WebDragStatus, blink::WebDragStatusLast)
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_STRUCT_BEGIN(BrowserPluginHostMsg_AutoSize_Params)
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IPC_STRUCT_MEMBER(bool, enable)
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IPC_STRUCT_MEMBER(gfx::Size, max_size)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IPC_STRUCT_MEMBER(gfx::Size, min_size)
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_STRUCT_END()
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IPC_STRUCT_BEGIN(BrowserPluginHostMsg_ResizeGuest_Params)
46ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  // Indicates whether the parameters have been populated or not.
47ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  IPC_STRUCT_MEMBER(bool, size_changed)
48f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  // The new size of guest view.
49f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  IPC_STRUCT_MEMBER(gfx::Size, view_size)
502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Indicates the scale factor of the embedder WebView.
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  IPC_STRUCT_MEMBER(float, scale_factor)
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Indicates a request for a full repaint of the page.
532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // This is required for switching from compositing to the software
542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // rendering path.
552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  IPC_STRUCT_MEMBER(bool, repaint)
562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IPC_STRUCT_END()
572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)IPC_STRUCT_BEGIN(BrowserPluginHostMsg_Attach_Params)
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IPC_STRUCT_MEMBER(bool, focused)
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IPC_STRUCT_MEMBER(bool, visible)
61f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  IPC_STRUCT_MEMBER(bool, opaque)
6268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  IPC_STRUCT_MEMBER(GURL, embedder_frame_url)
632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  IPC_STRUCT_MEMBER(BrowserPluginHostMsg_AutoSize_Params, auto_size_params)
642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  IPC_STRUCT_MEMBER(BrowserPluginHostMsg_ResizeGuest_Params,
652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    resize_guest_params)
66f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  IPC_STRUCT_MEMBER(gfx::Point, origin)
67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)IPC_STRUCT_END()
68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_STRUCT_BEGIN(BrowserPluginMsg_UpdateRect_Params)
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The size of the RenderView when this message was generated.  This is
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // included so the host knows how large the view is from the perspective of
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // the renderer process.  This is necessary in case a resize operation is in
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // progress. If auto-resize is enabled, this should update the corresponding
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // view size.
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IPC_STRUCT_MEMBER(gfx::Size, view_size)
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // All the above coordinates are in DIP. This is the scale factor needed
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // to convert them to pixels.
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IPC_STRUCT_MEMBER(float, scale_factor)
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Is this UpdateRect an ACK to a resize request?
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IPC_STRUCT_MEMBER(bool, is_resize_ack)
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_STRUCT_END()
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Browser plugin messages
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// -----------------------------------------------------------------------------
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// These messages are from the embedder to the browser process.
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
90c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// This message is sent from BrowserPlugin to BrowserPluginGuest to issue an
91c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// edit command.
92c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)IPC_MESSAGE_ROUTED2(BrowserPluginHostMsg_ExecuteEditCommand,
93c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                     int /* instance_id */,
94c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                     std::string /* command */)
95c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
96868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// This message must be sent just before sending a key event.
97868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)IPC_MESSAGE_ROUTED2(BrowserPluginHostMsg_SetEditCommandsForNextKeyEvent,
98868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)                    int /* instance_id */,
99868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)                    std::vector<content::EditCommand> /* edit_commands */)
100868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
1015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// This message is sent from BrowserPlugin to BrowserPluginGuest whenever IME
1025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// composition state is updated.
1035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_MESSAGE_ROUTED5(
1045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    BrowserPluginHostMsg_ImeSetComposition,
1055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    int /* instance_id */,
1065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    std::string /* text */,
1075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    std::vector<blink::WebCompositionUnderline> /* underlines */,
1085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    int /* selectiont_start */,
1095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    int /* selection_end */)
1105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
1115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// This message is sent from BrowserPlugin to BrowserPluginGuest to notify that
1125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// confirming the current composition is requested.
1135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_MESSAGE_ROUTED3(BrowserPluginHostMsg_ImeConfirmComposition,
1145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                    int /* instance_id */,
1155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                    std::string /* text */,
1165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                    bool /* keep selection */)
1175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
1185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Deletes the current selection plus the specified number of characters before
1195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// and after the selection or caret.
1205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_MESSAGE_ROUTED3(BrowserPluginHostMsg_ExtendSelectionAndDelete,
1215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                    int /* instance_id */,
1225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                    int /* before */,
1235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                    int /* after */)
1245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This message is sent to the browser process to enable or disable autosize
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// mode.
1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IPC_MESSAGE_ROUTED3(
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    BrowserPluginHostMsg_SetAutoSize,
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int /* instance_id */,
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    BrowserPluginHostMsg_AutoSize_Params /* auto_size_params */,
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    BrowserPluginHostMsg_ResizeGuest_Params /* resize_guest_params */)
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// This message is sent to the browser process to indicate that a BrowserPlugin
1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// has taken ownership of the lifetime of the guest of the given |instance_id|.
135c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// |params| is the state of the BrowserPlugin taking ownership of
136c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// the guest. If a guest doesn't already exist with the given |instance_id|,
137c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// a new one will be created.
138eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochIPC_MESSAGE_ROUTED3(BrowserPluginHostMsg_Attach,
1392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    int /* instance_id */,
140eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                    BrowserPluginHostMsg_Attach_Params /* params */,
141eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                    base::DictionaryValue /* extra_params */)
1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Tells the guest to focus or defocus itself.
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_ROUTED2(BrowserPluginHostMsg_SetFocus,
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    int /* instance_id */,
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    bool /* enable */)
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Sends an input event to the guest.
1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IPC_MESSAGE_ROUTED3(BrowserPluginHostMsg_HandleInputEvent,
1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    int /* instance_id */,
1512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    gfx::Rect /* guest_window_rect */,
1522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    IPC::WebInputEventPointer /* event */)
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
154a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)IPC_MESSAGE_ROUTED3(BrowserPluginHostMsg_CopyFromCompositingSurfaceAck,
155a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                    int /* instance_id */,
156a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                    int /* request_id */,
157a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                    SkBitmap);
158a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
159f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Notify the guest renderer that some resources given to the embededer
160f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// are not used any more.
1615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_MESSAGE_ROUTED2(BrowserPluginHostMsg_ReclaimCompositorResources,
162f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                    int /* instance_id */,
1635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                    FrameHostMsg_ReclaimCompositorResources_Params /* params */)
164f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// When a BrowserPlugin has been removed from the embedder's DOM, it informs
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// the browser process to cleanup the guest.
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_ROUTED1(BrowserPluginHostMsg_PluginDestroyed,
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    int /* instance_id */)
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Tells the guest it has been shown or hidden.
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_ROUTED2(BrowserPluginHostMsg_SetVisibility,
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    int /* instance_id */,
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    bool /* visible */)
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Tells the guest to change its background opacity.
176f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)IPC_MESSAGE_ROUTED2(BrowserPluginHostMsg_SetContentsOpaque,
177f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                    int /* instance_id */,
178f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                    bool /* opaque */)
179f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Tells the guest that a drag event happened on the plugin.
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_ROUTED5(BrowserPluginHostMsg_DragStatusUpdate,
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    int /* instance_id */,
183f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                    blink::WebDragStatus /* drag_status */,
184eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                    content::DropData /* drop_data */,
185f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                    blink::WebDragOperationsMask /* operation_mask */,
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    gfx::Point /* plugin_location */)
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Sends a PointerLock Lock ACK to the BrowserPluginGuest.
1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IPC_MESSAGE_ROUTED2(BrowserPluginHostMsg_LockMouse_ACK,
1902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    int /* instance_id */,
1912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    bool /* succeeded */)
1922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Sends a PointerLock Unlock ACK to the BrowserPluginGuest.
1942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IPC_MESSAGE_ROUTED1(BrowserPluginHostMsg_UnlockMouse_ACK, int /* instance_id */)
1952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
19690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Sent when plugin's position has changed without UpdateRect.
19790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)IPC_MESSAGE_ROUTED2(BrowserPluginHostMsg_UpdateGeometry,
19890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                    int /* instance_id */,
19990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                    gfx::Rect /* view_rect */)
20090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// -----------------------------------------------------------------------------
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// These messages are from the guest renderer to the browser process
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// A embedder sends this message to the browser when it wants
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// to resize a guest plugin container so that the guest is relaid out
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// according to the new size.
2072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IPC_MESSAGE_ROUTED2(BrowserPluginHostMsg_ResizeGuest,
2082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    int /* instance_id*/,
2092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                    BrowserPluginHostMsg_ResizeGuest_Params)
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// -----------------------------------------------------------------------------
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// These messages are from the browser process to the embedder.
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
214c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// This message is sent in response to a completed attachment of a guest
215f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// to a BrowserPlugin.
216f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)IPC_MESSAGE_CONTROL1(BrowserPluginMsg_Attach_ACK, int /* instance_id */);
217c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Once the swapped out guest RenderView has been created in the embedder render
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// process, the browser process informs the embedder of its routing ID.
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL2(BrowserPluginMsg_GuestContentWindowReady,
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     int /* instance_id */,
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     int /* source_routing_id */)
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// When the guest crashes, the browser process informs the embedder through this
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// message.
2267dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochIPC_MESSAGE_CONTROL1(BrowserPluginMsg_GuestGone,
2277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch                     int /* instance_id */)
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// When the user tabs to the end of the tab stops of a guest, the browser
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// process informs the embedder to tab out of the browser plugin.
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL2(BrowserPluginMsg_AdvanceFocus,
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     int /* instance_id */,
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     bool /* reverse */)
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// When the guest starts/stops listening to touch events, it needs to notify the
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// plugin in the embedder about it.
2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL2(BrowserPluginMsg_ShouldAcceptTouchEvents,
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     int /* instance_id */,
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     bool /* accept */)
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Inform the embedder of the cursor the guest wishes to display.
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL2(BrowserPluginMsg_SetCursor,
2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     int /* instance_id */,
24423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)                     content::WebCursor /* cursor */)
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The guest has damage it wants to convey to the embedder so that it can
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// update its backing store.
2482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IPC_MESSAGE_CONTROL2(BrowserPluginMsg_UpdateRect,
2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     int /* instance_id */,
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     BrowserPluginMsg_UpdateRect_Params)
2512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
252a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)IPC_MESSAGE_CONTROL4(BrowserPluginMsg_CopyFromCompositingSurface,
253a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                     int /* instance_id */,
254a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                     int /* request_id */,
255a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                     gfx::Rect  /* source_rect */,
256a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                     gfx::Size  /* dest_size */)
257a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
2582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Guest renders into an FBO with textures provided by the embedder.
2595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// BrowserPlugin shares mostly the same logic as out-of-process RenderFrames but
2605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// because BrowserPlugins implement custom a second level of routing logic,
2615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// the IPCs need to be annotated with an extra instance_id. These messages
2625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// provide that extra id.
263eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochIPC_MESSAGE_CONTROL2(BrowserPluginMsg_BuffersSwapped,
2642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                     int /* instance_id */,
2655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                     FrameMsg_BuffersSwapped_Params /* params */)
2662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_MESSAGE_CONTROL2(BrowserPluginMsg_CompositorFrameSwapped,
268c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                     int /* instance_id */,
2695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                     FrameMsg_CompositorFrameSwapped_Params /* params */)
270c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
2712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Forwards a PointerLock Unlock request to the BrowserPlugin.
272ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochIPC_MESSAGE_CONTROL2(BrowserPluginMsg_SetMouseLock,
273ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch                     int /* instance_id */,
274ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch                     bool /* enable */)
2752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// See comment about BrowserPluginMsg_BuffersSwapped and
2775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// BrowserPluginMsg_CompositorFrameSwapped for how these related
2785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// to the FrameHostMsg variants.
279a02191e04bc25c4935f804f2c080ae28663d096dBen MurdochIPC_MESSAGE_ROUTED1(BrowserPluginHostMsg_BuffersSwappedACK,
2805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                    FrameHostMsg_BuffersSwappedACK_Params /* params */)
2815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
2825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Acknowledge that we presented an ubercomp frame.
2835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_MESSAGE_ROUTED2(BrowserPluginHostMsg_CompositorFrameSwappedACK,
2845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                    int /* instance_id */,
2855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                    FrameHostMsg_CompositorFrameSwappedACK_Params /* params */)
286