summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/render_view.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/renderer/render_view.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/renderer/render_view.cc')
-rw-r--r--chrome/renderer/render_view.cc30
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 =