| Index: ios/clean/chrome/browser/ui/tab/tab_coordinator.mm
|
| diff --git a/ios/clean/chrome/browser/ui/tab/tab_coordinator.mm b/ios/clean/chrome/browser/ui/tab/tab_coordinator.mm
|
| index 59497cb2e159e0165b1fa94e3b025c0ca8759c21..e96fac04c9e050c5bba7e7e33f9d0b34f4731e3d 100644
|
| --- a/ios/clean/chrome/browser/ui/tab/tab_coordinator.mm
|
| +++ b/ios/clean/chrome/browser/ui/tab/tab_coordinator.mm
|
| @@ -32,6 +32,8 @@ const BOOL kUseBottomToolbar = NO;
|
| @interface TabCoordinator ()<CRWWebStateObserver,
|
| UIViewControllerTransitioningDelegate>
|
| @property(nonatomic, strong) TabContainerViewController* viewController;
|
| +@property(nonatomic, weak) NTPCoordinator* ntpCoordinator;
|
| +@property(nonatomic, weak) WebCoordinator* webCoordinator;
|
| @end
|
|
|
| @implementation TabCoordinator {
|
| @@ -41,6 +43,8 @@ const BOOL kUseBottomToolbar = NO;
|
| @synthesize presentationKey = _presentationKey;
|
| @synthesize viewController = _viewController;
|
| @synthesize webState = _webState;
|
| +@synthesize webCoordinator = _webCoordinator;
|
| +@synthesize ntpCoordinator = _ntpCoordinator;
|
|
|
| #pragma mark - BrowserCoordinator
|
|
|
| @@ -58,6 +62,7 @@ const BOOL kUseBottomToolbar = NO;
|
| // view controller.
|
| webCoordinator.context.baseViewController = nil;
|
| [webCoordinator start];
|
| + self.webCoordinator = webCoordinator;
|
|
|
| ToolbarCoordinator* toolbarCoordinator = [[ToolbarCoordinator alloc] init];
|
| toolbarCoordinator.webState = self.webState;
|
| @@ -73,9 +78,19 @@ const BOOL kUseBottomToolbar = NO;
|
| tabStripCoordinator.context.baseViewController = nil;
|
| [tabStripCoordinator start];
|
|
|
| + // PLACEHOLDER: Fix the order of events here. The ntpCoordinator was already
|
| + // created above when |webCoordinator.webState = self.webState;| triggers
|
| + // a load event, but then the webCoordinator stomps on the
|
| + // contentViewController when it starts afterwards.
|
| + if (self.webState->GetLastCommittedURL() == GURL("chrome://newtab/")) {
|
| + self.viewController.contentViewController =
|
| + self.ntpCoordinator.viewController;
|
| + }
|
| +
|
| [self.context.baseViewController presentViewController:self.viewController
|
| animated:self.context.animated
|
| completion:nil];
|
| +
|
| [super start];
|
| }
|
|
|
| @@ -86,6 +101,9 @@ const BOOL kUseBottomToolbar = NO;
|
| for (BrowserCoordinator* child in self.children) {
|
| [child stop];
|
| }
|
| +
|
| + [self.viewController setContentViewController:nil];
|
| +
|
| [self.viewController.presentingViewController
|
| dismissViewControllerAnimated:self.context.animated
|
| completion:nil];
|
| @@ -99,6 +117,8 @@ const BOOL kUseBottomToolbar = NO;
|
| self.viewController.contentViewController = coordinator.viewController;
|
| } else if ([coordinator isKindOfClass:[TabStripCoordinator class]]) {
|
| self.viewController.tabStripViewController = coordinator.viewController;
|
| + } else if ([coordinator isKindOfClass:[NTPCoordinator class]]) {
|
| + self.viewController.contentViewController = coordinator.viewController;
|
| }
|
| }
|
|
|
| @@ -129,8 +149,19 @@ const BOOL kUseBottomToolbar = NO;
|
| NTPCoordinator* ntpCoordinator = [[NTPCoordinator alloc] init];
|
| [self addChildCoordinator:ntpCoordinator];
|
| ntpCoordinator.context.baseViewController = nil;
|
| + ntpCoordinator.webState = self.webState;
|
| [ntpCoordinator start];
|
| - self.viewController.contentViewController = ntpCoordinator.viewController;
|
| + self.ntpCoordinator = ntpCoordinator;
|
| + }
|
| +}
|
| +
|
| +- (void)webState:(web::WebState*)webState
|
| + didStartProvisionalNavigationForURL:(const GURL&)URL {
|
| + if (self.ntpCoordinator) {
|
| + [self.ntpCoordinator stop];
|
| + [self removeChildCoordinator:self.ntpCoordinator];
|
| + self.viewController.contentViewController =
|
| + self.webCoordinator.viewController;
|
| }
|
| }
|
|
|
|
|