diff options
author | agl@chromium.org <agl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-01-27 21:39:15 +0000 |
---|---|---|
committer | agl@chromium.org <agl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-01-27 21:39:15 +0000 |
commit | 18bcc3c1e8ac29683e6d09a9c2d8b3037b0fb360 (patch) | |
tree | c1941e26ff0fa733258e7c91d2f84ad436df6963 /chrome/browser/renderer_host/render_widget_helper.cc | |
parent | ab58e6cec813b33eefb397be3cebc11fcc280bdf (diff) | |
download | chromium_src-18bcc3c1e8ac29683e6d09a9c2d8b3037b0fb360.zip chromium_src-18bcc3c1e8ac29683e6d09a9c2d8b3037b0fb360.tar.gz chromium_src-18bcc3c1e8ac29683e6d09a9c2d8b3037b0fb360.tar.bz2 |
POSIX: gfx::NativeViewId and CrossProcessEvent
Create a couple new typedefs for porting work. Firstly,
gfx::NativeViewId is a handle to a platform specific widget in the
renderer process. For Windows, this is just a HWND as before. However,
in other platforms the ids used in the renderer process will be
something else.
CrossProcessEvent is the type of a HANDLE to a Windows event object
which is used across processes. Since we aren't going to support these
sorts of events on non-Windows platforms, this will have to go away at
some point. For now, however, this lets us build code without too many
ifdefs all over the place.
Review URL: http://codereview.chromium.org/18768
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@8756 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/renderer_host/render_widget_helper.cc')
-rw-r--r-- | chrome/browser/renderer_host/render_widget_helper.cc | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/chrome/browser/renderer_host/render_widget_helper.cc b/chrome/browser/renderer_host/render_widget_helper.cc index d92ff301..85da6dd 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)); |