summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser')
-rw-r--r--chrome/browser/download/download_file.h4
-rw-r--r--chrome/browser/renderer_host/render_view_host.cc27
-rw-r--r--chrome/browser/renderer_host/render_view_host.h3
-rw-r--r--chrome/browser/renderer_host/render_widget_helper.cc25
-rw-r--r--chrome/browser/renderer_host/render_widget_helper.h8
-rw-r--r--chrome/browser/renderer_host/render_widget_host.cc3
-rw-r--r--chrome/browser/renderer_host/render_widget_host_view.h5
-rw-r--r--chrome/browser/resource_message_filter.cc27
-rw-r--r--chrome/browser/resource_message_filter.h12
9 files changed, 68 insertions, 46 deletions
diff --git a/chrome/browser/download/download_file.h b/chrome/browser/download/download_file.h
index ea74318..8811005 100644
--- a/chrome/browser/download/download_file.h
+++ b/chrome/browser/download/download_file.h
@@ -45,6 +45,7 @@
#include <vector>
#include "base/basictypes.h"
+#include "base/gfx/native_widget_types.h"
#include "base/hash_tables.h"
#include "base/lock.h"
#include "base/ref_counted.h"
@@ -196,7 +197,8 @@ class DownloadFileManager
void OnShowDownloadInShell(const FilePath& full_path);
// Handler to open or execute a downloaded file.
void OnOpenDownloadInShell(const FilePath& full_path,
- const std::wstring& url, HWND parent_window);
+ const std::wstring& url,
+ gfx::NativeView parent_window);
// The download manager has provided a final name for a download. Sent from
// the UI thread and run on the download thread.
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) {
diff --git a/chrome/browser/renderer_host/render_view_host.h b/chrome/browser/renderer_host/render_view_host.h
index f4c40ed..0c968e4 100644
--- a/chrome/browser/renderer_host/render_view_host.h
+++ b/chrome/browser/renderer_host/render_view_host.h
@@ -11,6 +11,7 @@
#include "base/scoped_ptr.h"
#include "chrome/browser/renderer_host/render_view_host_delegate.h"
#include "chrome/browser/renderer_host/render_widget_host.h"
+#include "chrome/common/modal_dialog_event.h"
#include "chrome/common/page_zoom.h"
#ifdef CHROME_PERSONALIZATION
#include "chrome/personalization/personalization.h"
@@ -416,7 +417,7 @@ class RenderViewHost : public RenderWidgetHost {
virtual void NotifyRendererResponsive();
// IPC message handlers.
- void OnMsgCreateWindow(int route_id, HANDLE modal_dialog_event);
+ void OnMsgCreateWindow(int route_id, ModalDialogEvent modal_dialog_event);
void OnMsgCreateWidget(int route_id, bool activatable);
void OnMsgShowView(int route_id,
WindowOpenDisposition disposition,
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));
diff --git a/chrome/browser/renderer_host/render_widget_helper.h b/chrome/browser/renderer_host/render_widget_helper.h
index b73ce03..83cedb0 100644
--- a/chrome/browser/renderer_host/render_widget_helper.h
+++ b/chrome/browser/renderer_host/render_widget_helper.h
@@ -12,6 +12,7 @@
#include "base/ref_counted.h"
#include "base/lock.h"
#include "base/waitable_event.h"
+#include "chrome/common/modal_dialog_event.h"
namespace IPC {
class Message;
@@ -109,11 +110,8 @@ class RenderWidgetHelper :
void CreateNewWindow(int opener_id,
bool user_gesture,
base::ProcessHandle render_process,
- int* route_id
-#if defined(OS_WIN)
- , HANDLE* modal_dialog_event
-#endif
- );
+ int* route_id,
+ ModalDialogEvent* modal_dialog_event);
void CreateNewWidget(int opener_id, bool activatable, int* route_id);
private:
diff --git a/chrome/browser/renderer_host/render_widget_host.cc b/chrome/browser/renderer_host/render_widget_host.cc
index 865abbb..b3108b5 100644
--- a/chrome/browser/renderer_host/render_widget_host.cc
+++ b/chrome/browser/renderer_host/render_widget_host.cc
@@ -68,7 +68,8 @@ void RenderWidgetHost::Init() {
// Send the ack along with the information on placement.
HWND plugin_hwnd = view_->GetPluginHWND();
- Send(new ViewMsg_CreatingNew_ACK(routing_id_, plugin_hwnd));
+ Send(new ViewMsg_CreatingNew_ACK(routing_id_,
+ gfx::IdFromNativeView(plugin_hwnd)));
WasResized();
}
diff --git a/chrome/browser/renderer_host/render_widget_host_view.h b/chrome/browser/renderer_host/render_widget_host_view.h
index c07de07..33d971c 100644
--- a/chrome/browser/renderer_host/render_widget_host_view.h
+++ b/chrome/browser/renderer_host/render_widget_host_view.h
@@ -5,6 +5,7 @@
#ifndef CHROME_BROWSER_RENDERER_HOST_RENDER_WIDGET_HOST_VIEW_H_
#define CHROME_BROWSER_RENDERER_HOST_RENDER_WIDGET_HOST_VIEW_H_
+#include "base/gfx/native_widget_types.h"
#include "base/shared_memory.h"
#include "build/build_config.h"
#include "chrome/common/render_messages.h"
@@ -59,10 +60,8 @@ class RenderWidgetHostView {
// Tells the View to size itself to the specified size.
virtual void SetSize(const gfx::Size& size) = 0;
-#if defined(OS_WIN)
// Retrieves the HWND used to contain plugin HWNDs.
- virtual HWND GetPluginHWND() = 0;
-#endif
+ virtual gfx::NativeView GetPluginHWND() = 0;
// Moves all plugin windows as described in the given list.
virtual void MovePluginWindows(
diff --git a/chrome/browser/resource_message_filter.cc b/chrome/browser/resource_message_filter.cc
index e97c46c..753590c 100644
--- a/chrome/browser/resource_message_filter.cc
+++ b/chrome/browser/resource_message_filter.cc
@@ -5,6 +5,7 @@
#include "chrome/browser/resource_message_filter.h"
#include "base/clipboard.h"
+#include "base/gfx/native_widget_types.h"
#include "base/histogram.h"
#include "base/thread.h"
#include "chrome/browser/chrome_plugin_browsing_context.h"
@@ -244,10 +245,9 @@ bool ResourceMessageFilter::Send(IPC::Message* message) {
return channel_->Send(message);
}
-void ResourceMessageFilter::OnMsgCreateWindow(int opener_id,
- bool user_gesture,
- int* route_id,
- HANDLE* modal_dialog_event) {
+void ResourceMessageFilter::OnMsgCreateWindow(
+ int opener_id, bool user_gesture, int* route_id,
+ ModalDialogEvent* modal_dialog_event) {
render_widget_helper_->CreateNewWindow(opener_id,
user_gesture,
render_handle_,
@@ -406,8 +406,8 @@ void ResourceMessageFilter::OnLoadFont(LOGFONT font) {
}
void ResourceMessageFilter::OnGetScreenInfo(
- gfx::NativeView window, webkit_glue::ScreenInfo* results) {
- *results = webkit_glue::GetScreenInfoHelper(window);
+ gfx::NativeViewId window, webkit_glue::ScreenInfo* results) {
+ *results = webkit_glue::GetScreenInfoHelper(gfx::NativeViewFromId(window));
}
void ResourceMessageFilter::OnGetPlugins(bool refresh,
@@ -474,20 +474,25 @@ void ResourceMessageFilter::OnClipboardReadHTML(std::wstring* markup,
#if defined(OS_WIN)
-void ResourceMessageFilter::OnGetWindowRect(HWND window, gfx::Rect *rect) {
+void ResourceMessageFilter::OnGetWindowRect(gfx::NativeViewId window_id,
+ gfx::Rect* rect) {
+ HWND window = gfx::NativeViewFromId(window_id);
RECT window_rect = {0};
GetWindowRect(window, &window_rect);
*rect = window_rect;
}
-void ResourceMessageFilter::OnGetRootWindowRect(HWND window, gfx::Rect *rect) {
+void ResourceMessageFilter::OnGetRootWindowRect(gfx::NativeViewId window_id,
+ gfx::Rect* rect) {
+ HWND window = gfx::NativeViewFromId(window_id);
RECT window_rect = {0};
HWND root_window = ::GetAncestor(window, GA_ROOT);
GetWindowRect(root_window, &window_rect);
*rect = window_rect;
}
-void ResourceMessageFilter::OnGetRootWindowResizerRect(HWND window, gfx::Rect *rect) {
+void ResourceMessageFilter::OnGetRootWindowResizerRect(gfx::NativeViewId window,
+ gfx::Rect* rect) {
RECT window_rect = {0};
*rect = window_rect;
}
@@ -581,10 +586,12 @@ void ResourceMessageFilter::OnGetDefaultPrintSettingsReply(
#if defined(OS_WIN)
-void ResourceMessageFilter::OnScriptedPrint(HWND host_window,
+void ResourceMessageFilter::OnScriptedPrint(gfx::NativeViewId host_window_id,
int cookie,
int expected_pages_count,
IPC::Message* reply_msg) {
+ HWND host_window = gfx::NativeViewFromId(host_window_id);
+
scoped_refptr<printing::PrinterQuery> printer_query;
print_job_manager_->PopPrinterQuery(cookie, &printer_query);
if (!printer_query.get()) {
diff --git a/chrome/browser/resource_message_filter.h b/chrome/browser/resource_message_filter.h
index 09d42b6..026c232 100644
--- a/chrome/browser/resource_message_filter.h
+++ b/chrome/browser/resource_message_filter.h
@@ -82,7 +82,7 @@ class ResourceMessageFilter : public IPC::ChannelProxy::MessageFilter,
private:
void OnMsgCreateWindow(int opener_id, bool user_gesture, int* route_id,
- HANDLE* modal_dialog_event);
+ ModalDialogEvent* modal_dialog_event);
void OnMsgCreateWidget(int opener_id, bool activatable, int* route_id);
void OnRequestResource(const IPC::Message& msg, int request_id,
const ViewHostMsg_Resource_Request& request);
@@ -115,7 +115,7 @@ class ResourceMessageFilter : public IPC::ChannelProxy::MessageFilter,
void OnLoadFont(LOGFONT font);
#endif
- void OnGetScreenInfo(gfx::NativeView window,
+ void OnGetScreenInfo(gfx::NativeViewId window,
webkit_glue::ScreenInfo* results);
void OnGetPlugins(bool refresh, std::vector<WebPluginInfo>* plugins);
void OnGetPluginPath(const GURL& url,
@@ -142,9 +142,9 @@ class ResourceMessageFilter : public IPC::ChannelProxy::MessageFilter,
void OnClipboardReadAsciiText(std::string* result);
void OnClipboardReadHTML(std::wstring* markup, GURL* src_url);
#if defined(OS_WIN)
- void OnGetWindowRect(HWND window, gfx::Rect *rect);
- void OnGetRootWindowRect(HWND window, gfx::Rect *rect);
- void OnGetRootWindowResizerRect(HWND window, gfx::Rect *rect);
+ void OnGetWindowRect(gfx::NativeViewId window, gfx::Rect *rect);
+ void OnGetRootWindowRect(gfx::NativeViewId window, gfx::Rect *rect);
+ void OnGetRootWindowResizerRect(gfx::NativeViewId window, gfx::Rect *rect);
#endif
void OnGetMimeTypeFromExtension(const std::wstring& ext,
std::string* mime_type);
@@ -168,7 +168,7 @@ class ResourceMessageFilter : public IPC::ChannelProxy::MessageFilter,
// A javascript code requested to print the current page. The renderer host
// have to show to the user the print dialog and returns the selected print
// settings.
- void OnScriptedPrint(HWND host_window,
+ void OnScriptedPrint(gfx::NativeViewId host_window,
int cookie,
int expected_pages_count,
IPC::Message* reply_msg);