| // Copyright (c) 2011 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_TABS_DEFAULT_TAB_HANDLER_H_ |
| #define CHROME_BROWSER_TABS_DEFAULT_TAB_HANDLER_H_ |
| #pragma once |
| |
| #include "base/memory/scoped_ptr.h" |
| #include "chrome/browser/tabs/tab_handler.h" |
| #include "chrome/browser/tabs/tab_strip_model_delegate.h" |
| #include "chrome/browser/tabs/tab_strip_model_observer.h" |
| |
| // A TabHandler implementation that interacts with the default TabStripModel. |
| // The intent is that the TabStripModel API is contained at this level, and |
| // never propagates beyond to the Browser. |
| class DefaultTabHandler : public TabHandler, |
| public TabStripModelDelegate, |
| public TabStripModelObserver { |
| public: |
| explicit DefaultTabHandler(TabHandlerDelegate* delegate); |
| virtual ~DefaultTabHandler(); |
| |
| // Overridden from TabHandler: |
| virtual TabStripModel* GetTabStripModel() const; |
| |
| // Overridden from TabStripModelDelegate: |
| virtual TabContentsWrapper* AddBlankTab(bool foreground); |
| virtual TabContentsWrapper* AddBlankTabAt(int index, bool foreground); |
| virtual Browser* CreateNewStripWithContents( |
| TabContentsWrapper* detached_contents, |
| const gfx::Rect& window_bounds, |
| const DockInfo& dock_info, |
| bool maximize); |
| virtual int GetDragActions() const; |
| virtual TabContentsWrapper* CreateTabContentsForURL( |
| const GURL& url, |
| const GURL& referrer, |
| Profile* profile, |
| PageTransition::Type transition, |
| bool defer_load, |
| SiteInstance* instance) const; |
| virtual bool CanDuplicateContentsAt(int index); |
| virtual void DuplicateContentsAt(int index); |
| virtual void CloseFrameAfterDragSession(); |
| virtual void CreateHistoricalTab(TabContentsWrapper* contents); |
| virtual bool RunUnloadListenerBeforeClosing(TabContentsWrapper* contents); |
| virtual bool CanCloseContentsAt(int index); |
| virtual bool CanBookmarkAllTabs() const; |
| virtual void BookmarkAllTabs(); |
| virtual bool CanCloseTab() const; |
| virtual void ToggleUseVerticalTabs(); |
| virtual bool CanRestoreTab(); |
| virtual void RestoreTab(); |
| virtual bool LargeIconsPermitted() const; |
| virtual bool UseVerticalTabs() const; |
| |
| // Overridden from TabStripModelObserver: |
| virtual void TabInsertedAt(TabContentsWrapper* contents, |
| int index, |
| bool foreground); |
| virtual void TabClosingAt(TabStripModel* tab_strip_model, |
| TabContentsWrapper* contents, |
| int index); |
| virtual void TabDetachedAt(TabContentsWrapper* contents, int index); |
| virtual void TabDeselected(TabContentsWrapper* contents); |
| virtual void TabSelectedAt(TabContentsWrapper* old_contents, |
| TabContentsWrapper* new_contents, |
| int index, |
| bool user_gesture); |
| virtual void TabMoved(TabContentsWrapper* contents, |
| int from_index, |
| int to_index); |
| virtual void TabReplacedAt(TabStripModel* tab_strip_model, |
| TabContentsWrapper* old_contents, |
| TabContentsWrapper* new_contents, |
| int index); |
| virtual void TabPinnedStateChanged(TabContentsWrapper* contents, int index); |
| virtual void TabStripEmpty(); |
| |
| private: |
| TabHandlerDelegate* delegate_; |
| |
| scoped_ptr<TabStripModel> model_; |
| |
| DISALLOW_COPY_AND_ASSIGN(DefaultTabHandler); |
| }; |
| |
| #endif // CHROME_BROWSER_TABS_DEFAULT_TAB_HANDLER_H_ |
| |