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/renderer/render_view.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/renderer/render_view.cc')
-rw-r--r-- | chrome/renderer/render_view.cc | 30 |
1 files changed, 8 insertions, 22 deletions
diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc index 1d3d7af..1544198 100644 --- a/chrome/renderer/render_view.cc +++ b/chrome/renderer/render_view.cc @@ -10,6 +10,7 @@ #include "base/command_line.h" #include "base/gfx/png_encoder.h" +#include "base/gfx/native_widget_types.h" #include "base/string_piece.h" #include "base/string_util.h" #include "build/build_config.h" @@ -210,7 +211,7 @@ RenderView::~RenderView() { /*static*/ RenderView* RenderView::Create( RenderThreadBase* render_thread, - HWND parent_hwnd, + gfx::NativeViewId parent_hwnd, base::WaitableEvent* modal_dialog_event, int32 opener_id, const WebPreferences& webkit_prefs, @@ -266,7 +267,7 @@ void RenderView::JSOutOfMemory() { Send(new ViewHostMsg_JSOutOfMemory(routing_id_)); } -void RenderView::Init(HWND parent_hwnd, +void RenderView::Init(gfx::NativeViewId parent_hwnd, base::WaitableEvent* modal_dialog_event, int32 opener_id, const WebPreferences& webkit_prefs, @@ -425,14 +426,8 @@ void RenderView::OnMessageReceived(const IPC::Message& message) { // Got a response from the browser after the renderer decided to create a new // view. -void RenderView::OnCreatingNewAck -#if defined(OS_WIN) - (HWND parent) { +void RenderView::OnCreatingNewAck(gfx::NativeViewId parent) { CompleteInit(parent); -#else - () { -#endif - waiting_for_create_window_ack_ = false; while (!queued_resource_messages_.empty()) { @@ -1854,29 +1849,19 @@ WebView* RenderView::CreateWebView(WebView* webview, bool user_gesture) { int32 routing_id = MSG_ROUTING_NONE; -#if defined(OS_WIN) - HANDLE modal_dialog_event = NULL; + ModalDialogEvent modal_dialog_event; render_thread_->Send( new ViewHostMsg_CreateWindow(routing_id_, user_gesture, &routing_id, &modal_dialog_event)); if (routing_id == MSG_ROUTING_NONE) { - DCHECK(modal_dialog_event == NULL); return NULL; } -#else // defined(OS_WIN) - // On POSIX we don't have a HANDLE parameter as we don't have cross process - // events. All platforms should be ported across to this at some point. - render_thread_->Send( - new ViewHostMsg_CreateWindow(routing_id_, user_gesture, &routing_id)); - if (routing_id == MSG_ROUTING_NONE) - return NULL; -#endif // The WebView holds a reference to this new RenderView const WebPreferences& prefs = webview->GetPreferences(); base::WaitableEvent* waitable_event = new base::WaitableEvent #if defined(OS_WIN) - (modal_dialog_event); + (modal_dialog_event.event); #else (true, false); #endif @@ -1946,7 +1931,8 @@ WebPluginDelegate* RenderView::CreatePluginDelegate( if (is_gears) ChromePluginLib::Create(path, GetCPBrowserFuncsForRenderer()); return WebPluginDelegateImpl::Create(path, - mime_type_to_use, host_window_); + mime_type_to_use, + gfx::NativeViewFromId(host_window_)); } WebPluginDelegateProxy* proxy = |