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_view_host.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_view_host.cc')
-rw-r--r-- | chrome/browser/renderer_host/render_view_host.cc | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/chrome/browser/renderer_host/render_view_host.cc b/chrome/browser/renderer_host/render_view_host.cc index adfebaa..5bd9af5 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) { |