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 d4a73a05af6b47f07630e6ec28f513dce1e9c805..4949a201bd710d9fd53f3510cd020ce5056c18ac 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 |
@@ -9,7 +9,6 @@ |
#include "base/strings/sys_string_conversions.h" |
#include "ios/chrome/browser/browser_state/chrome_browser_state.h" |
#import "ios/clean/chrome/browser/ui/commands/settings_commands.h" |
-#import "ios/clean/chrome/browser/ui/commands/tab_commands.h" |
#import "ios/clean/chrome/browser/ui/commands/tab_grid_commands.h" |
#import "ios/clean/chrome/browser/ui/settings/settings_coordinator.h" |
#import "ios/clean/chrome/browser/ui/tab/tab_coordinator.h" |
@@ -29,7 +28,7 @@ |
#error "This file requires ARC support." |
#endif |
-@interface TabGridCoordinator ()<SettingsCommands, TabCommands, TabGridCommands> |
+@interface TabGridCoordinator ()<SettingsCommands, TabGridCommands> |
@property(nonatomic, strong) TabGridViewController* viewController; |
@property(nonatomic, weak) SettingsCoordinator* settingsCoordinator; |
@property(nonatomic, readonly) WebStateList& webStateList; |
@@ -65,11 +64,24 @@ |
self.mediator = [[TabGridMediator alloc] init]; |
self.mediator.webStateList = &self.webStateList; |
+ CommandDispatcher* dispatcher = self.browser->dispatcher(); |
+ // SettingsCommands |
+ [dispatcher startDispatchingToTarget:self |
+ forSelector:@selector(showSettings)]; |
+ [dispatcher startDispatchingToTarget:self |
+ forSelector:@selector(closeSettings)]; |
+ // TabGridCommands |
+ [dispatcher startDispatchingToTarget:self |
+ forSelector:@selector(showTabGridTabAtIndex:)]; |
+ [dispatcher startDispatchingToTarget:self |
+ forSelector:@selector(closeTabGridTabAtIndex:)]; |
+ [dispatcher startDispatchingToTarget:self |
+ forSelector:@selector(createAndShowNewTabInTabGrid)]; |
+ [dispatcher startDispatchingToTarget:self forSelector:@selector(showTabGrid)]; |
+ |
self.viewController = [[TabGridViewController alloc] init]; |
self.viewController.dataSource = self.mediator; |
- self.viewController.settingsCommandHandler = self; |
- self.viewController.tabCommandHandler = self; |
- self.viewController.tabGridCommandHandler = self; |
+ self.viewController.dispatcher = static_cast<id>(self.browser->dispatcher()); |
self.mediator.consumer = self.viewController; |
@@ -82,9 +94,14 @@ |
[super start]; |
} |
-#pragma mark - TabCommands |
+- (void)stop { |
+ [super stop]; |
+ [self.browser->dispatcher() stopDispatchingToTarget:self]; |
+} |
+ |
+#pragma mark - TabGridCommands |
-- (void)showTabAtIndex:(int)index { |
+- (void)showTabGridTabAtIndex:(int)index { |
self.webStateList.ActivateWebStateAt(index); |
// PLACEHOLDER: The tab coordinator should be able to get the active webState |
// on its own. |
@@ -96,23 +113,21 @@ |
[tabCoordinator start]; |
} |
-- (void)closeTabAtIndex:(int)index { |
+- (void)closeTabGridTabAtIndex:(int)index { |
std::unique_ptr<web::WebState> closedWebState( |
self.webStateList.DetachWebStateAt(index)); |
} |
-- (void)createAndShowNewTab { |
+- (void)createAndShowNewTabInTabGrid { |
web::WebState::CreateParams webStateCreateParams( |
self.browser->browser_state()); |
std::unique_ptr<web::WebState> webState = |
web::WebState::Create(webStateCreateParams); |
self.webStateList.InsertWebState(self.webStateList.count(), |
webState.release()); |
- [self showTabAtIndex:self.webStateList.count() - 1]; |
+ [self showTabGridTabAtIndex:self.webStateList.count() - 1]; |
} |
-#pragma mark - TabGridCommands |
- |
- (void)showTabGrid { |
// This object should only ever have at most one child. |
DCHECK_LE(self.children.count, 1UL); |
@@ -155,7 +170,7 @@ |
params.transition_type = ui::PAGE_TRANSITION_LINK; |
activeWebState->GetNavigationManager()->LoadURLWithParams(params); |
if (!self.children.count) { |
- [self showTabAtIndex:self.webStateList.active_index()]; |
+ [self showTabGridTabAtIndex:self.webStateList.active_index()]; |
} |
} |