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.
5 #ifndef PPAPI_HOST_HOST_MESSAGE_CONTEXT_H_
6 #define PPAPI_HOST_HOST_MESSAGE_CONTEXT_H_
8 #include "ipc/ipc_message.h"
9 #include "ppapi/host/ppapi_host_export.h"
10 #include "ppapi/proxy/resource_message_params.h"
15 // This context structure provides information about outgoing resource message
17 struct PPAPI_HOST_EXPORT ReplyMessageContext
{
18 ReplyMessageContext();
20 const ppapi::proxy::ResourceMessageReplyParams
& cp
,
21 IPC::Message
* sync_reply_msg
,
23 ~ReplyMessageContext();
25 // Returns a value indicating whether this context is valid or "null".
26 bool is_valid() const { return params
.pp_resource() != 0; }
28 // The "reply params" struct with the same resource and sequence number
29 // as the original resource message call.
30 ppapi::proxy::ResourceMessageReplyParams params
;
32 // If this context is generated from a sync message, this will be set to the
33 // incoming sync message. Otherwise, it will be NULL. The plugin controls
34 // whether or not the resource call is synchronous or asynchronous so a
35 // ResoureHost cannot make any assumptions about whether or not this is NULL.
36 IPC::Message
* sync_reply_msg
;
38 // Routing ID to be used when sending a reply message. This is only useful
39 // when the plugin is in-process. Otherwise, the value will be
44 // This context structure provides information about incoming resource message
45 // call requests when passed to resources.
46 struct PPAPI_HOST_EXPORT HostMessageContext
{
47 explicit HostMessageContext(
48 const ppapi::proxy::ResourceMessageCallParams
& cp
);
51 const ppapi::proxy::ResourceMessageCallParams
& cp
);
53 const ppapi::proxy::ResourceMessageCallParams
& cp
,
54 IPC::Message
* sync_reply_msg
);
55 ~HostMessageContext();
57 // Returns a reply message context struct which includes the reply params.
58 ReplyMessageContext
MakeReplyMessageContext() const;
60 // The original call parameters passed to the resource message call. This
61 // cannot be a reference because this object may be passed to another thread.
62 ppapi::proxy::ResourceMessageCallParams params
;
64 // The reply message. If the params has the callback flag set, this message
65 // will be sent in reply. It is initialized to the empty message. If the
66 // handler wants to send something else, it should just assign the message
67 // it wants to this value.
68 IPC::Message reply_msg
;
70 // If this context is generated from a sync message, this will be set to the
71 // incoming sync message. Otherwise, it will be NULL.
72 IPC::Message
* sync_reply_msg
;
74 // Routing ID to be used when sending a reply message. This is only useful
75 // when the plugin is in-process. Otherwise, the value will be
83 #endif // PPAPI_HOST_HOST_MESSAGE_CONTEXT_H_