| OLD | NEW | 
|     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  Loading... | 
|   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  Loading... | 
|  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 } | 
| OLD | NEW |