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

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

Issue 2921833002: [iOS Clean] Created OverlayService.
Patch Set: Cancel overlays on queue deallocation Created 3 years, 6 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 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 {

Powered by Google App Engine
This is Rietveld 408576698