diff options
Diffstat (limited to 'chrome/browser')
-rw-r--r-- | chrome/browser/download/download_file.h | 4 | ||||
-rw-r--r-- | chrome/browser/renderer_host/render_view_host.cc | 27 | ||||
-rw-r--r-- | chrome/browser/renderer_host/render_view_host.h | 3 | ||||
-rw-r--r-- | chrome/browser/renderer_host/render_widget_helper.cc | 25 | ||||
-rw-r--r-- | chrome/browser/renderer_host/render_widget_helper.h | 8 | ||||
-rw-r--r-- | chrome/browser/renderer_host/render_widget_host.cc | 3 | ||||
-rw-r--r-- | chrome/browser/renderer_host/render_widget_host_view.h | 5 | ||||
-rw-r--r-- | chrome/browser/resource_message_filter.cc | 27 | ||||
-rw-r--r-- | chrome/browser/resource_message_filter.h | 12 |
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); |