Chromium Code Reviews| Index: ios/clean/chrome/browser/ui/ntp/new_tab_page_coordinator.mm |
| diff --git a/ios/clean/chrome/browser/ui/ntp/new_tab_page_coordinator.mm b/ios/clean/chrome/browser/ui/ntp/new_tab_page_coordinator.mm |
| index 3be996254da49529947f51990f654133187cb452..64e0e826d96274137cb9cc6e292b2931df8c0b8a 100644 |
| --- a/ios/clean/chrome/browser/ui/ntp/new_tab_page_coordinator.mm |
| +++ b/ios/clean/chrome/browser/ui/ntp/new_tab_page_coordinator.mm |
| @@ -4,26 +4,109 @@ |
| #import "ios/clean/chrome/browser/ui/ntp/new_tab_page_coordinator.h" |
| +#include "base/logging.h" |
| +#include "ios/chrome/browser/ui/ui_util.h" |
| +#import "ios/clean/chrome/browser/ui/bookmarks/bookmarks_coordinator.h" |
| +#import "ios/clean/chrome/browser/ui/commands/ntp_commands.h" |
| +#import "ios/clean/chrome/browser/ui/ntp/new_tab_page_home_coordinator.h" |
| +#import "ios/clean/chrome/browser/ui/ntp/new_tab_page_mediator.h" |
| #import "ios/clean/chrome/browser/ui/ntp/new_tab_page_view_controller.h" |
| +#import "ios/clean/chrome/browser/ui/open_tabs/open_tabs_coordinator.h" |
| #import "ios/shared/chrome/browser/coordinator_context/coordinator_context.h" |
| +#import "ios/shared/chrome/browser/ui/browser_list/browser.h" |
| +#import "ios/shared/chrome/browser/ui/commands/command_dispatcher.h" |
| +#import "ios/shared/chrome/browser/ui/coordinators/browser_coordinator+internal.h" |
| #if !defined(__has_feature) || !__has_feature(objc_arc) |
| #error "This file requires ARC support." |
| #endif |
| -@interface NTPCoordinator () |
| +@interface NTPCoordinator ()<NTPCommands> |
| +@property(nonatomic, strong) NTPMediator* mediator; |
| @property(nonatomic, strong) NTPViewController* viewController; |
| @end |
| @implementation NTPCoordinator |
| +@synthesize mediator = _mediator; |
| @synthesize viewController = _viewController; |
| +@synthesize webState = _webState; |
| - (void)start { |
| + DCHECK(self.webState); |
| self.viewController = [[NTPViewController alloc] init]; |
| - [self.context.baseViewController presentViewController:self.viewController |
| - animated:self.context.animated |
| - completion:nil]; |
| + self.mediator = [[NTPMediator alloc] initWithConsumer:self.viewController]; |
| + |
| + CommandDispatcher* dispatcher = self.browser->dispatcher(); |
| + // NTPCommands |
| + [dispatcher startDispatchingToTarget:self |
| + forSelector:@selector(showNTPHomePanel)]; |
| + [dispatcher startDispatchingToTarget:self |
| + forSelector:@selector(showNTPBookmarksPanel)]; |
| + [dispatcher startDispatchingToTarget:self |
| + forSelector:@selector(showNTPOpenTabsPanel)]; |
| + self.viewController.dispatcher = static_cast<id>(self.browser->dispatcher()); |
| [super start]; |
| } |
| +- (void)stop { |
| + [super stop]; |
| + for (BrowserCoordinator* child in self.children) { |
|
rohitrao (ping after 24h)
2017/04/06 13:08:13
Copy the comment from ios/clean/chrome/browser/ui/
justincohen
2017/04/06 18:25:10
Done.
|
| + [child stop]; |
| + } |
| + [self.browser->dispatcher() stopDispatchingToTarget:self]; |
| +} |
| + |
| +- (void)childCoordinatorDidStart:(BrowserCoordinator*)coordinator { |
|
rohitrao (ping after 24h)
2017/04/06 13:08:13
Can you briefly sketch out the lifecycles of the v
justincohen
2017/04/06 18:25:10
We don't start a child coordinator until it is vis
|
| + if ([coordinator isKindOfClass:[NTPHomeCoordinator class]]) { |
| + [self.viewController addHomePanelViewController:coordinator.viewController]; |
| + |
| + } else if ([coordinator isKindOfClass:[BookmarksCoordinator class]]) { |
| + if (IsIPadIdiom()) { |
| + [self.viewController |
| + addBookmarksViewController:coordinator.viewController]; |
| + } else { |
| + [self.context.baseViewController |
| + presentViewController:coordinator.viewController |
| + animated:coordinator.context.animated |
| + completion:nil]; |
| + } |
| + |
| + } else if ([coordinator isKindOfClass:[OpenTabsCoordinator class]]) { |
| + if (IsIPadIdiom()) { |
| + [self.viewController |
| + addOpenTabsViewController:coordinator.viewController]; |
| + } else { |
| + [self.context.baseViewController |
| + presentViewController:coordinator.viewController |
| + animated:coordinator.context.animated |
| + completion:nil]; |
| + } |
| + } |
| +} |
| + |
| +#pragma mark - NTPCommands |
| + |
| +- (void)showNTPHomePanel { |
| + NTPHomeCoordinator* panelCoordinator = [[NTPHomeCoordinator alloc] init]; |
| + [self addChildCoordinator:panelCoordinator]; |
| + panelCoordinator.webState = self.webState; |
| + [panelCoordinator start]; |
| +} |
| + |
| +- (void)showNTPBookmarksPanel { |
| + BookmarksCoordinator* panelCoordinator = [[BookmarksCoordinator alloc] init]; |
| + [self addChildCoordinator:panelCoordinator]; |
| + [panelCoordinator start]; |
| +} |
| + |
| +- (void)showNTPOpenTabsPanel { |
| + OpenTabsCoordinator* panelCoordinator = [[OpenTabsCoordinator alloc] init]; |
| + [self addChildCoordinator:panelCoordinator]; |
| + [panelCoordinator start]; |
| + if (IsIPadIdiom()) { |
|
lpromero
2017/04/06 13:01:05
Remove this section as it is done in childCoordina
justincohen
2017/04/06 18:25:10
crap, bad patch here. thanks for catching this.
|
| + [self.viewController |
| + addOpenTabsViewController:panelCoordinator.viewController]; |
| + } |
| +} |
| + |
| @end |