Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(55)

Side by Side Diff: chrome/browser/tabs/tab_strip_model.cc

Issue 5610005: Makes instant run before unload listeners. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/chrome
Patch Set: Fix comments and reset session id appropriately Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/tabs/tab_strip_model.h ('k') | chrome/browser/tabs/tab_strip_model_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/tabs/tab_strip_model.h" 5 #include "chrome/browser/tabs/tab_strip_model.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/stl_util-inl.h" 10 #include "base/stl_util-inl.h"
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 ++selected_index_; 158 ++selected_index_;
159 } 159 }
160 160
161 FOR_EACH_OBSERVER(TabStripModelObserver, observers_, 161 FOR_EACH_OBSERVER(TabStripModelObserver, observers_,
162 TabInsertedAt(contents, index, foreground)); 162 TabInsertedAt(contents, index, foreground));
163 163
164 if (foreground) 164 if (foreground)
165 ChangeSelectedContentsFrom(selected_contents, index, false); 165 ChangeSelectedContentsFrom(selected_contents, index, false);
166 } 166 }
167 167
168 void TabStripModel::ReplaceTabContentsAt(int index, 168 TabContentsWrapper* TabStripModel::ReplaceTabContentsAt(
169 TabContentsWrapper* new_contents) { 169 int index,
170 TabContentsWrapper* new_contents) {
170 // TODO: this should reset group/opener of any tabs that point at 171 // TODO: this should reset group/opener of any tabs that point at
171 // old_contents. 172 // old_contents.
172 DCHECK(ContainsIndex(index)); 173 DCHECK(ContainsIndex(index));
173 scoped_ptr<TabContentsWrapper> old_contents(GetContentsAt(index)); 174 TabContentsWrapper* old_contents = GetContentsAt(index);
174 175
175 contents_data_[index]->contents = new_contents; 176 contents_data_[index]->contents = new_contents;
176 177
177 FOR_EACH_OBSERVER(TabStripModelObserver, observers_, 178 FOR_EACH_OBSERVER(TabStripModelObserver, observers_,
178 TabReplacedAt(old_contents.get(), new_contents, index)); 179 TabReplacedAt(old_contents, new_contents, index));
179 180
180 // When the selected tab contents is replaced send out selected notification 181 // When the selected tab contents is replaced send out selected notification
181 // too. We do this as nearly all observers need to treat a replace of the 182 // too. We do this as nearly all observers need to treat a replace of the
182 // selected contents as selection changing. 183 // selected contents as selection changing.
183 if (selected_index_ == index) { 184 if (selected_index_ == index) {
184 FOR_EACH_OBSERVER(TabStripModelObserver, observers_, 185 FOR_EACH_OBSERVER(TabStripModelObserver, observers_,
185 TabSelectedAt(old_contents.get(), new_contents, 186 TabSelectedAt(old_contents, new_contents,
186 selected_index_, false)); 187 selected_index_, false));
187 } 188 }
189 return old_contents;
188 } 190 }
189 191
190 void TabStripModel::ReplaceNavigationControllerAt( 192 void TabStripModel::ReplaceNavigationControllerAt(
191 int index, TabContentsWrapper* contents) { 193 int index, TabContentsWrapper* contents) {
192 // This appears to be OK with no flicker since no redraw event 194 // This appears to be OK with no flicker since no redraw event
193 // occurs between the call to add an aditional tab and one to close 195 // occurs between the call to add an aditional tab and one to close
194 // the previous tab. 196 // the previous tab.
195 InsertTabContentsAt( 197 InsertTabContentsAt(
196 index + 1, contents, 198 index + 1, contents,
197 ADD_SELECTED | ADD_INHERIT_GROUP); 199 ADD_SELECTED | ADD_INHERIT_GROUP);
(...skipping 803 matching lines...) Expand 10 before | Expand all | Expand 10 after
1001 FOR_EACH_OBSERVER(TabStripModelObserver, observers_, 1003 FOR_EACH_OBSERVER(TabStripModelObserver, observers_,
1002 TabMoved(moved_data->contents, index, to_position)); 1004 TabMoved(moved_data->contents, index, to_position));
1003 } 1005 }
1004 1006
1005 // static 1007 // static
1006 bool TabStripModel::OpenerMatches(const TabContentsData* data, 1008 bool TabStripModel::OpenerMatches(const TabContentsData* data,
1007 const NavigationController* opener, 1009 const NavigationController* opener,
1008 bool use_group) { 1010 bool use_group) {
1009 return data->opener == opener || (use_group && data->group == opener); 1011 return data->opener == opener || (use_group && data->group == opener);
1010 } 1012 }
OLDNEW
« no previous file with comments | « chrome/browser/tabs/tab_strip_model.h ('k') | chrome/browser/tabs/tab_strip_model_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698