| Index: chrome/browser/renderer_host/render_view_host.cc
|
| diff --git a/chrome/browser/renderer_host/render_view_host.cc b/chrome/browser/renderer_host/render_view_host.cc
|
| index adfebaa6425eeb0af4dce123771efd37035c8cba..5bd9af56f74004c22e93602d6708ba33cb010105 100644
|
| --- a/chrome/browser/renderer_host/render_view_host.cc
|
| +++ b/chrome/browser/renderer_host/render_view_host.cc
|
| @@ -7,6 +7,7 @@
|
| #include <string>
|
| #include <vector>
|
|
|
| +#include "base/gfx/native_widget_types.h"
|
| #include "base/string_util.h"
|
| #include "base/waitable_event.h"
|
| #include "chrome/app/result_codes.h"
|
| @@ -129,7 +130,8 @@ bool RenderViewHost::CreateRenderView() {
|
|
|
| renderer_initialized_ = true;
|
|
|
| - HANDLE modal_dialog_event;
|
| +#if defined(OS_WIN)
|
| + HANDLE modal_dialog_event_handle;
|
| HANDLE renderer_process_handle = process()->process().handle();
|
| if (renderer_process_handle == NULL)
|
| renderer_process_handle = GetCurrentProcess();
|
| @@ -137,14 +139,21 @@ bool RenderViewHost::CreateRenderView() {
|
| BOOL result = DuplicateHandle(GetCurrentProcess(),
|
| modal_dialog_event_->handle(),
|
| renderer_process_handle,
|
| - &modal_dialog_event,
|
| + &modal_dialog_event_handle,
|
| SYNCHRONIZE,
|
| FALSE,
|
| 0);
|
| DCHECK(result) << "Couldn't duplicate the modal dialog handle for the renderer.";
|
| +#endif
|
|
|
| DCHECK(view());
|
| - Send(new ViewMsg_New(view()->GetPluginHWND(),
|
| +
|
| + ModalDialogEvent modal_dialog_event;
|
| +#if defined(OS_WIN)
|
| + modal_dialog_event.event = modal_dialog_event_handle;
|
| +#endif
|
| +
|
| + Send(new ViewMsg_New(gfx::IdFromNativeView(view()->GetPluginHWND()),
|
| modal_dialog_event,
|
| delegate_->GetWebkitPrefs(),
|
| routing_id()));
|
| @@ -751,11 +760,17 @@ void RenderViewHost::Shutdown() {
|
| }
|
|
|
| void RenderViewHost::OnMsgCreateWindow(int route_id,
|
| - HANDLE modal_dialog_event) {
|
| + ModalDialogEvent modal_dialog_event) {
|
| RenderViewHostDelegate::View* view = delegate_->GetViewDelegate();
|
| + base::WaitableEvent* waitable_event = new base::WaitableEvent(
|
| +#if defined(OS_WIN)
|
| + modal_dialog_event.event);
|
| +#else
|
| + true, false);
|
| +#endif
|
| +
|
| if (view)
|
| - view->CreateNewWindow(route_id,
|
| - new base::WaitableEvent(modal_dialog_event));
|
| + view->CreateNewWindow(route_id, waitable_event);
|
| }
|
|
|
| void RenderViewHost::OnMsgCreateWidget(int route_id, bool activatable) {
|
|
|