| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef WEBKIT_TOOLS_TEST_SHELL_WEBWIDGET_HOST_H__ | 5 #ifndef WEBKIT_TOOLS_TEST_SHELL_WEBWIDGET_HOST_H_ |
| 6 #define WEBKIT_TOOLS_TEST_SHELL_WEBWIDGET_HOST_H__ | 6 #define WEBKIT_TOOLS_TEST_SHELL_WEBWIDGET_HOST_H_ |
| 7 | 7 |
| 8 #include <windows.h> | 8 #include "base/basictypes.h" |
| 9 | 9 #include "base/gfx/native_widget_types.h" |
| 10 #include "base/gfx/platform_canvas.h" |
| 10 #include "base/gfx/rect.h" | 11 #include "base/gfx/rect.h" |
| 11 #include "base/scoped_ptr.h" | 12 #include "base/scoped_ptr.h" |
| 12 | 13 |
| 13 class WebWidget; | 14 class WebWidget; |
| 14 class WebWidgetDelegate; | 15 class WebWidgetDelegate; |
| 15 | 16 |
| 16 namespace gfx { | 17 namespace gfx { |
| 17 class PlatformCanvasWin; | |
| 18 class Size; | 18 class Size; |
| 19 } | 19 } |
| 20 | 20 |
| 21 // This class is a simple HWND-based host for a WebWidget | 21 // This class is a simple ViewHandle-based host for a WebWidget |
| 22 class WebWidgetHost { | 22 class WebWidgetHost { |
| 23 public: | 23 public: |
| 24 // The new instance is deleted once the associated HWND is destroyed. The | 24 // The new instance is deleted once the associated ViewHandle is destroyed. |
| 25 // newly created window should be resized after it is created, using the | 25 // The newly created window should be resized after it is created, using the |
| 26 // MoveWindow (or equivalent) function. | 26 // MoveWindow (or equivalent) function. |
| 27 static WebWidgetHost* Create(HWND parent_window, WebWidgetDelegate* delegate); | 27 static WebWidgetHost* Create(gfx::WindowHandle parent_window, |
| 28 WebWidgetDelegate* delegate); |
| 28 | 29 |
| 29 static WebWidgetHost* FromWindow(HWND hwnd); | 30 static WebWidgetHost* FromWindow(gfx::WindowHandle view); |
| 31 #if defined(OS_MACOSX) |
| 32 static void HandleEvent(gfx::WindowHandle window, NSEvent *event); |
| 33 #endif |
| 30 | 34 |
| 31 HWND window_handle() const { return hwnd_; } | 35 gfx::ViewHandle window_handle() const { return view_; } |
| 32 WebWidget* webwidget() const { return webwidget_; } | 36 WebWidget* webwidget() const { return webwidget_; } |
| 33 | 37 |
| 34 void DidInvalidateRect(const gfx::Rect& rect); | 38 void DidInvalidateRect(const gfx::Rect& rect); |
| 35 void DidScrollRect(int dx, int dy, const gfx::Rect& clip_rect); | 39 void DidScrollRect(int dx, int dy, const gfx::Rect& clip_rect); |
| 40 #if defined(OS_WIN) |
| 36 void SetCursor(HCURSOR cursor); | 41 void SetCursor(HCURSOR cursor); |
| 42 #endif |
| 37 | 43 |
| 38 void DiscardBackingStore(); | 44 void DiscardBackingStore(); |
| 39 | 45 |
| 40 protected: | 46 protected: |
| 41 WebWidgetHost(); | 47 WebWidgetHost(); |
| 42 ~WebWidgetHost(); | 48 ~WebWidgetHost(); |
| 43 | 49 |
| 50 #if defined(OS_WIN) |
| 44 // Per-class wndproc. Returns true if the event should be swallowed. | 51 // Per-class wndproc. Returns true if the event should be swallowed. |
| 45 virtual bool WndProc(UINT message, WPARAM wparam, LPARAM lparam); | 52 virtual bool WndProc(UINT message, WPARAM wparam, LPARAM lparam); |
| 46 | 53 |
| 47 void Paint(); | 54 void Paint(); |
| 48 void Resize(LPARAM lparam); | 55 void Resize(LPARAM lparam); |
| 49 void MouseEvent(UINT message, WPARAM wparam, LPARAM lparam); | 56 void MouseEvent(UINT message, WPARAM wparam, LPARAM lparam); |
| 50 void WheelEvent(WPARAM wparam, LPARAM lparam); | 57 void WheelEvent(WPARAM wparam, LPARAM lparam); |
| 51 void KeyEvent(UINT message, WPARAM wparam, LPARAM lparam); | 58 void KeyEvent(UINT message, WPARAM wparam, LPARAM lparam); |
| 52 void CaptureLostEvent(); | 59 void CaptureLostEvent(); |
| 53 void SetFocus(bool enable); | 60 void SetFocus(bool enable); |
| 54 | 61 |
| 62 static LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); |
| 63 #elif defined(OS_MACOSX) |
| 64 // These need to be called from a non-subclass, so they need to be public. |
| 65 public: |
| 66 void Paint(); |
| 67 void Resize(const gfx::Rect& rect); |
| 68 void MouseEvent(NSEvent *); |
| 69 void WheelEvent(NSEvent *); |
| 70 void KeyEvent(NSEvent *); |
| 71 void SetFocus(bool enable); |
| 72 protected: |
| 73 #endif |
| 74 |
| 55 void TrackMouseLeave(bool enable); | 75 void TrackMouseLeave(bool enable); |
| 56 void ResetScrollRect(); | 76 void ResetScrollRect(); |
| 57 void PaintRect(const gfx::Rect& rect); | 77 void PaintRect(const gfx::Rect& rect); |
| 58 | 78 |
| 59 void set_painting(bool value) { | 79 void set_painting(bool value) { |
| 60 #ifndef NDEBUG | 80 #ifndef NDEBUG |
| 61 painting_ = value; | 81 painting_ = value; |
| 62 #endif | 82 #endif |
| 63 } | 83 } |
| 64 | 84 |
| 65 static LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); | 85 gfx::ViewHandle view_; |
| 66 | |
| 67 HWND hwnd_; | |
| 68 WebWidget* webwidget_; | 86 WebWidget* webwidget_; |
| 69 scoped_ptr<gfx::PlatformCanvasWin> canvas_; | 87 scoped_ptr<gfx::PlatformCanvas> canvas_; |
| 70 | 88 |
| 71 // specifies the portion of the webwidget that needs painting | 89 // specifies the portion of the webwidget that needs painting |
| 72 gfx::Rect paint_rect_; | 90 gfx::Rect paint_rect_; |
| 73 | 91 |
| 74 // specifies the portion of the webwidget that needs scrolling | 92 // specifies the portion of the webwidget that needs scrolling |
| 75 gfx::Rect scroll_rect_; | 93 gfx::Rect scroll_rect_; |
| 76 int scroll_dx_; | 94 int scroll_dx_; |
| 77 int scroll_dy_; | 95 int scroll_dy_; |
| 78 | 96 |
| 79 bool track_mouse_leave_; | 97 bool track_mouse_leave_; |
| 80 | 98 |
| 81 #ifndef NDEBUG | 99 #ifndef NDEBUG |
| 82 bool painting_; | 100 bool painting_; |
| 83 #endif | 101 #endif |
| 84 }; | 102 }; |
| 85 | 103 |
| 86 #endif // WEBKIT_TOOLS_TEST_SHELL_WEBWIDGET_HOST_H__ | 104 #endif // WEBKIT_TOOLS_TEST_SHELL_WEBWIDGET_HOST_H_ |
| 87 | |
| OLD | NEW |