// 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_