Index: chrome/browser/ui/views/tab_contents/tab_contents_view_views.h |
diff --git a/chrome/browser/ui/views/tab_contents/tab_contents_view_views.h b/chrome/browser/ui/views/tab_contents/tab_contents_view_views.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..dfb7ed7fc7d19018e5d177bd607527d66bbab45b |
--- /dev/null |
+++ b/chrome/browser/ui/views/tab_contents/tab_contents_view_views.h |
@@ -0,0 +1,128 @@ |
+// Copyright (c) 2010 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 CHROME_BROWSER_VIEWS_TAB_CONTENTS_TAB_CONTENTS_VIEW_VIEWS_H_ |
+#define CHROME_BROWSER_VIEWS_TAB_CONTENTS_TAB_CONTENTS_VIEW_VIEWS_H_ |
+#pragma once |
+ |
+#include <vector> |
+ |
+#include "base/scoped_ptr.h" |
+#include "chrome/browser/tab_contents/tab_contents_view.h" |
+#include "gfx/size.h" |
+#include "views/view.h" |
+ |
+class ConstrainedWindowGtk; |
+typedef struct _GtkFloatingContainer GtkFloatingContainer; |
+class RenderViewContextMenuViews; |
+class SadTabView; |
+class SkBitmap; |
+class TabContentsDragSource; |
+class WebDragDestGtk; |
+ |
+namespace gfx { |
+class Point; |
+} // namespace gfx |
+ |
+namespace views { |
+class NativeViewHost; |
+} // namespace views |
+ |
+// Views-specific implementation of the TabContentsView for the touch UI. |
+class TabContentsViewViews : public TabContentsView, public views::View { |
+ public: |
+ // The corresponding TabContents is passed in the constructor, and manages our |
+ // lifetime. This doesn't need to be the case, but is this way currently |
+ // because that's what was easiest when they were split. |
+ explicit TabContentsViewViews(TabContents* tab_contents); |
+ virtual ~TabContentsViewViews(); |
+ |
+ // Unlike Windows, ConstrainedWindows need to collaborate with the |
+ // TabContentsViewViews to position the dialogs. |
+ void AttachConstrainedWindow(ConstrainedWindowGtk* constrained_window); |
+ void RemoveConstrainedWindow(ConstrainedWindowGtk* constrained_window); |
+ |
+ // TabContentsView implementation |
+ virtual void CreateView(const gfx::Size& initial_size); |
+ virtual RenderWidgetHostView* CreateViewForWidget( |
+ RenderWidgetHost* render_widget_host); |
+ virtual gfx::NativeView GetNativeView() const; |
+ virtual gfx::NativeView GetContentNativeView() const; |
+ virtual gfx::NativeWindow GetTopLevelNativeWindow() const; |
+ virtual void GetContainerBounds(gfx::Rect* out) const; |
+ virtual void SetPageTitle(const std::wstring& title); |
+ virtual void OnTabCrashed(); |
+ virtual void SizeContents(const gfx::Size& size); |
+ virtual void Focus(); |
+ virtual void SetInitialFocus(); |
+ virtual void StoreFocus(); |
+ virtual void RestoreFocus(); |
+ |
+ // views::View implementation |
+ virtual void Paint(gfx::Canvas* canvas); |
+ |
+ // Backend implementation of RenderViewHostDelegate::View. |
+ virtual void ShowContextMenu(const ContextMenuParams& params); |
+ 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); |
+ virtual void StartDragging(const WebDropData& drop_data, |
+ WebKit::WebDragOperationsMask ops_allowed, |
+ const SkBitmap& image, |
+ const gfx::Point& image_offset); |
+ virtual void UpdateDragCursor(WebKit::WebDragOperation operation); |
+ virtual void GotFocus(); |
+ virtual void TakeFocus(bool reverse); |
+ virtual void VisibilityChanged(views::View *, bool is_visible); |
+ |
+ private: |
+ // Signal handlers ----------------------------------------------------------- |
+ |
+ // Handles notifying the TabContents and other operations when the window was |
+ // shown or hidden. |
+ void WasHidden(); |
+ void WasShown(); |
+ |
+ // Handles resizing of the contents. This will notify the RenderWidgetHostView |
+ // of the change, reposition popups, and the find in page bar. |
+ void WasSized(const gfx::Size& size); |
+ |
+ // For any floating views (ConstrainedDialogs) this function centers them |
+ // within this view. It's called whem a ConstrainedDialog is attached and |
+ // when this view is resized. |
+ void SetFloatingPosition(const gfx::Size& size); |
+ |
+ // Used to render the sad tab. This will be non-NULL only when the sad tab is |
+ // visible. |
+ SadTabView* sad_tab_; |
+ |
+ // Whether to ignore the next CHAR keyboard event. |
+ bool ignore_next_char_event_; |
+ |
+ // The id used in the ViewStorage to store the last focused view. |
+ int last_focused_view_storage_id_; |
+ |
+ // The context menu. Callbacks are asynchronous so we need to keep it around. |
+ scoped_ptr<RenderViewContextMenuViews> context_menu_; |
+ |
+ // Handle drags from this TabContentsView. |
+ // TODO(anicolao): figure out what's needed for drag'n'drop |
+ |
+ // The event for the last mouse down we handled. We need this for drags. |
+ GdkEventButton last_mouse_down_; |
+ |
+ // Current size. See comment in WidgetGtk as to why this is cached. |
+ gfx::Size size_; |
+ |
+ // Each individual UI for constrained dialogs currently displayed. The |
+ // objects in this vector are owned by the TabContents, not the view. |
+ std::vector<ConstrainedWindowGtk*> constrained_windows_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(TabContentsViewViews); |
+}; |
+ |
+#endif // CHROME_BROWSER_VIEWS_TAB_CONTENTS_TAB_CONTENTS_VIEW_VIEWS_H_ |