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 { |