Index: chrome/browser/renderer_host/render_widget_helper.cc |
diff --git a/chrome/browser/renderer_host/render_widget_helper.cc b/chrome/browser/renderer_host/render_widget_helper.cc |
index d92ff301e3d49b4cde1032735ba03d12c97992a9..85da6dd25b841b652101eaaacb9c348e71e61ef9 100644 |
--- a/chrome/browser/renderer_host/render_widget_helper.cc |
+++ b/chrome/browser/renderer_host/render_widget_helper.cc |
@@ -189,37 +189,36 @@ void RenderWidgetHelper::OnCrossSiteClosePageACK( |
void RenderWidgetHelper::CreateNewWindow(int opener_id, |
bool user_gesture, |
base::ProcessHandle render_process, |
- int* route_id |
-#if defined(OS_WIN) |
- , HANDLE* modal_dialog_event) { |
-#else |
- ) { |
-#endif |
+ int* route_id, |
+ ModalDialogEvent* modal_dialog_event) { |
if (!user_gesture && block_popups_) { |
*route_id = MSG_ROUTING_NONE; |
- *modal_dialog_event = NULL; |
+#if defined(OS_WIN) |
+ modal_dialog_event->event = NULL; |
+#endif |
return; |
} |
*route_id = GetNextRoutingID(); |
+ ModalDialogEvent modal_dialog_event_internal; |
#if defined(OS_WIN) |
HANDLE event = CreateEvent(NULL, TRUE, FALSE, NULL); |
+ modal_dialog_event_internal.event = event; |
+ |
BOOL result = DuplicateHandle(GetCurrentProcess(), |
event, |
render_process, |
- modal_dialog_event, |
+ &modal_dialog_event->event, |
SYNCHRONIZE, |
FALSE, |
0); |
DCHECK(result) << "Couldn't duplicate modal dialog event for the renderer."; |
+#endif |
// The easiest way to reach RenderViewHost is just to send a routed message. |
- ViewHostMsg_CreateWindowWithRoute msg(opener_id, *route_id, event); |
-#else |
- // TODO(port) figure out how the modal dialog event should work. |
- ViewHostMsg_CreateWindowWithRoute msg(opener_id, *route_id); |
-#endif |
+ ViewHostMsg_CreateWindowWithRoute msg(opener_id, *route_id, |
+ modal_dialog_event_internal); |
ui_loop_->PostTask(FROM_HERE, NewRunnableMethod( |
this, &RenderWidgetHelper::OnSimulateReceivedMessage, msg)); |