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 |