1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Use of this source code is governed by a BSD-style license that can be 3bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// found in the LICENSE file. 4bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 5bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#ifndef CHROME_BROWSER_TABS_DEFAULT_TAB_HANDLER_H_ 6bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#define CHROME_BROWSER_TABS_DEFAULT_TAB_HANDLER_H_ 7bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#pragma once 8bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/scoped_ptr.h" 10bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "chrome/browser/tabs/tab_handler.h" 11bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "chrome/browser/tabs/tab_strip_model_delegate.h" 12bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "chrome/browser/tabs/tab_strip_model_observer.h" 13bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 14bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// A TabHandler implementation that interacts with the default TabStripModel. 15bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// The intent is that the TabStripModel API is contained at this level, and 16bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// never propagates beyond to the Browser. 17bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass DefaultTabHandler : public TabHandler, 18bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen public TabStripModelDelegate, 19bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen public TabStripModelObserver { 20bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen public: 21bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen explicit DefaultTabHandler(TabHandlerDelegate* delegate); 22bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen virtual ~DefaultTabHandler(); 23bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 24bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // Overridden from TabHandler: 25bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen virtual TabStripModel* GetTabStripModel() const; 26bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 27bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // Overridden from TabStripModelDelegate: 28201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch virtual TabContentsWrapper* AddBlankTab(bool foreground); 29201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch virtual TabContentsWrapper* AddBlankTabAt(int index, bool foreground); 30201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch virtual Browser* CreateNewStripWithContents( 31201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch TabContentsWrapper* detached_contents, 32201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch const gfx::Rect& window_bounds, 33201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch const DockInfo& dock_info, 34201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch bool maximize); 35bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen virtual int GetDragActions() const; 36201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch virtual TabContentsWrapper* CreateTabContentsForURL( 37201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch const GURL& url, 38201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch const GURL& referrer, 39201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch Profile* profile, 40201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch PageTransition::Type transition, 41201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch bool defer_load, 42201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch SiteInstance* instance) const; 43bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen virtual bool CanDuplicateContentsAt(int index); 44bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen virtual void DuplicateContentsAt(int index); 45bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen virtual void CloseFrameAfterDragSession(); 46201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch virtual void CreateHistoricalTab(TabContentsWrapper* contents); 47201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch virtual bool RunUnloadListenerBeforeClosing(TabContentsWrapper* contents); 48bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen virtual bool CanCloseContentsAt(int index); 49bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen virtual bool CanBookmarkAllTabs() const; 50bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen virtual void BookmarkAllTabs(); 51bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen virtual bool CanCloseTab() const; 52bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen virtual void ToggleUseVerticalTabs(); 53bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen virtual bool CanRestoreTab(); 54bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen virtual void RestoreTab(); 55bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen virtual bool LargeIconsPermitted() const; 56bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen virtual bool UseVerticalTabs() const; 57bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 58bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // Overridden from TabStripModelObserver: 59201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch virtual void TabInsertedAt(TabContentsWrapper* contents, 60bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen int index, 61bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen bool foreground); 62731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick virtual void TabClosingAt(TabStripModel* tab_strip_model, 63201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch TabContentsWrapper* contents, 64731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick int index); 65201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch virtual void TabDetachedAt(TabContentsWrapper* contents, int index); 66dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual void TabDeselected(TabContentsWrapper* contents); 67201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch virtual void TabSelectedAt(TabContentsWrapper* old_contents, 68201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch TabContentsWrapper* new_contents, 69bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen int index, 70bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen bool user_gesture); 71201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch virtual void TabMoved(TabContentsWrapper* contents, 72bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen int from_index, 73bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen int to_index); 7472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen virtual void TabReplacedAt(TabStripModel* tab_strip_model, 7572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen TabContentsWrapper* old_contents, 76201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch TabContentsWrapper* new_contents, 77bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen int index); 78201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch virtual void TabPinnedStateChanged(TabContentsWrapper* contents, int index); 79bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen virtual void TabStripEmpty(); 80bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 81bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen private: 82bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen TabHandlerDelegate* delegate_; 83bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 84bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen scoped_ptr<TabStripModel> model_; 85bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 86bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen DISALLOW_COPY_AND_ASSIGN(DefaultTabHandler); 87bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}; 88bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 89bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#endif // CHROME_BROWSER_TABS_DEFAULT_TAB_HANDLER_H_ 90bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 91