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

Side by Side Diff: ios/chrome/browser/tabs/tab_model.mm

Issue 2712743008: Remove -insertTabWithWebState:atIndex: from TabModel. (Closed)
Patch Set: Rebase. Created 3 years, 9 months 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
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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 #import "ios/chrome/browser/tabs/tab_model.h" 5 #import "ios/chrome/browser/tabs/tab_model.h"
6 6
7 #include <cstdint> 7 #include <cstdint>
8 #include <utility> 8 #include <utility>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 496 matching lines...) Expand 10 before | Expand all | Expand 10 after
507 params.transition_type = transition; 507 params.transition_type = transition;
508 // Tabs open by DOM are always renderer initiated. 508 // Tabs open by DOM are always renderer initiated.
509 params.is_renderer_initiated = openedByDOM; 509 params.is_renderer_initiated = openedByDOM;
510 return [self insertTabWithLoadParams:params 510 return [self insertTabWithLoadParams:params
511 opener:parentTab 511 opener:parentTab
512 openedByDOM:openedByDOM 512 openedByDOM:openedByDOM
513 atIndex:index 513 atIndex:index
514 inBackground:inBackground]; 514 inBackground:inBackground];
515 } 515 }
516 516
517 - (Tab*)insertTabWithWebState:(std::unique_ptr<web::WebState>)webState 517 - (Tab*)insertTabWithNavigationItems:
518 atIndex:(NSUInteger)index { 518 (web::ScopedNavigationItemList)navigationItems
519 selectedNavigationIndex:(int)selectedNavigationIndex
520 atIndex:(NSUInteger)index
521 inBackground:(BOOL)inBackground {
519 DCHECK(_browserState); 522 DCHECK(_browserState);
520 DCHECK_EQ(webState->GetBrowserState(), _browserState); 523 auto webState = base::MakeUnique<web::WebStateImpl>(_browserState);
524 webState->GetNavigationManagerImpl().ReplaceSessionHistory(
525 std::move(navigationItems), selectedNavigationIndex);
521 base::scoped_nsobject<Tab> tab( 526 base::scoped_nsobject<Tab> tab(
522 [[Tab alloc] initWithWebState:std::move(webState) model:self]); 527 [[Tab alloc] initWithWebState:std::move(webState) model:self]);
523 [tab webController].webUsageEnabled = webUsageEnabled_; 528 [tab webController].webUsageEnabled = webUsageEnabled_;
524 [self insertTab:tab atIndex:index]; 529 [self insertTab:tab atIndex:index];
530 if (!inBackground)
531 [self setCurrentTab:tab];
525 return tab; 532 return tab;
526 } 533 }
527 534
528 - (void)insertTab:(Tab*)tab 535 - (void)insertTab:(Tab*)tab
529 atIndex:(NSUInteger)index 536 atIndex:(NSUInteger)index
530 opener:(Tab*)parentTab 537 opener:(Tab*)parentTab
531 transition:(ui::PageTransition)transition { 538 transition:(ui::PageTransition)transition {
532 DCHECK(tab); 539 DCHECK(tab);
533 DCHECK(![_tabRetainer containsObject:tab]); 540 DCHECK(![_tabRetainer containsObject:tab]);
534 541
(...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after
865 // at an index larger than n). Then in a second pass fix the openers. 872 // at an index larger than n). Then in a second pass fix the openers.
866 for (CRWSessionStorage* session in sessions) { 873 for (CRWSessionStorage* session in sessions) {
867 std::unique_ptr<web::WebState> webState = 874 std::unique_ptr<web::WebState> webState =
868 web::WebState::Create(params, session); 875 web::WebState::Create(params, session);
869 base::scoped_nsobject<Tab> tab( 876 base::scoped_nsobject<Tab> tab(
870 [[Tab alloc] initWithWebState:std::move(webState) model:self]); 877 [[Tab alloc] initWithWebState:std::move(webState) model:self]);
871 [tab webController].webUsageEnabled = webUsageEnabled_; 878 [tab webController].webUsageEnabled = webUsageEnabled_;
872 [tab webController].usePlaceholderOverlay = YES; 879 [tab webController].usePlaceholderOverlay = YES;
873 880
874 // Restore the CertificatePolicyCache (note that webState is invalid after 881 // Restore the CertificatePolicyCache (note that webState is invalid after
875 // passing it via move semantic to -insertTabWithWebState:atIndex:). 882 // passing it via move semantic to -initWithWebState:model:).
876 UpdateCertificatePolicyCacheFromWebState(policyCache, [tab webState]); 883 UpdateCertificatePolicyCacheFromWebState(policyCache, [tab webState]);
877 [self insertTab:tab atIndex:self.count opener:nil]; 884 [self insertTab:tab atIndex:self.count opener:nil];
878 [restoredTabs addObject:tab.get()]; 885 [restoredTabs addObject:tab.get()];
879 } 886 }
880 887
881 DCHECK_EQ(sessions.count, [restoredTabs count]); 888 DCHECK_EQ(sessions.count, [restoredTabs count]);
882 DCHECK_GT(_webStateList.count(), oldCount); 889 DCHECK_GT(_webStateList.count(), oldCount);
883 890
884 // Fix openers now that all Tabs have been restored. Only look for an opener 891 // Fix openers now that all Tabs have been restored. Only look for an opener
885 // Tab in the newly restored Tabs and not in the already open Tabs. 892 // Tab in the newly restored Tabs and not in the already open Tabs.
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
965 } 972 }
966 973
967 // Called when UIApplicationWillEnterForegroundNotification is received. 974 // Called when UIApplicationWillEnterForegroundNotification is received.
968 - (void)applicationWillEnterForeground:(NSNotification*)notify { 975 - (void)applicationWillEnterForeground:(NSNotification*)notify {
969 if (_tabUsageRecorder) { 976 if (_tabUsageRecorder) {
970 _tabUsageRecorder->AppWillEnterForeground(); 977 _tabUsageRecorder->AppWillEnterForeground();
971 } 978 }
972 } 979 }
973 980
974 @end 981 @end
OLDNEW
« no previous file with comments | « ios/chrome/browser/tabs/tab_model.h ('k') | ios/chrome/browser/tabs/tab_model_observers_bridge.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698