Home | History | Annotate | Download | only in tab_contents
      1 // Copyright (c) 2011 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 CHROME_BROWSER_UI_VIEWS_TAB_CONTENTS_NATIVE_TAB_CONTENTS_VIEW_WIN_H_
      6 #define CHROME_BROWSER_UI_VIEWS_TAB_CONTENTS_NATIVE_TAB_CONTENTS_VIEW_WIN_H_
      7 #pragma once
      8 
      9 #include "chrome/browser/ui/views/tab_contents/native_tab_contents_view.h"
     10 #include "views/widget/widget_win.h"
     11 
     12 class WebDropTarget;
     13 class TabContents;
     14 class TabContentsDragWin;
     15 
     16 class NativeTabContentsViewWin : public views::WidgetWin,
     17                                  public NativeTabContentsView {
     18  public:
     19   explicit NativeTabContentsViewWin(
     20       internal::NativeTabContentsViewDelegate* delegate);
     21   virtual ~NativeTabContentsViewWin();
     22 
     23   WebDropTarget* drop_target() const { return drop_target_.get(); }
     24 
     25   TabContents* GetTabContents() const;
     26 
     27   void EndDragging();
     28 
     29  private:
     30   // Overridden from NativeTabContentsView:
     31   virtual void InitNativeTabContentsView() OVERRIDE;
     32   virtual void Unparent() OVERRIDE;
     33   virtual RenderWidgetHostView* CreateRenderWidgetHostView(
     34       RenderWidgetHost* render_widget_host) OVERRIDE;
     35   virtual gfx::NativeWindow GetTopLevelNativeWindow() const OVERRIDE;
     36   virtual void SetPageTitle(const std::wstring& title) OVERRIDE;
     37   virtual void StartDragging(const WebDropData& drop_data,
     38                              WebKit::WebDragOperationsMask ops,
     39                              const SkBitmap& image,
     40                              const gfx::Point& image_offset) OVERRIDE;
     41   virtual void CancelDrag() OVERRIDE;
     42   virtual bool IsDoingDrag() const OVERRIDE;
     43   virtual void SetDragCursor(WebKit::WebDragOperation operation) OVERRIDE;
     44   virtual views::NativeWidget* AsNativeWidget() OVERRIDE;
     45 
     46   // Overridden from views::WidgetWin:
     47   virtual void OnDestroy() OVERRIDE;
     48   virtual void OnHScroll(int scroll_type,
     49                          short position,
     50                          HWND scrollbar) OVERRIDE;
     51   virtual LRESULT OnMouseRange(UINT msg,
     52                                WPARAM w_param,
     53                                LPARAM l_param) OVERRIDE;
     54   virtual LRESULT OnReflectedMessage(UINT msg,
     55                                      WPARAM w_param,
     56                                      LPARAM l_param) OVERRIDE;
     57   virtual void OnVScroll(int scroll_type,
     58                          short position,
     59                          HWND scrollbar) OVERRIDE;
     60   virtual void OnWindowPosChanged(WINDOWPOS* window_pos) OVERRIDE;
     61   virtual void OnSize(UINT param, const WTL::CSize& size) OVERRIDE;
     62   virtual LRESULT OnNCCalcSize(BOOL w_param, LPARAM l_param) OVERRIDE;
     63   virtual void OnNCPaint(HRGN rgn) OVERRIDE;
     64   virtual views::FocusManager* GetFocusManager() OVERRIDE;
     65 
     66   // Backend for all scroll messages, the |message| parameter indicates which
     67   // one it is.
     68   void ScrollCommon(UINT message, int scroll_type, short position,
     69                     HWND scrollbar);
     70   bool ScrollZoom(int scroll_type);
     71 
     72   internal::NativeTabContentsViewDelegate* delegate_;
     73 
     74   // A drop target object that handles drags over this TabContents.
     75   scoped_refptr<WebDropTarget> drop_target_;
     76 
     77   // Used to handle the drag-and-drop.
     78   scoped_refptr<TabContentsDragWin> drag_handler_;
     79 
     80   // The FocusManager associated with this tab.  Stored as it is not directly
     81   // accessible when un-parented.
     82   views::FocusManager* focus_manager_;
     83 
     84   DISALLOW_COPY_AND_ASSIGN(NativeTabContentsViewWin);
     85 };
     86 
     87 #endif  // CHROME_BROWSER_UI_VIEWS_TAB_CONTENTS_NATIVE_TAB_CONTENTS_VIEW_WIN_H_
     88