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

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

Issue 2706253002: Change creation order of TabModel observers. (Closed)
Patch Set: Created 3 years, 10 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 313 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698