| OLD | NEW |
| 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 313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 324 sessionService:(SessionServiceIOS*)service | 324 sessionService:(SessionServiceIOS*)service |
| 325 browserState:(ios::ChromeBrowserState*)browserState { | 325 browserState:(ios::ChromeBrowserState*)browserState { |
| 326 if ((self = [super init])) { | 326 if ((self = [super init])) { |
| 327 _tabRetainer.reset([[NSMutableSet alloc] init]); | 327 _tabRetainer.reset([[NSMutableSet alloc] init]); |
| 328 _observers.reset([[TabModelObservers observers] retain]); | 328 _observers.reset([[TabModelObservers observers] retain]); |
| 329 | 329 |
| 330 _fastEnumerationHelper.reset([[WebStateListFastEnumerationHelper alloc] | 330 _fastEnumerationHelper.reset([[WebStateListFastEnumerationHelper alloc] |
| 331 initWithWebStateList:&_webStateList | 331 initWithWebStateList:&_webStateList |
| 332 proxyFactory:[[TabModelWebStateProxyFactory alloc] init]]); | 332 proxyFactory:[[TabModelWebStateProxyFactory alloc] init]]); |
| 333 | 333 |
| 334 _browserState = browserState; |
| 335 DCHECK(_browserState); |
| 336 |
| 337 // Normal browser states are the only ones to get tab restore. Tab sync |
| 338 // handles incognito browser states by filtering on profile, so it's |
| 339 // important to the backend code to always have a sync window delegate. |
| 340 if (!_browserState->IsOffTheRecord()) { |
| 341 // Set up the usage recorder before tabs are created. |
| 342 _tabUsageRecorder = base::MakeUnique<TabUsageRecorder>(self); |
| 343 } |
| 344 _syncedWindowDelegate = |
| 345 base::MakeUnique<TabModelSyncedWindowDelegate>(self); |
| 346 |
| 347 // There must be a valid session service defined to consume session windows. |
| 348 DCHECK(service); |
| 349 _sessionService.reset([service retain]); |
| 350 |
| 334 _observerBridges.push_back(base::MakeUnique<TabParentingObserver>()); | 351 _observerBridges.push_back(base::MakeUnique<TabParentingObserver>()); |
| 335 _observerBridges.push_back(base::MakeUnique<WebStateListObserverBridge>( | 352 _observerBridges.push_back(base::MakeUnique<WebStateListObserverBridge>( |
| 336 [[TabModelObserversBridge alloc] initWithTabModel:self | 353 [[TabModelObserversBridge alloc] initWithTabModel:self |
| 337 tabModelObservers:_observers.get()])); | 354 tabModelObservers:_observers.get()])); |
| 338 _observerBridges.push_back(base::MakeUnique<WebStateListMetricsObserver>()); | 355 _observerBridges.push_back(base::MakeUnique<WebStateListMetricsObserver>()); |
| 356 |
| 339 for (const auto& observerBridge : _observerBridges) | 357 for (const auto& observerBridge : _observerBridges) |
| 340 _webStateList.AddObserver(observerBridge.get()); | 358 _webStateList.AddObserver(observerBridge.get()); |
| 341 | 359 |
| 342 _browserState = browserState; | |
| 343 DCHECK(_browserState); | |
| 344 | |
| 345 // There must be a valid session service defined to consume session windows. | |
| 346 DCHECK(service); | |
| 347 _sessionService.reset([service retain]); | |
| 348 | |
| 349 // Normal browser states are the only ones to get tab restore. Tab sync | |
| 350 // handles incognito browser states by filtering on profile, so it's | |
| 351 // important to the backend code to always have a sync window delegate. | |
| 352 if (!_browserState->IsOffTheRecord()) { | |
| 353 // Set up the usage recorder before tabs are created. | |
| 354 _tabUsageRecorder.reset(new TabUsageRecorder(self)); | |
| 355 } | |
| 356 _syncedWindowDelegate.reset(new TabModelSyncedWindowDelegate(self)); | |
| 357 | |
| 358 if (window) { | 360 if (window) { |
| 359 DCHECK([_observers empty]); | 361 DCHECK([_observers empty]); |
| 360 // Restore the session and reset the session metrics (as the event have | 362 // Restore the session and reset the session metrics (as the event have |
| 361 // not been generated by the user but by a cold start cycle). | 363 // not been generated by the user but by a cold start cycle). |
| 362 [self restoreSessionWindow:window persistState:NO]; | 364 [self restoreSessionWindow:window persistState:NO]; |
| 363 [self resetSessionMetrics]; | 365 [self resetSessionMetrics]; |
| 364 } | 366 } |
| 365 | 367 |
| 366 _orderController.reset( | 368 _orderController.reset( |
| 367 [[TabModelOrderController alloc] initWithTabModel:self]); | 369 [[TabModelOrderController alloc] initWithTabModel:self]); |
| (...skipping 765 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1133 web::NavigationManager::WebLoadParams params(URL); | 1135 web::NavigationManager::WebLoadParams params(URL); |
| 1134 params.referrer = referrer; | 1136 params.referrer = referrer; |
| 1135 params.transition_type = ui::PAGE_TRANSITION_TYPED; | 1137 params.transition_type = ui::PAGE_TRANSITION_TYPED; |
| 1136 [[tab webController] loadWithParams:params]; | 1138 [[tab webController] loadWithParams:params]; |
| 1137 [tab webController].webUsageEnabled = webUsageEnabled_; | 1139 [tab webController].webUsageEnabled = webUsageEnabled_; |
| 1138 [self insertTab:tab atIndex:index opener:parentTab]; | 1140 [self insertTab:tab atIndex:index opener:parentTab]; |
| 1139 return tab; | 1141 return tab; |
| 1140 } | 1142 } |
| 1141 | 1143 |
| 1142 @end | 1144 @end |
| OLD | NEW |