summaryrefslogtreecommitdiffstats
path: root/content/browser/web_contents/web_contents_view_win.h
diff options
context:
space:
mode:
authoravi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-11 16:18:35 +0000
committeravi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-11 16:18:35 +0000
commit6eddfd447c7c6f3e0fb9a5e46761c857592e9efd (patch)
tree12558656e0d7804a5b456e126f1ca4e5fbbdeca7 /content/browser/web_contents/web_contents_view_win.h
parent2efdbfd1a2f7c3eda02d44c66dafd3266fe407f7 (diff)
downloadchromium_src-6eddfd447c7c6f3e0fb9a5e46761c857592e9efd.zip
chromium_src-6eddfd447c7c6f3e0fb9a5e46761c857592e9efd.tar.gz
chromium_src-6eddfd447c7c6f3e0fb9a5e46761c857592e9efd.tar.bz2
TabContents -> WebContentsImpl, part 5.
TabContentsViewAura -> WebContentsViewAura TabContentsViewGtk -> WebContentsViewGtk TabContentsViewHelper -> WebContentsViewHelper TabContentsViewWin -> WebContentsViewWin BUG=105875 TEST=no change Review URL: https://chromiumcodereview.appspot.com/10031044 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@131779 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/web_contents/web_contents_view_win.h')
-rw-r--r--content/browser/web_contents/web_contents_view_win.h154
1 files changed, 154 insertions, 0 deletions
diff --git a/content/browser/web_contents/web_contents_view_win.h b/content/browser/web_contents/web_contents_view_win.h
new file mode 100644
index 0000000..e5b9cba
--- /dev/null
+++ b/content/browser/web_contents/web_contents_view_win.h
@@ -0,0 +1,154 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CONTENT_BROWSER_WEB_CONTENTS_WEB_CONTENTS_VIEW_WIN_H_
+#define CONTENT_BROWSER_WEB_CONTENTS_WEB_CONTENTS_VIEW_WIN_H_
+#pragma once
+
+#include "base/memory/ref_counted.h"
+#include "base/memory/scoped_ptr.h"
+#include "base/timer.h"
+#include "base/win/win_util.h"
+#include "content/browser/web_contents/web_contents_view_helper.h"
+#include "content/common/content_export.h"
+#include "content/public/browser/web_contents_view.h"
+#include "ui/base/win/window_impl.h"
+
+class RenderWidgetHostViewWin;
+class WebDragDest;
+class WebContentsDragWin;
+
+namespace content {
+class WebContentsViewDelegate;
+}
+
+// An implementation of WebContentsView for Windows.
+class CONTENT_EXPORT WebContentsViewWin : public content::WebContentsView,
+ public ui::WindowImpl {
+ public:
+ WebContentsViewWin(WebContentsImpl* web_contents,
+ content::WebContentsViewDelegate* delegate);
+ virtual ~WebContentsViewWin();
+
+ BEGIN_MSG_MAP_EX(WebContentsViewWin)
+ MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
+ MESSAGE_HANDLER(WM_WINDOWPOSCHANGED, OnWindowPosChanged)
+ MESSAGE_HANDLER(WM_LBUTTONDOWN, OnMouseDown)
+ MESSAGE_HANDLER(WM_MBUTTONDOWN, OnMouseDown)
+ MESSAGE_HANDLER(WM_RBUTTONDOWN, OnMouseDown)
+ MESSAGE_HANDLER(WM_MOUSEMOVE, OnMouseMove)
+ MESSAGE_HANDLER(base::win::kReflectedMessage, OnReflectedMessage)
+ // Hacks for old ThinkPad touchpads/scroll points.
+ MESSAGE_HANDLER(WM_NCCALCSIZE, OnNCCalcSize)
+ MESSAGE_HANDLER(WM_HSCROLL, OnScroll)
+ MESSAGE_HANDLER(WM_VSCROLL, OnScroll)
+ MESSAGE_HANDLER(WM_SIZE, OnSize)
+ END_MSG_MAP()
+
+ // Overridden from WebContentsView:
+ virtual void CreateView(const gfx::Size& initial_size) OVERRIDE;
+ virtual content::RenderWidgetHostView* CreateViewForWidget(
+ content::RenderWidgetHost* render_widget_host) OVERRIDE;
+ virtual gfx::NativeView GetNativeView() const OVERRIDE;
+ virtual gfx::NativeView GetContentNativeView() const OVERRIDE;
+ virtual gfx::NativeWindow GetTopLevelNativeWindow() const OVERRIDE;
+ virtual void GetContainerBounds(gfx::Rect *out) const OVERRIDE;
+ virtual void SetPageTitle(const string16& title) OVERRIDE;
+ virtual void OnTabCrashed(base::TerminationStatus status,
+ int error_code) OVERRIDE;
+ virtual void SizeContents(const gfx::Size& size) OVERRIDE;
+ virtual void RenderViewCreated(content::RenderViewHost* host) OVERRIDE;
+ virtual void Focus() OVERRIDE;
+ virtual void SetInitialFocus() OVERRIDE;
+ virtual void StoreFocus() OVERRIDE;
+ virtual void RestoreFocus() OVERRIDE;
+ virtual bool IsDoingDrag() const OVERRIDE;
+ virtual void CancelDragAndCloseTab() OVERRIDE;
+ virtual bool IsEventTracking() const OVERRIDE;
+ virtual void CloseTabAfterEventTracking() OVERRIDE;
+ virtual void GetViewBounds(gfx::Rect* out) const OVERRIDE;
+
+ // Implementation of RenderViewHostDelegate::View.
+ virtual void CreateNewWindow(
+ int route_id,
+ const ViewHostMsg_CreateWindow_Params& params) OVERRIDE;
+ virtual void CreateNewWidget(int route_id,
+ WebKit::WebPopupType popup_type) OVERRIDE;
+ virtual void CreateNewFullscreenWidget(int route_id) OVERRIDE;
+ virtual void ShowCreatedWindow(int route_id,
+ WindowOpenDisposition disposition,
+ const gfx::Rect& initial_pos,
+ bool user_gesture) OVERRIDE;
+ virtual void ShowCreatedWidget(int route_id,
+ const gfx::Rect& initial_pos) OVERRIDE;
+ virtual void ShowCreatedFullscreenWidget(int route_id) OVERRIDE;
+ virtual void ShowContextMenu(
+ const content::ContextMenuParams& params) OVERRIDE;
+ virtual void ShowPopupMenu(const gfx::Rect& bounds,
+ int item_height,
+ double item_font_size,
+ int selected_item,
+ const std::vector<WebMenuItem>& items,
+ bool right_aligned) OVERRIDE;
+ virtual void StartDragging(const WebDropData& drop_data,
+ WebKit::WebDragOperationsMask operations,
+ const SkBitmap& image,
+ const gfx::Point& image_offset) OVERRIDE;
+ virtual void UpdateDragCursor(WebKit::WebDragOperation operation) OVERRIDE;
+ virtual void GotFocus() OVERRIDE;
+ virtual void TakeFocus(bool reverse) OVERRIDE;
+
+ WebContentsImpl* tab_contents() const { return tab_contents_; }
+
+ private:
+ void EndDragging();
+ void CloseTab();
+
+ LRESULT OnDestroy(
+ UINT message, WPARAM wparam, LPARAM lparam, BOOL& handled);
+ LRESULT OnWindowPosChanged(
+ UINT message, WPARAM wparam, LPARAM lparam, BOOL& handled);
+ LRESULT OnMouseDown(
+ UINT message, WPARAM wparam, LPARAM lparam, BOOL& handled);
+ LRESULT OnMouseMove(
+ UINT message, WPARAM wparam, LPARAM lparam, BOOL& handled);
+ LRESULT OnReflectedMessage(
+ UINT message, WPARAM wparam, LPARAM lparam, BOOL& handled);
+ LRESULT OnNCCalcSize(
+ UINT message, WPARAM wparam, LPARAM lparam, BOOL& handled);
+ LRESULT OnScroll(
+ UINT message, WPARAM wparam, LPARAM lparam, BOOL& handled);
+ LRESULT OnSize(
+ UINT message, WPARAM wparam, LPARAM lparam, BOOL& handled);
+
+ gfx::Size initial_size_;
+
+ // The WebContentsImpl whose contents we display.
+ WebContentsImpl* tab_contents_;
+
+ RenderWidgetHostViewWin* view_;
+
+ scoped_ptr<content::WebContentsViewDelegate> delegate_;
+
+ // The helper object that handles drag destination related interactions with
+ // Windows.
+ scoped_refptr<WebDragDest> drag_dest_;
+
+ // Used to handle the drag-and-drop.
+ scoped_refptr<WebContentsDragWin> drag_handler_;
+
+ // Set to true if we want to close the tab after the system drag operation
+ // has finished.
+ bool close_tab_after_drag_ends_;
+
+ // Used to close the tab after the stack has unwound.
+ base::OneShotTimer<WebContentsViewWin> close_tab_timer_;
+
+ // Common implementations of some WebContentsView methods.
+ WebContentsViewHelper web_contents_view_helper_;
+
+ DISALLOW_COPY_AND_ASSIGN(WebContentsViewWin);
+};
+
+#endif // CONTENT_BROWSER_WEB_CONTENTS_WEB_CONTENTS_VIEW_WIN_H_