diff options
author | brettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-01-24 06:16:13 +0000 |
---|---|---|
committer | brettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-01-24 06:16:13 +0000 |
commit | 9d80e0794fecdda750b11cf268f811881f0ed0ec (patch) | |
tree | 41ffc40de8e6a388890ea7109608bfa25a79bff2 | |
parent | 65c884079fc0f2ff5d6e7b2f4bffa521cf7605e3 (diff) | |
download | chromium_src-9d80e0794fecdda750b11cf268f811881f0ed0ec.zip chromium_src-9d80e0794fecdda750b11cf268f811881f0ed0ec.tar.gz chromium_src-9d80e0794fecdda750b11cf268f811881f0ed0ec.tar.bz2 |
Random de-Windows-ification-ism-izing in renderer_host.
Review URL: http://codereview.chromium.org/18577
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@8611 0039d316-1c4b-4281-b951-d872f2087c98
6 files changed, 48 insertions, 45 deletions
diff --git a/chrome/browser/renderer_host/render_widget_host_view.h b/chrome/browser/renderer_host/render_widget_host_view.h index 1a3facfa..c07de07 100644 --- a/chrome/browser/renderer_host/render_widget_host_view.h +++ b/chrome/browser/renderer_host/render_widget_host_view.h @@ -5,11 +5,14 @@ #ifndef CHROME_BROWSER_RENDERER_HOST_RENDER_WIDGET_HOST_VIEW_H_ #define CHROME_BROWSER_RENDERER_HOST_RENDER_WIDGET_HOST_VIEW_H_ -#include <windows.h> - #include "base/shared_memory.h" +#include "build/build_config.h" #include "chrome/common/render_messages.h" +#if defined(OS_WIN) +#include <windows.h> +#endif + namespace gfx { class Rect; class Size; @@ -56,18 +59,15 @@ 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 // Moves all plugin windows as described in the given list. virtual void MovePluginWindows( const std::vector<WebPluginGeometry>& plugin_window_moves) = 0; - // Sends the specified mouse event to the renderer. - virtual void ForwardMouseEventToRenderer(UINT message, - WPARAM wparam, - LPARAM lparam) = 0; - // Actually set/take focus to/from the associated View component. virtual void Focus() = 0; virtual void Blur() = 0; diff --git a/chrome/browser/renderer_host/render_widget_host_view_win.cc b/chrome/browser/renderer_host/render_widget_host_view_win.cc index eacf329..4db44b6 100644 --- a/chrome/browser/renderer_host/render_widget_host_view_win.cc +++ b/chrome/browser/renderer_host/render_widget_host_view_win.cc @@ -188,37 +188,6 @@ void RenderWidgetHostViewWin::MovePluginWindows( ::EndDeferWindowPos(defer_window_pos_info); } -void RenderWidgetHostViewWin::ForwardMouseEventToRenderer(UINT message, - WPARAM wparam, - LPARAM lparam) { - WebMouseEvent event(m_hWnd, message, wparam, lparam); - switch (event.type) { - case WebInputEvent::MOUSE_MOVE: - TrackMouseLeave(true); - break; - case WebInputEvent::MOUSE_LEAVE: - TrackMouseLeave(false); - break; - case WebInputEvent::MOUSE_DOWN: - SetCapture(); - break; - case WebInputEvent::MOUSE_UP: - if (GetCapture() == m_hWnd) - ReleaseCapture(); - break; - } - - render_widget_host_->ForwardMouseEvent(event); - - if (activatable_ && event.type == WebInputEvent::MOUSE_DOWN) { - // This is a temporary workaround for bug 765011 to get focus when the - // mouse is clicked. This happens after the mouse down event is sent to - // the renderer because normally Windows does a WM_SETFOCUS after - // WM_LBUTTONDOWN. - SetFocus(); - } -} - void RenderWidgetHostViewWin::Focus() { if (IsWindow()) SetFocus(); @@ -962,6 +931,37 @@ void RenderWidgetHostViewWin::ResetTooltip() { tooltip_hwnd_ = NULL; } +void RenderWidgetHostViewWin::ForwardMouseEventToRenderer(UINT message, + WPARAM wparam, + LPARAM lparam) { + WebMouseEvent event(m_hWnd, message, wparam, lparam); + switch (event.type) { + case WebInputEvent::MOUSE_MOVE: + TrackMouseLeave(true); + break; + case WebInputEvent::MOUSE_LEAVE: + TrackMouseLeave(false); + break; + case WebInputEvent::MOUSE_DOWN: + SetCapture(); + break; + case WebInputEvent::MOUSE_UP: + if (GetCapture() == m_hWnd) + ReleaseCapture(); + break; + } + + render_widget_host_->ForwardMouseEvent(event); + + if (activatable_ && event.type == WebInputEvent::MOUSE_DOWN) { + // This is a temporary workaround for bug 765011 to get focus when the + // mouse is clicked. This happens after the mouse down event is sent to + // the renderer because normally Windows does a WM_SETFOCUS after + // WM_LBUTTONDOWN. + SetFocus(); + } +} + void RenderWidgetHostViewWin::ShutdownHost() { shutdown_factory_.RevokeAll(); render_widget_host_->Shutdown(); diff --git a/chrome/browser/renderer_host/render_widget_host_view_win.h b/chrome/browser/renderer_host/render_widget_host_view_win.h index e8456be..3284ac6 100644 --- a/chrome/browser/renderer_host/render_widget_host_view_win.h +++ b/chrome/browser/renderer_host/render_widget_host_view_win.h @@ -127,9 +127,6 @@ class RenderWidgetHostViewWin : virtual HWND GetPluginHWND(); virtual void MovePluginWindows( const std::vector<WebPluginGeometry>& plugin_window_moves); - virtual void ForwardMouseEventToRenderer(UINT message, - WPARAM wparam, - LPARAM lparam); virtual void Focus(); virtual void Blur(); virtual bool HasFocus(); @@ -203,6 +200,9 @@ class RenderWidgetHostViewWin : // becomes hidden, this method is called to reset the tooltip. void ResetTooltip(); + // Sends the specified mouse event to the renderer. + void ForwardMouseEventToRenderer(UINT message, WPARAM wparam, LPARAM lparam); + // Synthesize mouse wheel event. LRESULT SynthesizeMouseWheel(bool is_vertical, int scroll_code, short scroll_position); diff --git a/chrome/browser/renderer_host/resource_dispatcher_host.cc b/chrome/browser/renderer_host/resource_dispatcher_host.cc index 261d1c1..58d823f 100644 --- a/chrome/browser/renderer_host/resource_dispatcher_host.cc +++ b/chrome/browser/renderer_host/resource_dispatcher_host.cc @@ -197,7 +197,7 @@ bool ResourceDispatcherHost::HandleExternalProtocol(int request_id, void ResourceDispatcherHost::BeginRequest( Receiver* receiver, - HANDLE render_process_handle, + base::ProcessHandle render_process_handle, int render_process_host_id, int render_view_id, int request_id, diff --git a/chrome/browser/renderer_host/resource_dispatcher_host.h b/chrome/browser/renderer_host/resource_dispatcher_host.h index 757de44..f2dba57 100644 --- a/chrome/browser/renderer_host/resource_dispatcher_host.h +++ b/chrome/browser/renderer_host/resource_dispatcher_host.h @@ -18,6 +18,7 @@ #include "base/logging.h" #include "base/observer_list.h" +#include "base/process.h" #include "base/ref_counted.h" #include "base/timer.h" #include "chrome/browser/renderer_host/resource_handler.h" @@ -195,7 +196,7 @@ class ResourceDispatcherHost : public URLRequest::Delegate { // a normal asynchronous set of response messages will be generated. // void BeginRequest(Receiver* receiver, - HANDLE render_process_handle, + base::ProcessHandle render_process_handle, int render_process_host_id, int render_view_id, int request_id, diff --git a/chrome/browser/renderer_host/test_render_view_host.h b/chrome/browser/renderer_host/test_render_view_host.h index f7d8bfa..a332667 100644 --- a/chrome/browser/renderer_host/test_render_view_host.h +++ b/chrome/browser/renderer_host/test_render_view_host.h @@ -7,6 +7,7 @@ #include "base/basictypes.h" #include "base/message_loop.h" +#include "build/build_config.h" #include "chrome/browser/renderer_host/mock_render_process_host.h" #include "chrome/browser/renderer_host/render_view_host.h" #include "chrome/browser/renderer_host/render_widget_host_view.h" @@ -31,16 +32,17 @@ class TestWebContents; // without having side-effects. class TestRenderWidgetHostView : public RenderWidgetHostView { public: - TestRenderWidgetHostView() : is_showing_(false) {} + TestRenderWidgetHostView() : is_showing_(false) {} virtual RenderWidgetHost* GetRenderWidgetHost() const { return NULL; } virtual void DidBecomeSelected() {} virtual void WasHidden() {} virtual void SetSize(const gfx::Size& size) {} +#if defined(OS_WIN) virtual HWND GetPluginHWND() { return NULL; } +#endif virtual void MovePluginWindows( const std::vector<WebPluginGeometry>& plugin_window_moves) {} - virtual HANDLE ModalDialogEvent() { return NULL; } virtual void ForwardMouseEventToRenderer(UINT message, WPARAM wparam, LPARAM lparam) {} |