summaryrefslogtreecommitdiffstats
path: root/chrome/browser/renderer_host/render_view_host.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_view_host.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_view_host.cc')
-rw-r--r--chrome/browser/renderer_host/render_view_host.cc27
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) {