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..4d20d5217ec7787d6ca0d3a26d9a1c2e45a905f3 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,84 @@ |
#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_incognito_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/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]; |
+ self.viewController.ntpCommandHandler = self; |
marq (ping after 24h)
2017/04/05 12:22:48
Any reason for these commands not to go through th
justincohen
2017/04/05 19:28:24
Done.
|
[super start]; |
} |
+- (void)stop { |
+ [super stop]; |
+ for (BrowserCoordinator* child in self.children) { |
marq (ping after 24h)
2017/04/05 12:22:48
Does this belong in the superclass?
justincohen
2017/04/05 19:28:24
tab coordinator currently does the same thing. Is
lpromero
2017/04/06 13:01:04
I am thinking about moving it there.
justincohen
2017/04/06 18:25:09
Acknowledged.
|
+ [child stop]; |
+ } |
+} |
+ |
+- (void)startNTPHomePanel { |
marq (ping after 24h)
2017/04/05 12:22:48
#pragma mark - NTPCommands
justincohen
2017/04/05 19:28:24
Done.
|
+ NTPHomeCoordinator* panelCoordinator = [[NTPHomeCoordinator alloc] init]; |
+ [self addChildCoordinator:panelCoordinator]; |
+ panelCoordinator.webState = self.webState; |
+ [panelCoordinator start]; |
+ [self.viewController |
+ addHomePanelViewController:panelCoordinator.viewController]; |
+} |
+ |
+- (void)startNTPBookmarksPanel { |
+ BookmarksCoordinator* panelCoordinator = [[BookmarksCoordinator alloc] init]; |
+ [self addChildCoordinator:panelCoordinator]; |
+ [panelCoordinator start]; |
+ |
+ if (IsIPadIdiom()) { |
+ [self.viewController |
+ addBookmarksViewController:panelCoordinator.viewController]; |
+ } |
+} |
+ |
+- (void)startNTPOpenTabsPanel { |
+ OpenTabsCoordinator* panelCoordinator = [[OpenTabsCoordinator alloc] init]; |
+ [self addChildCoordinator:panelCoordinator]; |
+ [panelCoordinator start]; |
+ if (IsIPadIdiom()) { |
marq (ping after 24h)
2017/04/05 12:22:48
The coordinator shouldn't care about what device s
justincohen
2017/04/05 19:28:24
Who should handle the differences in presentation
|
+ [self.viewController |
+ addOpenTabsViewController:panelCoordinator.viewController]; |
+ } |
+} |
+ |
+- (void)startNTPIncognitoPanel { |
+ NTPIncognitoCoordinator* panelCoordinator = |
+ [[NTPIncognitoCoordinator alloc] init]; |
+ [self addChildCoordinator:panelCoordinator]; |
+ [panelCoordinator start]; |
+ [self.viewController |
+ addIncognitoViewController:panelCoordinator.viewController]; |
+} |
+ |
@end |