summaryrefslogtreecommitdiffstats
path: root/content/common/browser_plugin_messages.h
diff options
context:
space:
mode:
authorfsamuel@chromium.org <fsamuel@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-10 00:46:06 +0000
committerfsamuel@chromium.org <fsamuel@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-10 00:46:06 +0000
commite6e56757b4ee070463a9f4854e68678ca692b806 (patch)
tree1801f0a658cfa3979693177bff2ce53103b40387 /content/common/browser_plugin_messages.h
parentda754d43fb2891dbefdebc5c70869982e929254f (diff)
downloadchromium_src-e6e56757b4ee070463a9f4854e68678ca692b806.zip
chromium_src-e6e56757b4ee070463a9f4854e68678ca692b806.tar.gz
chromium_src-e6e56757b4ee070463a9f4854e68678ca692b806.tar.bz2
Browser Plugin: New Implementation (Renderer Side)
BUG=140306 Tested: Added new browser tests! Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=150654 Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=150863 Review URL: https://chromiumcodereview.appspot.com/10830072 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@150956 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/common/browser_plugin_messages.h')
-rw-r--r--content/common/browser_plugin_messages.h152
1 files changed, 152 insertions, 0 deletions
diff --git a/content/common/browser_plugin_messages.h b/content/common/browser_plugin_messages.h
new file mode 100644
index 0000000..af68c71
--- /dev/null
+++ b/content/common/browser_plugin_messages.h
@@ -0,0 +1,152 @@
+// Copyright (c) 2012 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 header, no traditional include guard.
+
+#include <string>
+
+#include "base/basictypes.h"
+#include "base/process.h"
+#include "content/common/content_export.h"
+#include "content/public/common/common_param_traits.h"
+#include "ipc/ipc_channel_handle.h"
+#include "ipc/ipc_message_macros.h"
+#include "ipc/ipc_message_utils.h"
+#include "ui/gfx/rect.h"
+#include "ui/gfx/size.h"
+#include "webkit/glue/webcursor.h"
+
+#undef IPC_MESSAGE_EXPORT
+#define IPC_MESSAGE_EXPORT CONTENT_EXPORT
+
+#define IPC_MESSAGE_START BrowserPluginMsgStart
+
+// Browser plugin messages
+
+// -----------------------------------------------------------------------------
+// These messages are from the embedder to the browser process.
+
+// Tells the guest to focus or defocus itself.
+IPC_MESSAGE_ROUTED2(BrowserPluginHostMsg_SetFocus,
+ int /* instance_id */,
+ bool /* enable */)
+
+// Message payload includes:
+// 1. A blob that should be cast to WebInputEvent
+// 2. An optional boolean value indicating if a RawKeyDown event is associated
+// to a keyboard shortcut of the browser.
+IPC_SYNC_MESSAGE_ROUTED0_2(BrowserPluginHostMsg_HandleInputEvent,
+ bool /* handled */,
+ WebCursor /* cursor */)
+
+// An ACK to the guest process letting it know that the embedder has handled
+// the previous frame and is ready for the next frame. If the guest sent the
+// embedder a bitmap that does not match the size of the BrowserPlugin's
+// container, the BrowserPlugin requests a new size as well.
+IPC_MESSAGE_ROUTED3(BrowserPluginHostMsg_UpdateRect_ACK,
+ int /* instance_id */,
+ int /* message_id */,
+ gfx::Size /* repaint_view_size */)
+
+// A BrowserPlugin sends this to the browser process when it wants to navigate
+// to a given src URL. If a guest WebContents already exists, it will navigate
+// that WebContents. If not, it will create the WebContents, associate it with
+// the BrowserPlugin's browser-side BrowserPluginHost as a guest, and navigate
+// it to the requested URL.
+IPC_MESSAGE_ROUTED3(BrowserPluginHostMsg_NavigateOrCreateGuest,
+ int /* instance_id*/,
+ long long /* frame_id */,
+ std::string /* src */)
+
+// When a BrowserPlugin has been removed from the embedder's DOM, it informs
+// the browser process to cleanup the guest.
+IPC_MESSAGE_ROUTED1(BrowserPluginHostMsg_PluginDestroyed,
+ int /* instance_id */)
+
+// -----------------------------------------------------------------------------
+// These messages are from the guest renderer to the browser process
+
+IPC_STRUCT_BEGIN(BrowserPluginHostMsg_ResizeGuest_Params)
+ // A handle to the new buffer to use to transport damage to the
+ // embedder renderer process.
+ IPC_STRUCT_MEMBER(TransportDIB::Id, damage_buffer_id)
+ // The new width of the plugin container.
+ IPC_STRUCT_MEMBER(int, width)
+ // The new height of the plugin container.
+ IPC_STRUCT_MEMBER(int, height)
+ // Indicates whether the embedder is currently waiting on a ACK from the
+ // guest for a previous resize request.
+ IPC_STRUCT_MEMBER(bool, resize_pending)
+ // Indicates the scale factor of the embedder WebView.
+ IPC_STRUCT_MEMBER(float, scale_factor)
+IPC_STRUCT_END()
+
+// A embedder sends this message to the browser when it wants
+// to resize a guest plugin container so that the guest is relaid out
+// according to the new size.
+IPC_SYNC_MESSAGE_ROUTED2_0(BrowserPluginHostMsg_ResizeGuest,
+ int /* instance_id*/,
+ BrowserPluginHostMsg_ResizeGuest_Params)
+
+// -----------------------------------------------------------------------------
+// These messages are from the browser process to the embedder.
+
+// When the guest navigates, the browser process informs the embedder through
+// the BrowserPluginMsg_DidNavigate message.
+IPC_MESSAGE_CONTROL2(BrowserPluginMsg_DidNavigate,
+ int /* instance_id */,
+ GURL /* url */)
+
+// When the guest crashes, the browser process informs the embedder through this
+// message.
+IPC_MESSAGE_CONTROL1(BrowserPluginMsg_GuestCrashed,
+ int /* instance_id */)
+
+IPC_STRUCT_BEGIN(BrowserPluginMsg_UpdateRect_Params)
+ // The position and size of the bitmap.
+ IPC_STRUCT_MEMBER(gfx::Rect, bitmap_rect)
+
+ // The scroll offset. Only one of these can be non-zero, and if they are
+ // both zero, then it means there is no scrolling and the scroll_rect is
+ // ignored.
+ IPC_STRUCT_MEMBER(int, dx)
+ IPC_STRUCT_MEMBER(int, dy)
+
+ // The rectangular region to scroll.
+ IPC_STRUCT_MEMBER(gfx::Rect, scroll_rect)
+
+ // The scroll offset of the render view.
+ IPC_STRUCT_MEMBER(gfx::Point, scroll_offset)
+
+ // The regions of the bitmap (in view coords) that contain updated pixels.
+ // In the case of scrolling, this includes the scroll damage rect.
+ IPC_STRUCT_MEMBER(std::vector<gfx::Rect>, copy_rects)
+
+ // The size of the RenderView when this message was generated. This is
+ // included so the host knows how large the view is from the perspective of
+ // the renderer process. This is necessary in case a resize operation is in
+ // progress. If auto-resize is enabled, this should update the corresponding
+ // view size.
+ IPC_STRUCT_MEMBER(gfx::Size, view_size)
+
+ // All the above coordinates are in DIP. This is the scale factor needed
+ // to convert them to pixels.
+ IPC_STRUCT_MEMBER(float, scale_factor)
+
+ // Is this UpdateRect an ACK to a resize request?
+ IPC_STRUCT_MEMBER(bool, is_resize_ack)
+IPC_STRUCT_END()
+
+// When the user tabs to the end of the tab stops of a guest, the browser
+// process informs the embedder to tab out of the browser plugin.
+IPC_MESSAGE_CONTROL2(BrowserPluginMsg_AdvanceFocus,
+ int /* instance_id */,
+ bool /* reverse */)
+
+// The guest has damage it wants to convey to the embedder so that it can
+// update its backing store.
+IPC_MESSAGE_CONTROL3(BrowserPluginMsg_UpdateRect,
+ int /* instance_id */,
+ int /* message_id */,
+ BrowserPluginMsg_UpdateRect_Params)