| Index: ios/chrome/browser/tabs/tab_model.mm
|
| diff --git a/ios/chrome/browser/tabs/tab_model.mm b/ios/chrome/browser/tabs/tab_model.mm
|
| index 96e8eef16dfcbe91fd34e1314dd67ec9ead3ad3f..7a9a5acb901ab75f10be7a1405637df59b774fd3 100644
|
| --- a/ios/chrome/browser/tabs/tab_model.mm
|
| +++ b/ios/chrome/browser/tabs/tab_model.mm
|
| @@ -549,15 +549,23 @@ web::WebState* GetOpenerForWebState(const WebStateList& web_state_list,
|
| return tab;
|
| }
|
|
|
| -- (void)insertTab:(Tab*)tab atIndex:(NSUInteger)index {
|
| +- (void)insertTab:(Tab*)tab
|
| + atIndex:(NSUInteger)index
|
| + transition:(ui::PageTransition)transition {
|
| DCHECK(tab);
|
| DCHECK(![_tabRetainer containsObject:tab]);
|
| - DCHECK_LE(index, static_cast<NSUInteger>(INT_MAX));
|
| +
|
| + int insertion_index;
|
| + if (index == TabModelConstants::kTabPositionAutomatically) {
|
| + insertion_index = WebStateList::kInvalidIndex;
|
| + } else {
|
| + DCHECK_LE(index, static_cast<NSUInteger>(INT_MAX));
|
| + insertion_index = static_cast<int>(index);
|
| + }
|
|
|
| [_tabRetainer addObject:tab];
|
| - _webStateList.InsertWebState(
|
| - static_cast<int>(index), tab.webState,
|
| - GetOpenerForWebState(_webStateList, tab.webState));
|
| + _webStateList.AddWebState(insertion_index, transition, tab.webState,
|
| + GetOpenerForWebState(_webStateList, tab.webState));
|
|
|
| // Persist the session due to a new tab being inserted. If this is a
|
| // background tab (will not become active), saving now will capture the
|
| @@ -568,6 +576,14 @@ web::WebState* GetOpenerForWebState(const WebStateList& web_state_list,
|
| ++_newTabCount;
|
| }
|
|
|
| +- (void)insertTab:(Tab*)tab atIndex:(NSUInteger)index {
|
| + DCHECK(tab);
|
| + DCHECK(![_tabRetainer containsObject:tab]);
|
| + DCHECK_LE(index, static_cast<NSUInteger>(INT_MAX));
|
| +
|
| + [self insertTab:tab atIndex:index transition:ui::PAGE_TRANSITION_GENERATED];
|
| +}
|
| +
|
| - (void)moveTab:(Tab*)tab toIndex:(NSUInteger)toIndex {
|
| DCHECK([_tabRetainer containsObject:tab]);
|
| DCHECK_LE(toIndex, static_cast<NSUInteger>(INT_MAX));
|
| @@ -857,39 +873,7 @@ web::WebState* GetOpenerForWebState(const WebStateList& web_state_list,
|
| browserState:_browserState]);
|
| [tab webController].webUsageEnabled = webUsageEnabled_;
|
|
|
| - if ((PageTransitionCoreTypeIs(params.transition_type,
|
| - ui::PAGE_TRANSITION_LINK)) &&
|
| - (index == TabModelConstants::kTabPositionAutomatically)) {
|
| - DCHECK(!parentTab || [self indexOfTab:parentTab] != NSNotFound);
|
| - // Assume tabs opened via link clicks are part of the same "task" as their
|
| - // parent and are grouped together.
|
| - TabModelOrderConstants::InsertionAdjacency adjacency =
|
| - inBackground ? TabModelOrderConstants::kAdjacentAfter
|
| - : TabModelOrderConstants::kAdjacentBefore;
|
| - index = [_orderController insertionIndexForTab:tab
|
| - transition:params.transition_type
|
| - opener:parentTab
|
| - adjacency:adjacency];
|
| - } else {
|
| - // For all other types, respect what was passed to us, normalizing values
|
| - // that are too large.
|
| - if (index >= self.count)
|
| - index = [_orderController insertionIndexForAppending];
|
| - }
|
| -
|
| - if (PageTransitionCoreTypeIs(params.transition_type,
|
| - ui::PAGE_TRANSITION_TYPED) &&
|
| - index == self.count) {
|
| - // Also, any tab opened at the end of the TabStrip with a "TYPED"
|
| - // transition inherit group as well. This covers the cases where the user
|
| - // creates a New Tab (e.g. Ctrl+T, or clicks the New Tab button), or types
|
| - // in the address bar and presses Alt+Enter. This allows for opening a new
|
| - // Tab to quickly look up something. When this Tab is closed, the old one
|
| - // is re-selected, not the next-adjacent.
|
| - // TODO(crbug.com/661988): Make this work.
|
| - }
|
| -
|
| - [self insertTab:tab atIndex:index];
|
| + [self insertTab:tab atIndex:index transition:params.transition_type];
|
|
|
| if (!inBackground && _tabUsageRecorder)
|
| _tabUsageRecorder->TabCreatedForSelection(tab);
|
| @@ -1087,7 +1071,7 @@ web::WebState* GetOpenerForWebState(const WebStateList& web_state_list,
|
| referrer:referrer
|
| windowName:windowName
|
| opener:nil
|
| - atIndex:[_orderController insertionIndexForAppending]];
|
| + atIndex:self.count];
|
| }
|
|
|
| - (Tab*)insertTabWithURL:(const GURL&)URL
|
|
|