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