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 104978959777a314246cb43c5cda533d5725bd58..884091175e284b7664ba970b3dfa229b9306d886 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 |
| @@ -15,6 +15,7 @@ |
| #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/context_menu/context_menu_context_impl.h" |
| +#import "ios/clean/chrome/browser/ui/overlays/overlay_scheduler.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" |
| @@ -43,6 +44,7 @@ @interface TabGridCoordinator ()<ContextMenuCommands, |
| @property(nonatomic, weak) TabCoordinator* activeTabCoordinator; |
| @property(nonatomic, readonly) WebStateList& webStateList; |
| @property(nonatomic, strong) TabGridMediator* mediator; |
| +@property(nonatomic, strong) OverlayScheduler* webOverlayScheduler; |
| @end |
| @implementation TabGridCoordinator |
| @@ -51,6 +53,7 @@ @implementation TabGridCoordinator |
| @synthesize toolsMenuCoordinator = _toolsMenuCoordinator; |
| @synthesize activeTabCoordinator = _activeTabCoordinator; |
| @synthesize mediator = _mediator; |
| +@synthesize webOverlayScheduler = _webOverlayScheduler; |
| #pragma mark - Properties |
| @@ -74,12 +77,24 @@ - (void)start { |
| self.mediator.consumer = self.viewController; |
| + id<TabGridCommands, OverlayPresentationCommands> schedulerDispatcher = |
| + static_cast<id<TabGridCommands, OverlayPresentationCommands>>( |
| + self.browser->dispatcher()); |
|
marq (ping after 24h)
2017/06/14 10:02:32
FYI: Dispatcher is moving out of browser. See http
kkhorimoto
2017/06/15 08:26:29
Acknowledged. I'll rebase when your CL is landed.
|
| + self.webOverlayScheduler = |
| + [[OverlayScheduler alloc] initWithWebStateList:&self.webStateList |
| + dispatcher:schedulerDispatcher]; |
| + [self.browser->dispatcher() |
| + startDispatchingToTarget:self.webOverlayScheduler |
| + forProtocol:@protocol(OverlaySchedulerCommands)]; |
| + |
| [super start]; |
| } |
| - (void)stop { |
| [super stop]; |
| [self.browser->dispatcher() stopDispatchingToTarget:self]; |
| + [self.browser->dispatcher() stopDispatchingToTarget:self.webOverlayScheduler]; |
| + self.webOverlayScheduler = nil; |
| [self.mediator disconnect]; |
| // PLACEHOLDER: Remove child coordinators here for now. This might be handled |
| // differently later on. |
| @@ -146,6 +161,8 @@ - (void)closeSettings { |
| #pragma mark - TabGridCommands |
| - (void)showTabGridTabAtIndex:(int)index { |
| + if (index == self.webStateList.active_index()) |
| + return; |
| self.webStateList.ActivateWebStateAt(index); |
| // PLACEHOLDER: The tab coordinator should be able to get the active webState |
| // on its own. |
| @@ -184,6 +201,10 @@ - (void)showTabGrid { |
| [self registerForToolsMenuCommands]; |
| } |
| +- (void)showTabGridTabForActiveWebState { |
| + [self showTabGridTabAtIndex:self.webStateList.active_index()]; |
| +} |
| + |
| #pragma mark - ToolsMenuCommands |
| - (void)showToolsMenu { |
| @@ -240,17 +261,9 @@ - (void)registerForSettingsCommands { |
| } |
| - (void)registerForTabGridCommands { |
| - [self.browser->dispatcher() startDispatchingToTarget:self |
| - forSelector:@selector(showTabGrid)]; |
| - [self.browser->dispatcher() |
| - startDispatchingToTarget:self |
| - forSelector:@selector(showTabGridTabAtIndex:)]; |
| - [self.browser->dispatcher() |
| - startDispatchingToTarget:self |
| - forSelector:@selector(closeTabGridTabAtIndex:)]; |
| [self.browser->dispatcher() |
| startDispatchingToTarget:self |
| - forSelector:@selector(createAndShowNewTabInTabGrid)]; |
| + forProtocol:@protocol(TabGridCommands)]; |
| } |
| - (void)registerForToolsMenuCommands { |