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

Unified Diff: ios/clean/chrome/browser/ui/tab_strip/tab_strip_coordinator.mm

Issue 2786893002: [ios] Dispatcher for tab_strip and tab_grid. (Closed)
Patch Set: Update showcase. Created 3 years, 9 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_strip/tab_strip_coordinator.mm
diff --git a/ios/clean/chrome/browser/ui/tab_strip/tab_strip_coordinator.mm b/ios/clean/chrome/browser/ui/tab_strip/tab_strip_coordinator.mm
index da7e689e62c991041409d1aff37ac82947b84c00..754405baf19a348664322ca2a593f276e50efbaa 100644
--- a/ios/clean/chrome/browser/ui/tab_strip/tab_strip_coordinator.mm
+++ b/ios/clean/chrome/browser/ui/tab_strip/tab_strip_coordinator.mm
@@ -4,17 +4,20 @@
#import "ios/clean/chrome/browser/ui/tab_strip/tab_strip_coordinator.h"
+#import "ios/clean/chrome/browser/ui/commands/tab_strip_commands.h"
#import "ios/clean/chrome/browser/ui/tab_collection/tab_collection_mediator.h"
#import "ios/clean/chrome/browser/ui/tab_strip/tab_strip_view_controller.h"
#import "ios/shared/chrome/browser/coordinator_context/coordinator_context.h"
#import "ios/shared/chrome/browser/tabs/web_state_list.h"
#import "ios/shared/chrome/browser/ui/browser_list/browser.h"
+#import "ios/shared/chrome/browser/ui/commands/command_dispatcher.h"
+#include "ios/web/public/web_state/web_state.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
-@interface TabStripCoordinator ()
+@interface TabStripCoordinator ()<TabStripCommands>
@property(nonatomic, strong) TabStripViewController* viewController;
@property(nonatomic, strong) TabCollectionMediator* mediator;
@property(nonatomic, readonly) WebStateList& webStateList;
@@ -33,11 +36,18 @@
#pragma mark - BrowserCoordinator
- (void)start {
+ CommandDispatcher* dispatcher = self.browser->dispatcher();
+ [dispatcher startDispatchingToTarget:self
+ forSelector:@selector(showTabStripTabAtIndex:)];
+ [dispatcher startDispatchingToTarget:self
+ forSelector:@selector(closeTabStripTabAtIndex:)];
+
self.viewController = [[TabStripViewController alloc] init];
self.mediator = [[TabCollectionMediator alloc] init];
self.mediator.webStateList = &self.webStateList;
self.mediator.consumer = self.viewController;
self.viewController.dataSource = self.mediator;
+ self.viewController.dispatcher = static_cast<id>(self.browser->dispatcher());
[self.context.baseViewController presentViewController:self.viewController
animated:self.context.animated
@@ -45,4 +55,20 @@
[super start];
}
+- (void)stop {
+ [super stop];
+ [self.browser->dispatcher() stopDispatchingToTarget:self];
+}
+
+#pragma mark - TabStripCommands
+
+- (void)showTabStripTabAtIndex:(int)index {
+ self.webStateList.ActivateWebStateAt(index);
+}
+
+- (void)closeTabStripTabAtIndex:(int)index {
+ std::unique_ptr<web::WebState> closedWebState(
+ self.webStateList.DetachWebStateAt(index));
+}
+
@end
« no previous file with comments | « ios/clean/chrome/browser/ui/tab_strip/BUILD.gn ('k') | ios/clean/chrome/browser/ui/tab_strip/tab_strip_view_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698