Chromium Code Reviews| Index: ios/clean/chrome/browser/ui/tab_grid/tab_grid_coordinator.mm |
| diff --git a/ios/clean/chrome/browser/ui/tab_grid/tab_grid_coordinator.mm b/ios/clean/chrome/browser/ui/tab_grid/tab_grid_coordinator.mm |
| index 29f2180306fda76d378fff4eed21d18f7ea54310..14f99c343b8abe21677d82493ed43b15562e3fc3 100644 |
| --- a/ios/clean/chrome/browser/ui/tab_grid/tab_grid_coordinator.mm |
| +++ b/ios/clean/chrome/browser/ui/tab_grid/tab_grid_coordinator.mm |
| @@ -11,10 +11,12 @@ |
| #import "ios/chrome/browser/web_state_list/web_state_list.h" |
| #import "ios/clean/chrome/browser/ui/commands/settings_commands.h" |
| #import "ios/clean/chrome/browser/ui/commands/tab_grid_commands.h" |
| +#import "ios/clean/chrome/browser/ui/commands/tools_menu_commands.h" |
| #import "ios/clean/chrome/browser/ui/settings/settings_coordinator.h" |
| #import "ios/clean/chrome/browser/ui/tab/tab_coordinator.h" |
| #import "ios/clean/chrome/browser/ui/tab_grid/tab_grid_mediator.h" |
| #import "ios/clean/chrome/browser/ui/tab_grid/tab_grid_view_controller.h" |
| +#import "ios/clean/chrome/browser/ui/tools/tools_coordinator.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" |
| @@ -27,9 +29,12 @@ |
| #error "This file requires ARC support." |
| #endif |
| -@interface TabGridCoordinator ()<SettingsCommands, TabGridCommands> |
| +@interface TabGridCoordinator ()<SettingsCommands, |
| + ToolsMenuCommands, |
|
edchin
2017/04/12 09:13:37
Pls alphabetize.
sczs
2017/04/12 15:44:59
Done.
|
| + TabGridCommands> |
| @property(nonatomic, strong) TabGridViewController* viewController; |
| @property(nonatomic, weak) SettingsCoordinator* settingsCoordinator; |
| +@property(nonatomic, weak) ToolsCoordinator* toolsMenuCoordinator; |
| @property(nonatomic, readonly) WebStateList& webStateList; |
| @property(nonatomic, strong) TabGridMediator* mediator; |
| @end |
| @@ -37,6 +42,7 @@ |
| @implementation TabGridCoordinator |
| @synthesize viewController = _viewController; |
| @synthesize settingsCoordinator = _settingsCoordinator; |
| +@synthesize toolsMenuCoordinator = _toolsMenuCoordinator; |
| @synthesize mediator = _mediator; |
| #pragma mark - Properties |
| @@ -75,6 +81,7 @@ |
| [dispatcher startDispatchingToTarget:self |
| forSelector:@selector(createAndShowNewTabInTabGrid)]; |
| [dispatcher startDispatchingToTarget:self forSelector:@selector(showTabGrid)]; |
| + [self registerForToolsMenuCommands]; |
| self.viewController = [[TabGridViewController alloc] init]; |
| self.viewController.dataSource = self.mediator; |
| @@ -91,7 +98,8 @@ |
| } |
| - (void)childCoordinatorDidStart:(BrowserCoordinator*)childCoordinator { |
| - DCHECK([childCoordinator isKindOfClass:[SettingsCoordinator class]] || |
| + DCHECK([childCoordinator isKindOfClass:[ToolsCoordinator class]] || |
|
edchin
2017/04/12 09:13:37
Pls alphabetize.
sczs
2017/04/12 15:44:59
Done.
|
| + [childCoordinator isKindOfClass:[SettingsCoordinator class]] || |
| [childCoordinator isKindOfClass:[TabCoordinator class]]); |
| [self.viewController presentViewController:childCoordinator.viewController |
| animated:YES |
| @@ -99,7 +107,8 @@ |
| } |
| - (void)childCoordinatorWillStop:(BrowserCoordinator*)childCoordinator { |
| - DCHECK([childCoordinator isKindOfClass:[SettingsCoordinator class]] || |
| + DCHECK([childCoordinator isKindOfClass:[ToolsCoordinator class]] || |
| + [childCoordinator isKindOfClass:[SettingsCoordinator class]] || |
| [childCoordinator isKindOfClass:[TabCoordinator class]]); |
| [childCoordinator.viewController.presentingViewController |
| dismissViewControllerAnimated:YES |
| @@ -117,6 +126,10 @@ |
| tabCoordinator.presentationKey = |
| [NSIndexPath indexPathForItem:index inSection:0]; |
| [self addChildCoordinator:tabCoordinator]; |
| + [self.browser->dispatcher() |
| + stopDispatchingForSelector:@selector(showToolsMenu)]; |
| + [self.browser->dispatcher() |
| + stopDispatchingForSelector:@selector(closeToolsMenu)]; |
| [tabCoordinator start]; |
| } |
| @@ -140,6 +153,21 @@ |
| BrowserCoordinator* child = [self.children anyObject]; |
| [child stop]; |
| [self removeChildCoordinator:child]; |
| + [self registerForToolsMenuCommands]; |
| +} |
| + |
| +#pragma mark - ToolsMenuCommands |
| + |
| +- (void)showToolsMenu { |
| + ToolsCoordinator* toolsCoordinator = [[ToolsCoordinator alloc] init]; |
| + [self addChildCoordinator:toolsCoordinator]; |
| + [toolsCoordinator start]; |
| + self.toolsMenuCoordinator = toolsCoordinator; |
| +} |
| + |
| +- (void)closeToolsMenu { |
| + [self.toolsMenuCoordinator stop]; |
| + [self removeChildCoordinator:self.toolsMenuCoordinator]; |
| } |
| #pragma mark - SettingsCommands |
| @@ -180,4 +208,15 @@ |
| } |
| } |
| +#pragma mark - PrivateMethods |
| + |
| +- (void)registerForToolsMenuCommands { |
| + [self.browser->dispatcher() |
| + startDispatchingToTarget:self |
| + forSelector:@selector(showToolsMenu)]; |
| + [self.browser->dispatcher() |
| + startDispatchingToTarget:self |
| + forSelector:@selector(closeToolsMenu)]; |
| +} |
| + |
| @end |