summaryrefslogtreecommitdiffstats
path: root/chrome/browser/renderer_host/render_widget_helper.cc
diff options
context:
space:
mode:
authoragl@chromium.org <agl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-01-27 21:39:15 +0000
committeragl@chromium.org <agl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-01-27 21:39:15 +0000
commit18bcc3c1e8ac29683e6d09a9c2d8b3037b0fb360 (patch)
treec1941e26ff0fa733258e7c91d2f84ad436df6963 /chrome/browser/renderer_host/render_widget_helper.cc
parentab58e6cec813b33eefb397be3cebc11fcc280bdf (diff)
downloadchromium_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.cc25
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));