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