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

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

Issue 2779213003: [clean] Use CommandDispatcher to show/close Settings. (Closed)
Patch Set: 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 unified diff | Download patch
« no previous file with comments | « ios/clean/chrome/browser/ui/settings/settings_coordinator.mm ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #import "ios/clean/chrome/browser/ui/tab_grid/tab_grid_coordinator.h" 5 #import "ios/clean/chrome/browser/ui/tab_grid/tab_grid_coordinator.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "base/strings/sys_string_conversions.h" 9 #include "base/strings/sys_string_conversions.h"
10 #include "ios/chrome/browser/browser_state/chrome_browser_state.h" 10 #include "ios/chrome/browser/browser_state/chrome_browser_state.h"
11 #import "ios/clean/chrome/browser/ui/commands/settings_commands.h" 11 #import "ios/clean/chrome/browser/ui/commands/settings_commands.h"
12 #import "ios/clean/chrome/browser/ui/commands/tab_commands.h" 12 #import "ios/clean/chrome/browser/ui/commands/tab_commands.h"
13 #import "ios/clean/chrome/browser/ui/commands/tab_grid_commands.h" 13 #import "ios/clean/chrome/browser/ui/commands/tab_grid_commands.h"
14 #import "ios/clean/chrome/browser/ui/settings/settings_coordinator.h" 14 #import "ios/clean/chrome/browser/ui/settings/settings_coordinator.h"
15 #import "ios/clean/chrome/browser/ui/tab/tab_coordinator.h" 15 #import "ios/clean/chrome/browser/ui/tab/tab_coordinator.h"
16 #import "ios/clean/chrome/browser/ui/tab_grid/tab_grid_mediator.h" 16 #import "ios/clean/chrome/browser/ui/tab_grid/tab_grid_mediator.h"
17 #import "ios/clean/chrome/browser/ui/tab_grid/tab_grid_view_controller.h" 17 #import "ios/clean/chrome/browser/ui/tab_grid/tab_grid_view_controller.h"
18 #import "ios/shared/chrome/browser/coordinator_context/coordinator_context.h" 18 #import "ios/shared/chrome/browser/coordinator_context/coordinator_context.h"
19 #import "ios/shared/chrome/browser/tabs/web_state_list.h" 19 #import "ios/shared/chrome/browser/tabs/web_state_list.h"
20 #import "ios/shared/chrome/browser/ui/browser_list/browser.h" 20 #import "ios/shared/chrome/browser/ui/browser_list/browser.h"
21 #import "ios/shared/chrome/browser/ui/commands/command_dispatcher.h"
21 #import "ios/shared/chrome/browser/ui/coordinators/browser_coordinator+internal. h" 22 #import "ios/shared/chrome/browser/ui/coordinators/browser_coordinator+internal. h"
22 #import "ios/web/public/navigation_manager.h" 23 #import "ios/web/public/navigation_manager.h"
23 #include "ios/web/public/web_state/web_state.h" 24 #include "ios/web/public/web_state/web_state.h"
24 #import "net/base/mac/url_conversions.h" 25 #import "net/base/mac/url_conversions.h"
25 #include "ui/base/page_transition_types.h" 26 #include "ui/base/page_transition_types.h"
26 27
27 #if !defined(__has_feature) || !__has_feature(objc_arc) 28 #if !defined(__has_feature) || !__has_feature(objc_arc)
28 #error "This file requires ARC support." 29 #error "This file requires ARC support."
29 #endif 30 #endif
30 31
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 // This object should only ever have at most one child. 117 // This object should only ever have at most one child.
117 DCHECK_LE(self.children.count, 1UL); 118 DCHECK_LE(self.children.count, 1UL);
118 BrowserCoordinator* child = [self.children anyObject]; 119 BrowserCoordinator* child = [self.children anyObject];
119 [child stop]; 120 [child stop];
120 [self removeChildCoordinator:child]; 121 [self removeChildCoordinator:child];
121 } 122 }
122 123
123 #pragma mark - SettingsCommands 124 #pragma mark - SettingsCommands
124 125
125 - (void)showSettings { 126 - (void)showSettings {
127 CommandDispatcher* dispatcher = self.browser->dispatcher();
128 [dispatcher startDispatchingToTarget:self
129 forSelector:@selector(closeSettings)];
126 SettingsCoordinator* settingsCoordinator = [[SettingsCoordinator alloc] init]; 130 SettingsCoordinator* settingsCoordinator = [[SettingsCoordinator alloc] init];
127 settingsCoordinator.settingsCommandHandler = self;
128 [self addOverlayCoordinator:settingsCoordinator]; 131 [self addOverlayCoordinator:settingsCoordinator];
129 self.settingsCoordinator = settingsCoordinator; 132 self.settingsCoordinator = settingsCoordinator;
130 [settingsCoordinator start]; 133 [settingsCoordinator start];
131 } 134 }
132 135
133 - (void)closeSettings { 136 - (void)closeSettings {
137 CommandDispatcher* dispatcher = self.browser->dispatcher();
138 [dispatcher stopDispatchingToTarget:self];
lpromero 2017/03/29 17:48:46 This will be problematic if this controller starts
marq (ping after 24h) 2017/03/30 07:53:33 Yes, or maybe (also?) -stopDispatchingToTarget:for
lpromero 2017/03/30 11:45:26 Done for the individual method. I don't pass the t
134 [self.settingsCoordinator stop]; 139 [self.settingsCoordinator stop];
135 [self.settingsCoordinator.parentCoordinator 140 [self.settingsCoordinator.parentCoordinator
136 removeChildCoordinator:self.settingsCoordinator]; 141 removeChildCoordinator:self.settingsCoordinator];
137 // self.settingsCoordinator should be presumed to be nil after this point. 142 // self.settingsCoordinator should be presumed to be nil after this point.
138 } 143 }
139 144
140 #pragma mark - URLOpening 145 #pragma mark - URLOpening
141 146
142 - (void)openURL:(NSURL*)URL { 147 - (void)openURL:(NSURL*)URL {
143 if (self.webStateList.active_index() == WebStateList::kInvalidIndex) { 148 if (self.webStateList.active_index() == WebStateList::kInvalidIndex) {
144 return; 149 return;
145 } 150 }
146 [self.overlayCoordinator stop]; 151 [self.overlayCoordinator stop];
147 [self removeOverlayCoordinator]; 152 [self removeOverlayCoordinator];
148 web::WebState* activeWebState = self.webStateList.GetActiveWebState(); 153 web::WebState* activeWebState = self.webStateList.GetActiveWebState();
149 web::NavigationManager::WebLoadParams params(net::GURLWithNSURL(URL)); 154 web::NavigationManager::WebLoadParams params(net::GURLWithNSURL(URL));
150 params.transition_type = ui::PAGE_TRANSITION_LINK; 155 params.transition_type = ui::PAGE_TRANSITION_LINK;
151 activeWebState->GetNavigationManager()->LoadURLWithParams(params); 156 activeWebState->GetNavigationManager()->LoadURLWithParams(params);
152 if (!self.children.count) { 157 if (!self.children.count) {
153 [self showTabAtIndex:self.webStateList.active_index()]; 158 [self showTabAtIndex:self.webStateList.active_index()];
154 } 159 }
155 } 160 }
156 161
157 @end 162 @end
OLDNEW
« no previous file with comments | « ios/clean/chrome/browser/ui/settings/settings_coordinator.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698