default_tab_handler.cc revision 731df977c0511bca2206b5f333555b1205ff1f43
1// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "chrome/browser/tabs/default_tab_handler.h" 6 7#include "chrome/browser/browser.h" 8#include "chrome/browser/tabs/tab_strip_model.h" 9 10//////////////////////////////////////////////////////////////////////////////// 11// DefaultTabHandler, public: 12 13DefaultTabHandler::DefaultTabHandler(TabHandlerDelegate* delegate) 14 : delegate_(delegate), 15 ALLOW_THIS_IN_INITIALIZER_LIST( 16 model_(new TabStripModel(this, delegate->GetProfile()))) { 17 model_->AddObserver(this); 18} 19 20DefaultTabHandler::~DefaultTabHandler() { 21 // The tab strip should not have any tabs at this point. 22 DCHECK(model_->empty()); 23 model_->RemoveObserver(this); 24} 25 26//////////////////////////////////////////////////////////////////////////////// 27// DefaultTabHandler, TabHandler implementation: 28 29TabStripModel* DefaultTabHandler::GetTabStripModel() const { 30 return model_.get(); 31} 32 33//////////////////////////////////////////////////////////////////////////////// 34// DefaultTabHandler, TabStripModelDelegate implementation: 35 36TabContents* DefaultTabHandler::AddBlankTab(bool foreground) { 37 return delegate_->AsBrowser()->AddBlankTab(foreground); 38} 39 40TabContents* DefaultTabHandler::AddBlankTabAt(int index, bool foreground) { 41 return delegate_->AsBrowser()->AddBlankTabAt(index, foreground); 42} 43 44Browser* DefaultTabHandler::CreateNewStripWithContents( 45 TabContents* detached_contents, 46 const gfx::Rect& window_bounds, 47 const DockInfo& dock_info, 48 bool maximize) { 49 return delegate_->AsBrowser()->CreateNewStripWithContents(detached_contents, 50 window_bounds, 51 dock_info, 52 maximize); 53} 54 55void DefaultTabHandler::ContinueDraggingDetachedTab( 56 TabContents* contents, 57 const gfx::Rect& window_bounds, 58 const gfx::Rect& tab_bounds) { 59 delegate_->AsBrowser()->ContinueDraggingDetachedTab(contents, 60 window_bounds, 61 tab_bounds); 62} 63 64int DefaultTabHandler::GetDragActions() const { 65 return delegate_->AsBrowser()->GetDragActions(); 66} 67 68TabContents* DefaultTabHandler::CreateTabContentsForURL( 69 const GURL& url, 70 const GURL& referrer, 71 Profile* profile, 72 PageTransition::Type transition, 73 bool defer_load, 74 SiteInstance* instance) const { 75 return delegate_->AsBrowser()->CreateTabContentsForURL(url, 76 referrer, 77 profile, 78 transition, 79 defer_load, 80 instance); 81} 82 83bool DefaultTabHandler::CanDuplicateContentsAt(int index) { 84 return delegate_->AsBrowser()->CanDuplicateContentsAt(index); 85} 86 87void DefaultTabHandler::DuplicateContentsAt(int index) { 88 delegate_->AsBrowser()->DuplicateContentsAt(index); 89} 90 91void DefaultTabHandler::CloseFrameAfterDragSession() { 92 delegate_->AsBrowser()->CloseFrameAfterDragSession(); 93} 94 95void DefaultTabHandler::CreateHistoricalTab(TabContents* contents) { 96 delegate_->AsBrowser()->CreateHistoricalTab(contents); 97} 98 99bool DefaultTabHandler::RunUnloadListenerBeforeClosing(TabContents* contents) { 100 return delegate_->AsBrowser()->RunUnloadListenerBeforeClosing(contents); 101} 102 103bool DefaultTabHandler::CanCloseContentsAt(int index) { 104 return delegate_->AsBrowser()->CanCloseContentsAt(index); 105} 106 107bool DefaultTabHandler::CanBookmarkAllTabs() const { 108 return delegate_->AsBrowser()->CanBookmarkAllTabs(); 109} 110 111void DefaultTabHandler::BookmarkAllTabs() { 112 delegate_->AsBrowser()->BookmarkAllTabs(); 113} 114 115bool DefaultTabHandler::CanCloseTab() const { 116 return delegate_->AsBrowser()->CanCloseTab(); 117} 118 119void DefaultTabHandler::ToggleUseVerticalTabs() { 120 delegate_->AsBrowser()->ToggleUseVerticalTabs(); 121} 122 123bool DefaultTabHandler::CanRestoreTab() { 124 return delegate_->AsBrowser()->CanRestoreTab(); 125} 126 127void DefaultTabHandler::RestoreTab() { 128 delegate_->AsBrowser()->RestoreTab(); 129} 130 131bool DefaultTabHandler::LargeIconsPermitted() const { 132 return delegate_->AsBrowser()->LargeIconsPermitted(); 133} 134 135bool DefaultTabHandler::UseVerticalTabs() const { 136 return delegate_->AsBrowser()->UseVerticalTabs(); 137} 138 139//////////////////////////////////////////////////////////////////////////////// 140// DefaultTabHandler, TabStripModelObserver implementation: 141 142void DefaultTabHandler::TabInsertedAt(TabContents* contents, 143 int index, 144 bool foreground) { 145 delegate_->AsBrowser()->TabInsertedAt(contents, index, foreground); 146} 147 148void DefaultTabHandler::TabClosingAt(TabStripModel* tab_strip_model, 149 TabContents* contents, 150 int index) { 151 delegate_->AsBrowser()->TabClosingAt(tab_strip_model, contents, index); 152} 153 154void DefaultTabHandler::TabDetachedAt(TabContents* contents, int index) { 155 delegate_->AsBrowser()->TabDetachedAt(contents, index); 156} 157 158void DefaultTabHandler::TabDeselectedAt(TabContents* contents, int index) { 159 delegate_->AsBrowser()->TabDeselectedAt(contents, index); 160} 161 162void DefaultTabHandler::TabSelectedAt(TabContents* old_contents, 163 TabContents* new_contents, 164 int index, 165 bool user_gesture) { 166 delegate_->AsBrowser()->TabSelectedAt(old_contents, 167 new_contents, 168 index, 169 user_gesture); 170} 171 172void DefaultTabHandler::TabMoved(TabContents* contents, 173 int from_index, 174 int to_index) { 175 delegate_->AsBrowser()->TabMoved(contents, from_index, to_index); 176} 177 178void DefaultTabHandler::TabReplacedAt(TabContents* old_contents, 179 TabContents* new_contents, 180 int index) { 181 delegate_->AsBrowser()->TabReplacedAt(old_contents, new_contents, index); 182} 183 184void DefaultTabHandler::TabPinnedStateChanged(TabContents* contents, 185 int index) { 186 delegate_->AsBrowser()->TabPinnedStateChanged(contents, index); 187} 188 189void DefaultTabHandler::TabStripEmpty() { 190 delegate_->AsBrowser()->TabStripEmpty(); 191} 192 193//////////////////////////////////////////////////////////////////////////////// 194// TabHandler, public: 195 196// static 197TabHandler* TabHandler::CreateTabHandler(TabHandlerDelegate* delegate) { 198 return new DefaultTabHandler(delegate); 199} 200 201