diff options
Diffstat (limited to 'chrome/common/plugin_messages.h')
-rw-r--r-- | chrome/common/plugin_messages.h | 352 |
1 files changed, 169 insertions, 183 deletions
diff --git a/chrome/common/plugin_messages.h b/chrome/common/plugin_messages.h index 025acc2..793dde3 100644 --- a/chrome/common/plugin_messages.h +++ b/chrome/common/plugin_messages.h @@ -15,14 +15,11 @@ #include "base/gfx/rect.h" #include "base/basictypes.h" -#include "chrome/common/ipc_message.h" #include "chrome/common/ipc_message_utils.h" #include "googleurl/src/gurl.h" #include "third_party/npapi/bindings/npapi.h" #include "webkit/glue/npruntime_util.h" -void PluginMessagesInit(); - // Name prefix of the event handle when a message box is displayed. #define kMessageBoxEventPrefix L"message_box_active" @@ -38,95 +35,11 @@ struct PluginMsg_Init_Params { HANDLE modal_dialog_event; }; -struct PluginHostMsg_URLRequest_Params { - std::string method; - bool is_javascript_url; - std::string target; - std::vector<char> buffer; - bool is_file_data; - bool notify; - std::string url; - HANDLE notify_data; - bool popups_allowed; -}; - -struct PluginMsg_URLRequestReply_Params { - int resource_id; - std::string url; - bool notify_needed; - HANDLE notify_data; - HANDLE stream; -}; - -struct PluginMsg_PrintResponse_Params { - HANDLE shared_memory; - size_t size; -}; - -struct PluginMsg_DidReceiveResponseParams { - int id; - std::string mime_type; - std::string headers; - uint32 expected_length; - uint32 last_modified; - bool request_is_seekable; -}; - -struct NPIdentifier_Param { - NPIdentifier identifier; -}; - -enum NPVariant_ParamEnum { - NPVARIANT_PARAM_VOID, - NPVARIANT_PARAM_NULL, - NPVARIANT_PARAM_BOOL, - NPVARIANT_PARAM_INT, - NPVARIANT_PARAM_DOUBLE, - NPVARIANT_PARAM_STRING, - // Used when when the NPObject is running in the caller's process, so we - // create an NPObjectProxy in the other process. - NPVARIANT_PARAM_OBJECT_ROUTING_ID, - // Used when the NPObject we're sending is running in the callee's process - // (i.e. we have an NPObjectProxy for it). In that case we want the callee - // to just use the raw pointer. - NPVARIANT_PARAM_OBJECT_POINTER, -}; - -struct NPVariant_Param { - NPVariant_ParamEnum type; - bool bool_value; - int int_value; - double double_value; - std::string string_value; - int npobject_routing_id; - void* npobject_pointer; -}; - - -#define IPC_MESSAGE_MACROS_ENUMS -#include "chrome/common/plugin_messages_internal.h" - -#ifdef IPC_MESSAGE_MACROS_LOG_ENABLED -# undef IPC_MESSAGE_MACROS_LOG -# define IPC_MESSAGE_MACROS_CLASSES - -# include "chrome/common/plugin_messages_internal.h" -# define IPC_MESSAGE_MACROS_LOG -# undef IPC_MESSAGE_MACROS_CLASSES - -# include "chrome/common/plugin_messages_internal.h" -#else -# define IPC_MESSAGE_MACROS_CLASSES -# include "chrome/common/plugin_messages_internal.h" -#endif - -namespace IPC { - // Traits for PluginMsg_Init_Params structure to pack/unpack. template <> struct ParamTraits<PluginMsg_Init_Params> { typedef PluginMsg_Init_Params param_type; - static void Write(Message* m, const param_type& p) { + static void Write(IPC::Message* m, const param_type& p) { WriteParam(m, p.containing_window); WriteParam(m, p.url); DCHECK(p.arg_names.size() == p.arg_values.size()); @@ -135,7 +48,7 @@ struct ParamTraits<PluginMsg_Init_Params> { WriteParam(m, p.load_manually); WriteParam(m, p.modal_dialog_event); } - static bool Read(const Message* m, void** iter, param_type* p) { + static bool Read(const IPC::Message* m, void** iter, param_type* p) { return ReadParam(m, iter, &p->containing_window) && ReadParam(m, iter, &p->url) && ReadParam(m, iter, &p->arg_names) && @@ -160,10 +73,23 @@ struct ParamTraits<PluginMsg_Init_Params> { } }; + +struct PluginHostMsg_URLRequest_Params { + std::string method; + bool is_javascript_url; + std::string target; + std::vector<char> buffer; + bool is_file_data; + bool notify; + std::string url; + HANDLE notify_data; + bool popups_allowed; +}; + template <> struct ParamTraits<PluginHostMsg_URLRequest_Params> { typedef PluginHostMsg_URLRequest_Params param_type; - static void Write(Message* m, const param_type& p) { + static void Write(IPC::Message* m, const param_type& p) { WriteParam(m, p.method); WriteParam(m, p.is_javascript_url); WriteParam(m, p.target); @@ -174,7 +100,7 @@ struct ParamTraits<PluginHostMsg_URLRequest_Params> { WriteParam(m, p.notify_data); WriteParam(m, p.popups_allowed); } - static bool Read(const Message* m, void** iter, param_type* p) { + static bool Read(const IPC::Message* m, void** iter, param_type* p) { return ReadParam(m, iter, &p->method) && ReadParam(m, iter, &p->is_javascript_url) && @@ -209,17 +135,26 @@ struct ParamTraits<PluginHostMsg_URLRequest_Params> { } }; + +struct PluginMsg_URLRequestReply_Params { + int resource_id; + std::string url; + bool notify_needed; + HANDLE notify_data; + HANDLE stream; +}; + template <> struct ParamTraits<PluginMsg_URLRequestReply_Params> { typedef PluginMsg_URLRequestReply_Params param_type; - static void Write(Message* m, const param_type& p) { + static void Write(IPC::Message* m, const param_type& p) { WriteParam(m, p.resource_id); WriteParam(m, p.url); WriteParam(m, p.notify_needed); WriteParam(m, p.notify_data); WriteParam(m, p.stream); } - static bool Read(const Message* m, void** iter, param_type* p) { + static bool Read(const IPC::Message* m, void** iter, param_type* p) { return ReadParam(m, iter, &p->resource_id) && ReadParam(m, iter, &p->url) && @@ -242,14 +177,20 @@ struct ParamTraits<PluginMsg_URLRequestReply_Params> { } }; + +struct PluginMsg_PrintResponse_Params { + HANDLE shared_memory; + size_t size; +}; + template <> struct ParamTraits<PluginMsg_PrintResponse_Params> { typedef PluginMsg_PrintResponse_Params param_type; - static void Write(Message* m, const param_type& p) { + static void Write(IPC::Message* m, const param_type& p) { WriteParam(m, p.shared_memory); WriteParam(m, p.size); } - static bool Read(const Message* m, void** iter, param_type* r) { + static bool Read(const IPC::Message* m, void** iter, param_type* r) { return ReadParam(m, iter, &r->shared_memory) && ReadParam(m, iter, &r->size); @@ -258,10 +199,20 @@ struct ParamTraits<PluginMsg_PrintResponse_Params> { } }; + +struct PluginMsg_DidReceiveResponseParams { + int id; + std::string mime_type; + std::string headers; + uint32 expected_length; + uint32 last_modified; + bool request_is_seekable; +}; + template <> struct ParamTraits<PluginMsg_DidReceiveResponseParams> { typedef PluginMsg_DidReceiveResponseParams param_type; - static void Write(Message* m, const param_type& p) { + static void Write(IPC::Message* m, const param_type& p) { WriteParam(m, p.id); WriteParam(m, p.mime_type); WriteParam(m, p.headers); @@ -269,7 +220,7 @@ struct ParamTraits<PluginMsg_DidReceiveResponseParams> { WriteParam(m, p.last_modified); WriteParam(m, p.request_is_seekable); } - static bool Read(const Message* m, void** iter, param_type* r) { + static bool Read(const IPC::Message* m, void** iter, param_type* r) { return ReadParam(m, iter, &r->id) && ReadParam(m, iter, &r->mime_type) && @@ -295,97 +246,18 @@ struct ParamTraits<PluginMsg_DidReceiveResponseParams> { } }; -template <> -struct ParamTraits<NPEvent> { - typedef NPEvent param_type; - static void Write(Message* m, const param_type& p) { - m->WriteData(reinterpret_cast<const char*>(&p), sizeof(NPEvent)); - } - static bool Read(const Message* m, void** iter, param_type* r) { - const char *data; - int data_size = 0; - bool result = m->ReadData(iter, &data, &data_size); - if (!result || data_size != sizeof(NPEvent)) { - NOTREACHED(); - return false; - } - memcpy(r, data, sizeof(NPEvent)); - return true; - } - static void Log(const param_type& p, std::wstring* l) { - std::wstring event, wparam, lparam; - lparam = StringPrintf(L"(%d, %d)", LOWORD(p.lParam), HIWORD(p.lParam)); - switch(p.event) { - case WM_KEYDOWN: - event = L"WM_KEYDOWN"; - wparam = StringPrintf(L"%d", p.wParam); - lparam = StringPrintf(L"%d", p.lParam); - break; - case WM_KEYUP: - event = L"WM_KEYDOWN"; - wparam = StringPrintf(L"%d", p.wParam); - lparam = StringPrintf(L"%x", p.lParam); - break; - case WM_MOUSEMOVE: - event = L"WM_MOUSEMOVE"; - if (p.wParam & MK_LBUTTON) { - wparam = L"MK_LBUTTON"; - } else if (p.wParam & MK_MBUTTON) { - wparam = L"MK_MBUTTON"; - } else if (p.wParam & MK_RBUTTON) { - wparam = L"MK_RBUTTON"; - } - break; - case WM_LBUTTONDOWN: - event = L"WM_LBUTTONDOWN"; - break; - case WM_MBUTTONDOWN: - event = L"WM_MBUTTONDOWN"; - break; - case WM_RBUTTONDOWN: - event = L"WM_RBUTTONDOWN"; - break; - case WM_LBUTTONUP: - event = L"WM_LBUTTONUP"; - break; - case WM_MBUTTONUP: - event = L"WM_MBUTTONUP"; - break; - case WM_RBUTTONUP: - event = L"WM_RBUTTONUP"; - break; - } - - if (p.wParam & MK_CONTROL) { - if (!wparam.empty()) - wparam += L" "; - wparam += L"MK_CONTROL"; - } - - if (p.wParam & MK_SHIFT) { - if (!wparam.empty()) - wparam += L" "; - wparam += L"MK_SHIFT"; - } - - l->append(L"("); - LogParam(event, l); - l->append(L", "); - LogParam(wparam, l); - l->append(L", "); - LogParam(lparam, l); - l->append(L")"); - } +struct NPIdentifier_Param { + NPIdentifier identifier; }; template <> struct ParamTraits<NPIdentifier_Param> { typedef NPIdentifier_Param param_type; - static void Write(Message* m, const param_type& p) { + static void Write(IPC::Message* m, const param_type& p) { webkit_glue::SerializeNPIdentifier(p.identifier, m); } - static bool Read(const Message* m, void** iter, param_type* r) { + static bool Read(const IPC::Message* m, void** iter, param_type* r) { return webkit_glue::DeserializeNPIdentifier(*m, iter, &r->identifier); } static void Log(const param_type& p, std::wstring* l) { @@ -399,10 +271,37 @@ struct ParamTraits<NPIdentifier_Param> { } }; + +enum NPVariant_ParamEnum { + NPVARIANT_PARAM_VOID, + NPVARIANT_PARAM_NULL, + NPVARIANT_PARAM_BOOL, + NPVARIANT_PARAM_INT, + NPVARIANT_PARAM_DOUBLE, + NPVARIANT_PARAM_STRING, + // Used when when the NPObject is running in the caller's process, so we + // create an NPObjectProxy in the other process. + NPVARIANT_PARAM_OBJECT_ROUTING_ID, + // Used when the NPObject we're sending is running in the callee's process + // (i.e. we have an NPObjectProxy for it). In that case we want the callee + // to just use the raw pointer. + NPVARIANT_PARAM_OBJECT_POINTER, +}; + +struct NPVariant_Param { + NPVariant_ParamEnum type; + bool bool_value; + int int_value; + double double_value; + std::string string_value; + int npobject_routing_id; + void* npobject_pointer; +}; + template <> struct ParamTraits<NPVariant_Param> { typedef NPVariant_Param param_type; - static void Write(Message* m, const param_type& p) { + static void Write(IPC::Message* m, const param_type& p) { WriteParam(m, static_cast<int>(p.type)); if (p.type == NPVARIANT_PARAM_BOOL) { WriteParam(m, p.bool_value); @@ -425,7 +324,7 @@ struct ParamTraits<NPVariant_Param> { DCHECK(p.type == NPVARIANT_PARAM_VOID || p.type == NPVARIANT_PARAM_NULL); } } - static bool Read(const Message* m, void** iter, param_type* r) { + static bool Read(const IPC::Message* m, void** iter, param_type* r) { int type; if (!ReadParam(m, iter, &type)) return false; @@ -473,7 +372,94 @@ struct ParamTraits<NPVariant_Param> { } }; -} // namespace IPC + +template <> +struct ParamTraits<NPEvent> { + typedef NPEvent param_type; + static void Write(IPC::Message* m, const param_type& p) { + m->WriteData(reinterpret_cast<const char*>(&p), sizeof(NPEvent)); + } + static bool Read(const IPC::Message* m, void** iter, param_type* r) { + const char *data; + int data_size = 0; + bool result = m->ReadData(iter, &data, &data_size); + if (!result || data_size != sizeof(NPEvent)) { + NOTREACHED(); + return false; + } + + memcpy(r, data, sizeof(NPEvent)); + return true; + } + static void Log(const param_type& p, std::wstring* l) { + std::wstring event, wparam, lparam; + lparam = StringPrintf(L"(%d, %d)", LOWORD(p.lParam), HIWORD(p.lParam)); + switch(p.event) { + case WM_KEYDOWN: + event = L"WM_KEYDOWN"; + wparam = StringPrintf(L"%d", p.wParam); + lparam = StringPrintf(L"%d", p.lParam); + break; + case WM_KEYUP: + event = L"WM_KEYDOWN"; + wparam = StringPrintf(L"%d", p.wParam); + lparam = StringPrintf(L"%x", p.lParam); + break; + case WM_MOUSEMOVE: + event = L"WM_MOUSEMOVE"; + if (p.wParam & MK_LBUTTON) { + wparam = L"MK_LBUTTON"; + } else if (p.wParam & MK_MBUTTON) { + wparam = L"MK_MBUTTON"; + } else if (p.wParam & MK_RBUTTON) { + wparam = L"MK_RBUTTON"; + } + break; + case WM_LBUTTONDOWN: + event = L"WM_LBUTTONDOWN"; + break; + case WM_MBUTTONDOWN: + event = L"WM_MBUTTONDOWN"; + break; + case WM_RBUTTONDOWN: + event = L"WM_RBUTTONDOWN"; + break; + case WM_LBUTTONUP: + event = L"WM_LBUTTONUP"; + break; + case WM_MBUTTONUP: + event = L"WM_MBUTTONUP"; + break; + case WM_RBUTTONUP: + event = L"WM_RBUTTONUP"; + break; + } + + if (p.wParam & MK_CONTROL) { + if (!wparam.empty()) + wparam += L" "; + wparam += L"MK_CONTROL"; + } + + if (p.wParam & MK_SHIFT) { + if (!wparam.empty()) + wparam += L" "; + wparam += L"MK_SHIFT"; + } + + l->append(L"("); + LogParam(event, l); + l->append(L", "); + LogParam(wparam, l); + l->append(L", "); + LogParam(lparam, l); + l->append(L")"); + } +}; + + +#define MESSAGES_INTERNAL_FILE "chrome/common/plugin_messages_internal.h" +#include "chrome/common/ipc_message_macros.h" #endif // CHROME_COMMON_PLUGIN_MESSAGES_H__ |