diff options
author | ananta@chromium.org <ananta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-09 04:30:30 +0000 |
---|---|---|
committer | ananta@chromium.org <ananta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-09 04:30:30 +0000 |
commit | 1b9af295f86b846582f96277bdba05d98bc3d2f4 (patch) | |
tree | 1241b0a0dfbdac3d6b941198068b8c9f8d30c5d9 /chrome/common | |
parent | 3222e481e8bd6e542419d6d97ae26382f571e71d (diff) | |
download | chromium_src-1b9af295f86b846582f96277bdba05d98bc3d2f4.zip chromium_src-1b9af295f86b846582f96277bdba05d98bc3d2f4.tar.gz chromium_src-1b9af295f86b846582f96277bdba05d98bc3d2f4.tar.bz2 |
Windowed plugins like Flash would cause the hung plugin dialog to show up when the print dialog was displayed.
The proposed fix is to signal the modal dialog event which would ensure that the renderer and plugins both pump
messages when the print dialog is displayed.
This fixes http://code.google.com/p/chromium/issues/detail?id=13804
Bug=13804
Review URL: http://codereview.chromium.org/155133
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@20243 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/common')
-rw-r--r-- | chrome/common/render_messages.h | 44 | ||||
-rw-r--r-- | chrome/common/render_messages_internal.h | 9 |
2 files changed, 47 insertions, 6 deletions
diff --git a/chrome/common/render_messages.h b/chrome/common/render_messages.h index 8cd4280..b2fd1f9 100644 --- a/chrome/common/render_messages.h +++ b/chrome/common/render_messages.h @@ -397,6 +397,15 @@ struct ViewHostMsg_ShowPopup_Params { std::vector<WebMenuItem> popup_items; }; +// Parameters for the IPC message ViewHostMsg_ScriptedPrint +struct ViewHostMsg_ScriptedPrint_Params { + int routing_id; + gfx::NativeViewId host_window_id; + int cookie; + int expected_pages_count; + bool has_selection; +}; + namespace IPC { template <> @@ -1913,6 +1922,41 @@ struct ParamTraits<ViewHostMsg_ShowPopup_Params> { } }; +// Traits for ViewHostMsg_ScriptedPrint_Params. +template <> +struct ParamTraits<ViewHostMsg_ScriptedPrint_Params> { + typedef ViewHostMsg_ScriptedPrint_Params param_type; + static void Write(Message* m, const param_type& p) { + WriteParam(m, p.routing_id); + WriteParam(m, p.host_window_id); + WriteParam(m, p.cookie); + WriteParam(m, p.expected_pages_count); + WriteParam(m, p.has_selection); + } + static bool Read(const Message* m, void** iter, param_type* p) { + return + ReadParam(m, iter, &p->routing_id) && + ReadParam(m, iter, &p->host_window_id) && + ReadParam(m, iter, &p->cookie) && + ReadParam(m, iter, &p->expected_pages_count) && + ReadParam(m, iter, &p->has_selection); + } + static void Log(const param_type& p, std::wstring* l) { + l->append(L"("); + LogParam(p.routing_id, l); + l->append(L", "); + LogParam(p.host_window_id, l); + l->append(L", "); + LogParam(p.cookie, l); + l->append(L", "); + LogParam(p.expected_pages_count, l); + l->append(L", "); + LogParam(p.has_selection, l); + l->append(L")"); + } +}; + + } // namespace IPC diff --git a/chrome/common/render_messages_internal.h b/chrome/common/render_messages_internal.h index a674ad2..5938bc1 100644 --- a/chrome/common/render_messages_internal.h +++ b/chrome/common/render_messages_internal.h @@ -1081,12 +1081,9 @@ IPC_BEGIN_MESSAGES(ViewHost) // by javascript. This step is about showing UI to the user to select the // final print settings. The output parameter is the same as // ViewMsg_PrintPages which is executed implicitly. - IPC_SYNC_MESSAGE_ROUTED4_1(ViewHostMsg_ScriptedPrint, - gfx::NativeViewId /* host_window */, - int /* cookie */, - int /* expected_pages_count */, - bool /* has_selection */, - ViewMsg_PrintPages_Params /* settings choosen by + IPC_SYNC_MESSAGE_CONTROL1_1(ViewHostMsg_ScriptedPrint, + ViewHostMsg_ScriptedPrint_Params, + ViewMsg_PrintPages_Params /* settings choosen by the user*/) #endif // defined(OS_WIN) |