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 file, hence no include guard.
6
7#include "build/build_config.h"
8#include "content/common/content_export.h"
9#include "content/common/content_param_traits.h"
10#include "content/public/common/common_param_traits.h"
11#include "ipc/ipc_channel_handle.h"
12#include "ipc/ipc_message_macros.h"
13#include "ui/gfx/ipc/gfx_param_traits.h"
14#include "ui/gfx/native_widget_types.h"
15#include "ui/gfx/rect.h"
16
17#undef IPC_MESSAGE_EXPORT
18#define IPC_MESSAGE_EXPORT CONTENT_EXPORT
19
20#define IPC_MESSAGE_START PluginProcessMsgStart
21
22//-----------------------------------------------------------------------------
23// PluginProcess messages
24// These are messages sent from the browser to the plugin process.
25// Tells the plugin process to create a new channel for communication with a
26// given renderer.  The channel name is returned in a
27// PluginProcessHostMsg_ChannelCreated message.  The renderer ID is passed so
28// that the plugin process reuses an existing channel to that process if it
29// exists. This ID is a unique opaque identifier generated by the browser
30// process.
31IPC_MESSAGE_CONTROL2(PluginProcessMsg_CreateChannel,
32                     int /* renderer_id */,
33                     bool /* off_the_record */)
34
35// Tells the plugin process to notify every connected renderer of the pending
36// shutdown, so we don't mistake it for a crash.
37IPC_MESSAGE_CONTROL0(PluginProcessMsg_NotifyRenderersOfPendingShutdown)
38
39IPC_MESSAGE_CONTROL3(PluginProcessMsg_ClearSiteData,
40                     std::string /* site */,
41                     uint64 /* flags */,
42                     uint64 /* max_age */)
43
44
45//-----------------------------------------------------------------------------
46// PluginProcessHost messages
47// These are messages sent from the plugin process to the browser process.
48// Response to a PluginProcessMsg_CreateChannel message.
49IPC_MESSAGE_CONTROL1(PluginProcessHostMsg_ChannelCreated,
50                     IPC::ChannelHandle /* channel_handle */)
51
52IPC_MESSAGE_CONTROL1(PluginProcessHostMsg_ChannelDestroyed,
53                     int /* renderer_id */)
54
55IPC_MESSAGE_CONTROL1(PluginProcessHostMsg_ClearSiteDataResult,
56                     bool /* success */)
57
58#if defined(OS_WIN)
59// Destroys the given window's parent on the UI thread.
60IPC_MESSAGE_CONTROL2(PluginProcessHostMsg_PluginWindowDestroyed,
61                     HWND /* window */,
62                     HWND /* parent */)
63#endif
64
65#if defined(OS_MACOSX)
66// On Mac OS X, we need the browser to keep track of plugin windows so
67// that it can add and remove them from stacking groups, hide and show the
68// menu bar, etc.  We pass the window rect for convenience so that the
69// browser can easily tell if the window is fullscreen.
70
71// Notifies the browser that the plugin has shown a window.
72IPC_MESSAGE_CONTROL3(PluginProcessHostMsg_PluginShowWindow,
73                     uint32 /* window ID */,
74                     gfx::Rect /* window rect */,
75                     bool /* modal */)
76
77// Notifies the browser that the plugin has hidden a window.
78IPC_MESSAGE_CONTROL2(PluginProcessHostMsg_PluginHideWindow,
79                     uint32 /* window ID */,
80                     gfx::Rect /* window rect */)
81
82// Notifies the browser that a plugin instance has requested a cursor
83// visibility change.
84IPC_MESSAGE_CONTROL1(PluginProcessHostMsg_PluginSetCursorVisibility,
85                     bool /* cursor visibility */)
86#endif
87