| 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..bd023408e105c898c63073d29d36a85dfa45456d 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
|
| @@ -20,6 +20,7 @@
|
| #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/clean/chrome/browser/ui/web_contents/overlays/web_overlay_scheduler.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"
|
| @@ -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) WebOverlayScheduler* 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,23 @@ - (void)start {
|
|
|
| self.mediator.consumer = self.viewController;
|
|
|
| + id<TabGridCommands, WebOverlayPresentationCommands> schedulerDispatcher =
|
| + static_cast<id<TabGridCommands, WebOverlayPresentationCommands>>(
|
| + self.browser->dispatcher());
|
| + self.webOverlayScheduler =
|
| + [[WebOverlayScheduler alloc] initWithDispatcher:schedulerDispatcher];
|
| + [self.browser->dispatcher()
|
| + startDispatchingToTarget:self.webOverlayScheduler
|
| + forProtocol:@protocol(WebOverlaySchedulerCommands)];
|
| +
|
| [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 +160,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 +200,10 @@ - (void)showTabGrid {
|
| [self registerForToolsMenuCommands];
|
| }
|
|
|
| +- (void)showTabGridTabWithWebState:(const web::WebState*)webState {
|
| + [self showTabGridTabAtIndex:self.webStateList.GetIndexOfWebState(webState)];
|
| +}
|
| +
|
| #pragma mark - ToolsMenuCommands
|
|
|
| - (void)showToolsMenu {
|
| @@ -240,17 +260,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 {
|
|
|