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..e6bb12720a20c57866b994fc37fffa5489a2448a 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,8 @@ |
#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/overlay_service/browser_coordinator+overlay_support.h" |
+#import "ios/clean/chrome/browser/ui/overlay_service/overlay_service.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" |
@@ -129,23 +131,25 @@ - (void)showSettings { |
[dispatcher startDispatchingToTarget:self |
forSelector:@selector(closeSettings)]; |
SettingsCoordinator* settingsCoordinator = [[SettingsCoordinator alloc] init]; |
- [self addOverlayCoordinator:settingsCoordinator]; |
+ self.overlayService->ShowOverlayForBrowser(settingsCoordinator, self, |
+ self.browser); |
self.settingsCoordinator = settingsCoordinator; |
- [settingsCoordinator start]; |
} |
- (void)closeSettings { |
CommandDispatcher* dispatcher = self.browser->dispatcher(); |
[dispatcher stopDispatchingForSelector:@selector(closeSettings)]; |
[self.settingsCoordinator stop]; |
- [self.settingsCoordinator.parentCoordinator |
- removeChildCoordinator:self.settingsCoordinator]; |
- // self.settingsCoordinator should be presumed to be nil after this point. |
+ // Stopping an overlay added to the OverlayService removes it from the |
+ // overlay queue and schedules the next overlay to be shown. Since |
+ // self.settingsController is weak, it is presumed nil after this point. |
} |
#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. |
@@ -208,8 +212,7 @@ - (void)openURL:(NSURL*)URL { |
if (self.webStateList.active_index() == WebStateList::kInvalidIndex) { |
return; |
} |
- [self.overlayCoordinator stop]; |
- [self removeOverlayCoordinator]; |
+ self.overlayService->CancelOverlays(); |
web::WebState* activeWebState = self.webStateList.GetActiveWebState(); |
web::NavigationManager::WebLoadParams params(net::GURLWithNSURL(URL)); |
params.transition_type = ui::PAGE_TRANSITION_LINK; |
@@ -240,17 +243,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 { |