Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(242)

Unified Diff: ios/clean/chrome/browser/ui/tab_grid/tab_grid_coordinator.mm

Issue 2810603002: [ios clean] Adds ToolsMenu to TabGrid (Closed)
Patch Set: Rebase Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 60e799e5a8f4c8b16d543b833c8d75da91214611..1962c7aa015a3bdd92cd0cb4bccce53905da5717 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
@@ -11,10 +11,12 @@
#import "ios/chrome/browser/web_state_list/web_state_list.h"
#import "ios/clean/chrome/browser/ui/commands/settings_commands.h"
#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/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"
#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/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"
@@ -27,9 +29,12 @@
#error "This file requires ARC support."
#endif
-@interface TabGridCoordinator ()<SettingsCommands, TabGridCommands>
+@interface TabGridCoordinator ()<SettingsCommands,
+ TabGridCommands,
+ ToolsMenuCommands>
@property(nonatomic, strong) TabGridViewController* viewController;
@property(nonatomic, weak) SettingsCoordinator* settingsCoordinator;
+@property(nonatomic, weak) ToolsCoordinator* toolsMenuCoordinator;
@property(nonatomic, readonly) WebStateList& webStateList;
@property(nonatomic, strong) TabGridMediator* mediator;
@end
@@ -37,6 +42,7 @@
@implementation TabGridCoordinator
@synthesize viewController = _viewController;
@synthesize settingsCoordinator = _settingsCoordinator;
+@synthesize toolsMenuCoordinator = _toolsMenuCoordinator;
@synthesize mediator = _mediator;
#pragma mark - Properties
@@ -63,18 +69,9 @@
self.mediator = [[TabGridMediator alloc] init];
self.mediator.webStateList = &self.webStateList;
- CommandDispatcher* dispatcher = self.browser->dispatcher();
- // SettingsCommands
- [dispatcher startDispatchingToTarget:self
- forSelector:@selector(showSettings)];
- // 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 registerForSettingsCommands];
+ [self registerForTabGridCommands];
+ [self registerForToolsMenuCommands];
self.viewController = [[TabGridViewController alloc] init];
self.viewController.dataSource = self.mediator;
@@ -97,7 +94,8 @@
- (void)childCoordinatorDidStart:(BrowserCoordinator*)childCoordinator {
DCHECK([childCoordinator isKindOfClass:[SettingsCoordinator class]] ||
- [childCoordinator isKindOfClass:[TabCoordinator class]]);
+ [childCoordinator isKindOfClass:[TabCoordinator class]] ||
+ [childCoordinator isKindOfClass:[ToolsCoordinator class]]);
[self.viewController presentViewController:childCoordinator.viewController
animated:YES
completion:nil];
@@ -105,7 +103,8 @@
- (void)childCoordinatorWillStop:(BrowserCoordinator*)childCoordinator {
DCHECK([childCoordinator isKindOfClass:[SettingsCoordinator class]] ||
- [childCoordinator isKindOfClass:[TabCoordinator class]]);
+ [childCoordinator isKindOfClass:[TabCoordinator class]] ||
+ [childCoordinator isKindOfClass:[ToolsCoordinator class]]);
[childCoordinator.viewController.presentingViewController
dismissViewControllerAnimated:YES
completion:nil];
@@ -122,6 +121,7 @@
tabCoordinator.presentationKey =
[NSIndexPath indexPathForItem:index inSection:0];
[self addChildCoordinator:tabCoordinator];
+ [self deRegisterFromToolsMenuCommands];
lpromero 2017/04/13 20:43:57 s/deRe/dere? s/From/For?
[tabCoordinator start];
}
@@ -145,6 +145,21 @@
BrowserCoordinator* child = [self.children anyObject];
[child stop];
[self removeChildCoordinator:child];
+ [self registerForToolsMenuCommands];
+}
+
+#pragma mark - ToolsMenuCommands
+
+- (void)showToolsMenu {
+ ToolsCoordinator* toolsCoordinator = [[ToolsCoordinator alloc] init];
+ [self addChildCoordinator:toolsCoordinator];
+ [toolsCoordinator start];
+ self.toolsMenuCoordinator = toolsCoordinator;
+}
+
+- (void)closeToolsMenu {
+ [self.toolsMenuCoordinator stop];
+ [self removeChildCoordinator:self.toolsMenuCoordinator];
}
#pragma mark - SettingsCommands
@@ -185,4 +200,39 @@
}
}
+#pragma mark - PrivateMethods
+
+- (void)registerForSettingsCommands {
+ [self.browser->dispatcher() startDispatchingToTarget:self
+ forSelector:@selector(showSettings)];
+}
+
+- (void)registerForTabGridCommands {
+ [self.browser->dispatcher()
+ startDispatchingToTarget:self
+ forSelector:@selector(showTabGridTabAtIndex:)];
+ [self.browser->dispatcher()
+ startDispatchingToTarget:self
+ forSelector:@selector(closeTabGridTabAtIndex:)];
+ [self.browser->dispatcher()
+ startDispatchingToTarget:self
+ forSelector:@selector(createAndShowNewTabInTabGrid)];
+}
+
+- (void)registerForToolsMenuCommands {
+ [self.browser->dispatcher()
+ startDispatchingToTarget:self
+ forSelector:@selector(showToolsMenu)];
lpromero 2017/04/13 20:43:57 Nit: you might be able to use the protocol based A
+ [self.browser->dispatcher()
+ startDispatchingToTarget:self
+ forSelector:@selector(closeToolsMenu)];
+}
+
+- (void)deRegisterFromToolsMenuCommands {
+ [self.browser->dispatcher()
+ stopDispatchingForSelector:@selector(showToolsMenu)];
+ [self.browser->dispatcher()
+ stopDispatchingForSelector:@selector(closeToolsMenu)];
+}
+
@end

Powered by Google App Engine
This is Rietveld 408576698