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

Side by Side Diff: ios/chrome/browser/ui/main/browser_view_wrangler.mm

Issue 2811593004: [ios] Allow having multiple session windows in a session. (Closed)
Patch Set: Address comments. Created 3 years, 8 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 | « ios/chrome/browser/test/perf_test_with_bvc_ios.mm ('k') | 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/ui/main/browser_view_wrangler.h" 5 #import "ios/chrome/browser/ui/main/browser_view_wrangler.h"
6 6
7 #include "base/mac/objc_property_releaser.h" 7 #include "base/mac/objc_property_releaser.h"
8 #import "base/mac/scoped_nsobject.h" 8 #import "base/mac/scoped_nsobject.h"
9 #include "base/strings/sys_string_conversions.h" 9 #include "base/strings/sys_string_conversions.h"
10 #include "ios/chrome/browser/application_context.h" 10 #include "ios/chrome/browser/application_context.h"
11 #include "ios/chrome/browser/browser_state/chrome_browser_state.h" 11 #include "ios/chrome/browser/browser_state/chrome_browser_state.h"
12 #import "ios/chrome/browser/browsing_data/browsing_data_removal_controller.h" 12 #import "ios/chrome/browser/browsing_data/browsing_data_removal_controller.h"
13 #include "ios/chrome/browser/browsing_data/ios_chrome_browsing_data_remover.h" 13 #include "ios/chrome/browser/browsing_data/ios_chrome_browsing_data_remover.h"
14 #include "ios/chrome/browser/crash_report/crash_report_helper.h" 14 #include "ios/chrome/browser/crash_report/crash_report_helper.h"
15 #import "ios/chrome/browser/device_sharing/device_sharing_manager.h" 15 #import "ios/chrome/browser/device_sharing/device_sharing_manager.h"
16 #import "ios/chrome/browser/physical_web/start_physical_web_discovery.h" 16 #import "ios/chrome/browser/physical_web/start_physical_web_discovery.h"
17 #import "ios/chrome/browser/sessions/session_ios.h"
17 #import "ios/chrome/browser/sessions/session_service_ios.h" 18 #import "ios/chrome/browser/sessions/session_service_ios.h"
18 #import "ios/chrome/browser/sessions/session_window_ios.h" 19 #import "ios/chrome/browser/sessions/session_window_ios.h"
19 #import "ios/chrome/browser/tabs/tab.h" 20 #import "ios/chrome/browser/tabs/tab.h"
20 #import "ios/chrome/browser/tabs/tab_model.h" 21 #import "ios/chrome/browser/tabs/tab_model.h"
21 #import "ios/chrome/browser/tabs/tab_model_observer.h" 22 #import "ios/chrome/browser/tabs/tab_model_observer.h"
22 #import "ios/chrome/browser/ui/browser_view_controller.h" 23 #import "ios/chrome/browser/ui/browser_view_controller.h"
23 #import "ios/chrome/browser/ui/browser_view_controller_dependency_factory.h" 24 #import "ios/chrome/browser/ui/browser_view_controller_dependency_factory.h"
24 #include "ios/public/provider/chrome/browser/chrome_browser_provider.h" 25 #include "ios/public/provider/chrome/browser/chrome_browser_provider.h"
25 26
26 @interface BrowserViewWrangler ()<TabModelObserver> { 27 @interface BrowserViewWrangler ()<TabModelObserver> {
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after
293 return [self tabModelForBrowserState:otrBrowserState empty:empty]; 294 return [self tabModelForBrowserState:otrBrowserState empty:empty];
294 } 295 }
295 296
296 - (TabModel*)tabModelForBrowserState:(ios::ChromeBrowserState*)browserState 297 - (TabModel*)tabModelForBrowserState:(ios::ChromeBrowserState*)browserState
297 empty:(BOOL)empty { 298 empty:(BOOL)empty {
298 SessionWindowIOS* sessionWindow = nil; 299 SessionWindowIOS* sessionWindow = nil;
299 if (!empty) { 300 if (!empty) {
300 // Load existing saved tab model state. 301 // Load existing saved tab model state.
301 NSString* statePath = 302 NSString* statePath =
302 base::SysUTF8ToNSString(browserState->GetStatePath().AsUTF8Unsafe()); 303 base::SysUTF8ToNSString(browserState->GetStatePath().AsUTF8Unsafe());
303 sessionWindow = [[SessionServiceIOS sharedService] 304 SessionIOS* session =
304 loadSessionWindowFromDirectory:statePath]; 305 [[SessionServiceIOS sharedService] loadSessionFromDirectory:statePath];
306 if (session) {
307 DCHECK_EQ(session.sessionWindows.count, 1u);
308 sessionWindow = session.sessionWindows[0];
309 }
305 } 310 }
306 311
307 // Create tab model from saved session (nil is ok). 312 // Create tab model from saved session (nil is ok).
308 TabModel* tabModel = 313 TabModel* tabModel =
309 [[[TabModel alloc] initWithSessionWindow:sessionWindow 314 [[[TabModel alloc] initWithSessionWindow:sessionWindow
310 sessionService:[SessionServiceIOS sharedService] 315 sessionService:[SessionServiceIOS sharedService]
311 browserState:browserState] autorelease]; 316 browserState:browserState] autorelease];
312 // Add observers. 317 // Add observers.
313 if (_tabModelObserver) { 318 if (_tabModelObserver) {
314 [tabModel addObserver:_tabModelObserver]; 319 [tabModel addObserver:_tabModelObserver];
315 [tabModel addObserver:self]; 320 [tabModel addObserver:self];
316 } 321 }
317 ios_internal::breakpad::MonitorTabStateForTabModel(tabModel); 322 ios_internal::breakpad::MonitorTabStateForTabModel(tabModel);
318 323
319 return tabModel; 324 return tabModel;
320 } 325 }
321 326
322 - (BrowserViewController*)bvcForBrowserState: 327 - (BrowserViewController*)bvcForBrowserState:
323 (ios::ChromeBrowserState*)browserState 328 (ios::ChromeBrowserState*)browserState
324 tabModel:(TabModel*)tabModel { 329 tabModel:(TabModel*)tabModel {
325 base::scoped_nsobject<BrowserViewControllerDependencyFactory> factory( 330 base::scoped_nsobject<BrowserViewControllerDependencyFactory> factory(
326 [[BrowserViewControllerDependencyFactory alloc] 331 [[BrowserViewControllerDependencyFactory alloc]
327 initWithBrowserState:browserState]); 332 initWithBrowserState:browserState]);
328 return [[[BrowserViewController alloc] initWithTabModel:tabModel 333 return [[[BrowserViewController alloc] initWithTabModel:tabModel
329 browserState:browserState 334 browserState:browserState
330 dependencyFactory:factory] autorelease]; 335 dependencyFactory:factory] autorelease];
331 } 336 }
332 337
333 @end 338 @end
OLDNEW
« no previous file with comments | « ios/chrome/browser/test/perf_test_with_bvc_ios.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698