| OLD | NEW |
| 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/clean/chrome/browser/ui/tab/tab_coordinator.h" | 5 #import "ios/clean/chrome/browser/ui/tab/tab_coordinator.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 | 8 |
| 9 #include "base/mac/foundation_util.h" | 9 #include "base/mac/foundation_util.h" |
| 10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
| 11 #include "ios/chrome/browser/chrome_url_constants.h" | 11 #include "ios/chrome/browser/chrome_url_constants.h" |
| 12 #import "ios/clean/chrome/browser/ui/animators/zoom_transition_animator.h" | 12 #import "ios/clean/chrome/browser/ui/animators/zoom_transition_controller.h" |
| 13 #import "ios/clean/chrome/browser/ui/commands/tab_commands.h" | 13 #import "ios/clean/chrome/browser/ui/commands/tab_commands.h" |
| 14 #import "ios/clean/chrome/browser/ui/commands/tab_strip_commands.h" | 14 #import "ios/clean/chrome/browser/ui/commands/tab_strip_commands.h" |
| 15 #import "ios/clean/chrome/browser/ui/find_in_page/find_in_page_coordinator.h" | 15 #import "ios/clean/chrome/browser/ui/find_in_page/find_in_page_coordinator.h" |
| 16 #import "ios/clean/chrome/browser/ui/ntp/ntp_coordinator.h" | 16 #import "ios/clean/chrome/browser/ui/ntp/ntp_coordinator.h" |
| 17 #import "ios/clean/chrome/browser/ui/tab/tab_container_view_controller.h" | 17 #import "ios/clean/chrome/browser/ui/tab/tab_container_view_controller.h" |
| 18 #import "ios/clean/chrome/browser/ui/tab_strip/tab_strip_coordinator.h" | 18 #import "ios/clean/chrome/browser/ui/tab_strip/tab_strip_coordinator.h" |
| 19 #import "ios/clean/chrome/browser/ui/toolbar/toolbar_coordinator.h" | 19 #import "ios/clean/chrome/browser/ui/toolbar/toolbar_coordinator.h" |
| 20 #import "ios/clean/chrome/browser/ui/web_contents/web_coordinator.h" | 20 #import "ios/clean/chrome/browser/ui/web_contents/web_coordinator.h" |
| 21 #import "ios/shared/chrome/browser/ui/broadcaster/chrome_broadcaster.h" | 21 #import "ios/shared/chrome/browser/ui/broadcaster/chrome_broadcaster.h" |
| 22 #import "ios/shared/chrome/browser/ui/browser_list/browser.h" | 22 #import "ios/shared/chrome/browser/ui/browser_list/browser.h" |
| 23 #import "ios/shared/chrome/browser/ui/commands/command_dispatcher.h" | 23 #import "ios/shared/chrome/browser/ui/commands/command_dispatcher.h" |
| 24 #import "ios/shared/chrome/browser/ui/coordinators/browser_coordinator+internal.
h" | 24 #import "ios/shared/chrome/browser/ui/coordinators/browser_coordinator+internal.
h" |
| 25 #import "ios/web/public/web_state/web_state.h" | 25 #import "ios/web/public/web_state/web_state.h" |
| 26 #import "ios/web/public/web_state/web_state_observer_bridge.h" | 26 #import "ios/web/public/web_state/web_state_observer_bridge.h" |
| 27 | 27 |
| 28 #if !defined(__has_feature) || !__has_feature(objc_arc) | 28 #if !defined(__has_feature) || !__has_feature(objc_arc) |
| 29 #error "This file requires ARC support." | 29 #error "This file requires ARC support." |
| 30 #endif | 30 #endif |
| 31 | 31 |
| 32 @interface TabCoordinator ()<CRWWebStateObserver, | 32 @interface TabCoordinator ()<CRWWebStateObserver, TabCommands> |
| 33 TabCommands, | 33 @property(nonatomic, strong) ZoomTransitionController* transitionController; |
| 34 UIViewControllerTransitioningDelegate> | |
| 35 @property(nonatomic, strong) TabContainerViewController* viewController; | 34 @property(nonatomic, strong) TabContainerViewController* viewController; |
| 36 @property(nonatomic, weak) NTPCoordinator* ntpCoordinator; | 35 @property(nonatomic, weak) NTPCoordinator* ntpCoordinator; |
| 37 @property(nonatomic, weak) WebCoordinator* webCoordinator; | 36 @property(nonatomic, weak) WebCoordinator* webCoordinator; |
| 38 @end | 37 @end |
| 39 | 38 |
| 40 @implementation TabCoordinator { | 39 @implementation TabCoordinator { |
| 41 std::unique_ptr<web::WebStateObserverBridge> _webStateObserver; | 40 std::unique_ptr<web::WebStateObserverBridge> _webStateObserver; |
| 42 } | 41 } |
| 43 | 42 |
| 43 @synthesize transitionController = _transitionController; |
| 44 @synthesize presentationKey = _presentationKey; | 44 @synthesize presentationKey = _presentationKey; |
| 45 @synthesize viewController = _viewController; | 45 @synthesize viewController = _viewController; |
| 46 @synthesize webState = _webState; | 46 @synthesize webState = _webState; |
| 47 @synthesize webCoordinator = _webCoordinator; | 47 @synthesize webCoordinator = _webCoordinator; |
| 48 @synthesize ntpCoordinator = _ntpCoordinator; | 48 @synthesize ntpCoordinator = _ntpCoordinator; |
| 49 | 49 |
| 50 #pragma mark - BrowserCoordinator | 50 #pragma mark - BrowserCoordinator |
| 51 | 51 |
| 52 - (void)start { | 52 - (void)start { |
| 53 self.viewController = [self newTabContainer]; | 53 self.viewController = [self newTabContainer]; |
| 54 self.viewController.transitioningDelegate = self; | 54 self.transitionController = [[ZoomTransitionController alloc] init]; |
| 55 self.transitionController.presentationKey = self.presentationKey; |
| 56 self.viewController.transitioningDelegate = self.transitionController; |
| 55 self.viewController.modalPresentationStyle = UIModalPresentationCustom; | 57 self.viewController.modalPresentationStyle = UIModalPresentationCustom; |
| 56 _webStateObserver = | 58 _webStateObserver = |
| 57 base::MakeUnique<web::WebStateObserverBridge>(self.webState, self); | 59 base::MakeUnique<web::WebStateObserverBridge>(self.webState, self); |
| 58 | 60 |
| 59 [self.browser->broadcaster() | 61 [self.browser->broadcaster() |
| 60 broadcastValue:@"tabStripVisible" | 62 broadcastValue:@"tabStripVisible" |
| 61 ofObject:self.viewController | 63 ofObject:self.viewController |
| 62 selector:@selector(broadcastTabStripVisible:)]; | 64 selector:@selector(broadcastTabStripVisible:)]; |
| 63 | 65 |
| 64 CommandDispatcher* dispatcher = self.browser->dispatcher(); | 66 CommandDispatcher* dispatcher = self.browser->dispatcher(); |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 175 - (void)webState:(web::WebState*)webState | 177 - (void)webState:(web::WebState*)webState |
| 176 didStartNavigation:(web::NavigationContext*)navigation { | 178 didStartNavigation:(web::NavigationContext*)navigation { |
| 177 if (self.ntpCoordinator) { | 179 if (self.ntpCoordinator) { |
| 178 [self.ntpCoordinator stop]; | 180 [self.ntpCoordinator stop]; |
| 179 [self removeChildCoordinator:self.ntpCoordinator]; | 181 [self removeChildCoordinator:self.ntpCoordinator]; |
| 180 self.viewController.contentViewController = | 182 self.viewController.contentViewController = |
| 181 self.webCoordinator.viewController; | 183 self.webCoordinator.viewController; |
| 182 } | 184 } |
| 183 } | 185 } |
| 184 | 186 |
| 185 #pragma mark - UIViewControllerTransitioningDelegate | |
| 186 | |
| 187 - (id<UIViewControllerAnimatedTransitioning>) | |
| 188 animationControllerForPresentedController:(UIViewController*)presented | |
| 189 presentingController:(UIViewController*)presenting | |
| 190 sourceController:(UIViewController*)source { | |
| 191 ZoomTransitionAnimator* animator = [[ZoomTransitionAnimator alloc] init]; | |
| 192 animator.presenting = YES; | |
| 193 animator.presentationKey = self.presentationKey; | |
| 194 [animator selectDelegate:@[ source, presenting ]]; | |
| 195 return animator; | |
| 196 } | |
| 197 | |
| 198 - (id<UIViewControllerAnimatedTransitioning>) | |
| 199 animationControllerForDismissedController:(UIViewController*)dismissed { | |
| 200 ZoomTransitionAnimator* animator = [[ZoomTransitionAnimator alloc] init]; | |
| 201 animator.presenting = NO; | |
| 202 animator.presentationKey = self.presentationKey; | |
| 203 [animator selectDelegate:@[ dismissed.presentingViewController ]]; | |
| 204 return animator; | |
| 205 } | |
| 206 | |
| 207 #pragma mark - TabCommands | 187 #pragma mark - TabCommands |
| 208 | 188 |
| 209 - (void)loadURL:(web::NavigationManager::WebLoadParams)params { | 189 - (void)loadURL:(web::NavigationManager::WebLoadParams)params { |
| 210 self.webState->GetNavigationManager()->LoadURLWithParams(params); | 190 self.webState->GetNavigationManager()->LoadURLWithParams(params); |
| 211 } | 191 } |
| 212 | 192 |
| 213 #pragma mark - TabStripCommands | 193 #pragma mark - TabStripCommands |
| 214 | 194 |
| 215 - (void)showTabStrip { | 195 - (void)showTabStrip { |
| 216 self.viewController.tabStripVisible = YES; | 196 self.viewController.tabStripVisible = YES; |
| 217 } | 197 } |
| 218 | 198 |
| 219 @end | 199 @end |
| OLD | NEW |