| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #ifndef CONTENT_BROWSER_WEB_CONTENTS_WEB_CONTENTS_VIEW_WIN_H_ | |
| 6 #define CONTENT_BROWSER_WEB_CONTENTS_WEB_CONTENTS_VIEW_WIN_H_ | |
| 7 | |
| 8 #include "base/memory/ref_counted.h" | |
| 9 #include "base/memory/scoped_ptr.h" | |
| 10 #include "base/timer/timer.h" | |
| 11 #include "base/win/win_util.h" | |
| 12 #include "content/common/content_export.h" | |
| 13 #include "content/common/drag_event_source_info.h" | |
| 14 #include "content/port/browser/render_view_host_delegate_view.h" | |
| 15 #include "content/port/browser/web_contents_view_port.h" | |
| 16 #include "ui/gfx/win/window_impl.h" | |
| 17 | |
| 18 namespace ui { | |
| 19 class HWNDMessageFilter; | |
| 20 } | |
| 21 | |
| 22 namespace content { | |
| 23 class WebContentsDragWin; | |
| 24 class WebContentsImpl; | |
| 25 class WebContentsViewDelegate; | |
| 26 class WebDragDest; | |
| 27 | |
| 28 // An implementation of WebContentsView for Windows. | |
| 29 class CONTENT_EXPORT WebContentsViewWin | |
| 30 : public WebContentsViewPort, | |
| 31 public RenderViewHostDelegateView, | |
| 32 public gfx::WindowImpl { | |
| 33 public: | |
| 34 WebContentsViewWin(WebContentsImpl* web_contents, | |
| 35 WebContentsViewDelegate* delegate); | |
| 36 virtual ~WebContentsViewWin(); | |
| 37 | |
| 38 BEGIN_MSG_MAP_EX(WebContentsViewWin) | |
| 39 MESSAGE_HANDLER(WM_CREATE, OnCreate) | |
| 40 MESSAGE_HANDLER(WM_DESTROY, OnDestroy) | |
| 41 MESSAGE_HANDLER(WM_WINDOWPOSCHANGED, OnWindowPosChanged) | |
| 42 MESSAGE_HANDLER(WM_LBUTTONDOWN, OnMouseDown) | |
| 43 MESSAGE_HANDLER(WM_MBUTTONDOWN, OnMouseDown) | |
| 44 MESSAGE_HANDLER(WM_RBUTTONDOWN, OnMouseDown) | |
| 45 MESSAGE_HANDLER(WM_MOUSEMOVE, OnMouseMove) | |
| 46 // Hacks for old ThinkPad touchpads/scroll points. | |
| 47 MESSAGE_HANDLER(WM_NCCALCSIZE, OnNCCalcSize) | |
| 48 MESSAGE_HANDLER(WM_NCHITTEST, OnNCHitTest) | |
| 49 MESSAGE_HANDLER(WM_HSCROLL, OnScroll) | |
| 50 MESSAGE_HANDLER(WM_VSCROLL, OnScroll) | |
| 51 MESSAGE_HANDLER(WM_SIZE, OnSize) | |
| 52 END_MSG_MAP() | |
| 53 | |
| 54 // Overridden from WebContentsView: | |
| 55 virtual gfx::NativeView GetNativeView() const OVERRIDE; | |
| 56 virtual gfx::NativeView GetContentNativeView() const OVERRIDE; | |
| 57 virtual gfx::NativeWindow GetTopLevelNativeWindow() const OVERRIDE; | |
| 58 virtual void GetContainerBounds(gfx::Rect *out) const OVERRIDE; | |
| 59 virtual void OnTabCrashed(base::TerminationStatus status, | |
| 60 int error_code) OVERRIDE; | |
| 61 virtual void SizeContents(const gfx::Size& size) OVERRIDE; | |
| 62 virtual void Focus() OVERRIDE; | |
| 63 virtual void SetInitialFocus() OVERRIDE; | |
| 64 virtual void StoreFocus() OVERRIDE; | |
| 65 virtual void RestoreFocus() OVERRIDE; | |
| 66 virtual DropData* GetDropData() const OVERRIDE; | |
| 67 virtual gfx::Rect GetViewBounds() const OVERRIDE; | |
| 68 | |
| 69 // Overridden from WebContentsViewPort: | |
| 70 virtual void CreateView( | |
| 71 const gfx::Size& initial_size, gfx::NativeView context) OVERRIDE; | |
| 72 virtual RenderWidgetHostView* CreateViewForWidget( | |
| 73 RenderWidgetHost* render_widget_host) OVERRIDE; | |
| 74 virtual RenderWidgetHostView* CreateViewForPopupWidget( | |
| 75 RenderWidgetHost* render_widget_host) OVERRIDE; | |
| 76 virtual void SetPageTitle(const base::string16& title) OVERRIDE; | |
| 77 virtual void RenderViewCreated(RenderViewHost* host) OVERRIDE; | |
| 78 virtual void RenderViewSwappedIn(RenderViewHost* host) OVERRIDE; | |
| 79 virtual void SetOverscrollControllerEnabled(bool enabled) OVERRIDE; | |
| 80 | |
| 81 // Implementation of RenderViewHostDelegateView. | |
| 82 virtual void ShowContextMenu(const ContextMenuParams& params) OVERRIDE; | |
| 83 virtual void ShowPopupMenu(const gfx::Rect& bounds, | |
| 84 int item_height, | |
| 85 double item_font_size, | |
| 86 int selected_item, | |
| 87 const std::vector<MenuItem>& items, | |
| 88 bool right_aligned, | |
| 89 bool allow_multiple_selection) OVERRIDE; | |
| 90 virtual void StartDragging(const DropData& drop_data, | |
| 91 blink::WebDragOperationsMask operations, | |
| 92 const gfx::ImageSkia& image, | |
| 93 const gfx::Vector2d& image_offset, | |
| 94 const DragEventSourceInfo& event_info) OVERRIDE; | |
| 95 virtual void UpdateDragCursor(blink::WebDragOperation operation) OVERRIDE; | |
| 96 virtual void GotFocus() OVERRIDE; | |
| 97 virtual void TakeFocus(bool reverse) OVERRIDE; | |
| 98 | |
| 99 WebContentsImpl* web_contents() const { return web_contents_; } | |
| 100 | |
| 101 private: | |
| 102 void EndDragging(); | |
| 103 void CloseTab(); | |
| 104 | |
| 105 LRESULT OnCreate( | |
| 106 UINT message, WPARAM wparam, LPARAM lparam, BOOL& handled); | |
| 107 LRESULT OnDestroy( | |
| 108 UINT message, WPARAM wparam, LPARAM lparam, BOOL& handled); | |
| 109 LRESULT OnWindowPosChanged( | |
| 110 UINT message, WPARAM wparam, LPARAM lparam, BOOL& handled); | |
| 111 LRESULT OnMouseDown( | |
| 112 UINT message, WPARAM wparam, LPARAM lparam, BOOL& handled); | |
| 113 LRESULT OnMouseMove( | |
| 114 UINT message, WPARAM wparam, LPARAM lparam, BOOL& handled); | |
| 115 LRESULT OnReflectedMessage( | |
| 116 UINT message, WPARAM wparam, LPARAM lparam, BOOL& handled); | |
| 117 LRESULT OnNCCalcSize( | |
| 118 UINT message, WPARAM wparam, LPARAM lparam, BOOL& handled); | |
| 119 LRESULT OnNCHitTest( | |
| 120 UINT message, WPARAM wparam, LPARAM lparam, BOOL& handled); | |
| 121 LRESULT OnScroll( | |
| 122 UINT message, WPARAM wparam, LPARAM lparam, BOOL& handled); | |
| 123 LRESULT OnSize( | |
| 124 UINT message, WPARAM wparam, LPARAM lparam, BOOL& handled); | |
| 125 | |
| 126 gfx::Size initial_size_; | |
| 127 | |
| 128 // The WebContentsImpl whose contents we display. | |
| 129 WebContentsImpl* web_contents_; | |
| 130 | |
| 131 scoped_ptr<WebContentsViewDelegate> delegate_; | |
| 132 | |
| 133 // The helper object that handles drag destination related interactions with | |
| 134 // Windows. | |
| 135 scoped_refptr<WebDragDest> drag_dest_; | |
| 136 | |
| 137 // Used to handle the drag-and-drop. | |
| 138 scoped_refptr<WebContentsDragWin> drag_handler_; | |
| 139 | |
| 140 scoped_ptr<ui::HWNDMessageFilter> hwnd_message_filter_; | |
| 141 | |
| 142 DISALLOW_COPY_AND_ASSIGN(WebContentsViewWin); | |
| 143 }; | |
| 144 | |
| 145 } // namespace content | |
| 146 | |
| 147 #endif // CONTENT_BROWSER_WEB_CONTENTS_WEB_CONTENTS_VIEW_WIN_H_ | |
| OLD | NEW |