| OLD | NEW |
| (Empty) |
| 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 | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 // ====== New Architecture ===== | |
| 6 // = This code is only used in the new iOS Chrome architecture. = | |
| 7 // ============================================================================ | |
| 8 | |
| 9 #import "ios/chrome/app/app_delegate.h" | |
| 10 | |
| 11 #import "ios/chrome/app/application_state.h" | |
| 12 #import "ios/chrome/app/steps/launch_to_background.h" | |
| 13 #import "ios/chrome/app/steps/launch_to_basic.h" | |
| 14 #import "ios/chrome/app/steps/launch_to_foreground.h" | |
| 15 #import "ios/chrome/app/steps/tab_grid_coordinator+application_step.h" | |
| 16 | |
| 17 #if !defined(__has_feature) || !__has_feature(objc_arc) | |
| 18 #error "This file requires ARC support." | |
| 19 #endif | |
| 20 | |
| 21 @interface AppDelegate () | |
| 22 @property(nonatomic, strong) ApplicationState* applicationState; | |
| 23 @end | |
| 24 | |
| 25 @implementation AppDelegate | |
| 26 | |
| 27 @synthesize applicationState = _applicationState; | |
| 28 | |
| 29 #pragma mark - UIApplicationDelegate (app state changes and system events) | |
| 30 | |
| 31 - (BOOL)application:(UIApplication*)application | |
| 32 didFinishLaunchingWithOptions:(NSDictionary*)launchOptions { | |
| 33 self.applicationState = [[ApplicationState alloc] init]; | |
| 34 self.applicationState.application = application; | |
| 35 [self configureApplicationState]; | |
| 36 | |
| 37 [self.applicationState launchWithOptions:launchOptions]; | |
| 38 return YES; | |
| 39 } | |
| 40 | |
| 41 - (void)applicationDidBecomeActive:(UIApplication*)application { | |
| 42 } | |
| 43 | |
| 44 - (void)applicationWillResignActive:(UIApplication*)application { | |
| 45 } | |
| 46 | |
| 47 - (void)applicationDidEnterBackground:(UIApplication*)application { | |
| 48 } | |
| 49 | |
| 50 - (void)applicationWillEnterForeground:(UIApplication*)application { | |
| 51 } | |
| 52 | |
| 53 - (void)applicationWillTerminate:(UIApplication*)application { | |
| 54 } | |
| 55 | |
| 56 - (void)applicationDidReceiveMemoryWarning:(UIApplication*)application { | |
| 57 } | |
| 58 | |
| 59 #pragma mark - UIApplicationDelegate (background dowloading) | |
| 60 | |
| 61 - (void)application:(UIApplication*)application | |
| 62 performFetchWithCompletionHandler: | |
| 63 (void (^)(UIBackgroundFetchResult))completionHandler { | |
| 64 } | |
| 65 | |
| 66 - (void)application:(UIApplication*)application | |
| 67 handleEventsForBackgroundURLSession:(NSString*)identifier | |
| 68 completionHandler:(void (^)())completionHandler { | |
| 69 } | |
| 70 | |
| 71 #pragma mark - UIApplicationDelegate (user activity and quick actions) | |
| 72 | |
| 73 - (BOOL)application:(UIApplication*)application | |
| 74 willContinueUserActivityWithType:(NSString*)userActivityType { | |
| 75 return NO; | |
| 76 } | |
| 77 | |
| 78 - (BOOL)application:(UIApplication*)application | |
| 79 continueUserActivity:(NSUserActivity*)userActivity | |
| 80 restorationHandler:(void (^)(NSArray*))restorationHandler { | |
| 81 return NO; | |
| 82 } | |
| 83 | |
| 84 - (void)application:(UIApplication*)application | |
| 85 performActionForShortcutItem:(UIApplicationShortcutItem*)shortcutItem | |
| 86 completionHandler:(void (^)(BOOL))completionHandler { | |
| 87 } | |
| 88 | |
| 89 #pragma mark - UIApplicationDelegate (opening URL-specified resources) | |
| 90 | |
| 91 - (BOOL)application:(UIApplication*)application | |
| 92 openURL:(NSURL*)url | |
| 93 options:(NSDictionary<UIApplicationOpenURLOptionsKey, id>*)options { | |
| 94 [self.applicationState.URLOpener openURL:url]; | |
| 95 return YES; | |
| 96 } | |
| 97 | |
| 98 #pragma mark - Private methods | |
| 99 | |
| 100 // Configures the application state for application launch by setting the launch | |
| 101 // steps. | |
| 102 // Future architecture/refactoring note: configuring the application state in | |
| 103 // this way is outside the scope of responsibility of the object as defined in | |
| 104 // the header file. The correct solution is probably a helper object that can | |
| 105 // perform all of the configuration necessary, and that can be adjusted as | |
| 106 // needed. | |
| 107 - (void)configureApplicationState { | |
| 108 [self.applicationState.launchSteps addObjectsFromArray:@[ | |
| 109 [[ProviderInitializer alloc] init], | |
| 110 [[SetupBundleAndUserDefaults alloc] init], | |
| 111 [[StartChromeMain alloc] init], | |
| 112 [[SetBrowserState alloc] init], | |
| 113 [[BeginForegrounding alloc] init], | |
| 114 [[PrepareForUI alloc] init], | |
| 115 [[CompleteForegrounding alloc] init], | |
| 116 [[TabGridCoordinator alloc] init], | |
| 117 ]]; | |
| 118 } | |
| 119 | |
| 120 @end | |
| OLD | NEW |