OLD | NEW |
---|---|
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/mac/foundation_util.h" | 9 #include "base/mac/foundation_util.h" |
10 #include "base/strings/sys_string_conversions.h" | 10 #include "base/strings/sys_string_conversions.h" |
11 #include "ios/chrome/browser/browser_state/chrome_browser_state.h" | 11 #include "ios/chrome/browser/browser_state/chrome_browser_state.h" |
12 #import "ios/chrome/browser/web_state_list/web_state_list.h" | 12 #import "ios/chrome/browser/web_state_list/web_state_list.h" |
13 #import "ios/clean/chrome/browser/ui/commands/context_menu_commands.h" | 13 #import "ios/clean/chrome/browser/ui/commands/context_menu_commands.h" |
14 #import "ios/clean/chrome/browser/ui/commands/settings_commands.h" | 14 #import "ios/clean/chrome/browser/ui/commands/settings_commands.h" |
15 #import "ios/clean/chrome/browser/ui/commands/tab_grid_commands.h" | 15 #import "ios/clean/chrome/browser/ui/commands/tab_grid_commands.h" |
16 #import "ios/clean/chrome/browser/ui/commands/tools_menu_commands.h" | 16 #import "ios/clean/chrome/browser/ui/commands/tools_menu_commands.h" |
17 #import "ios/clean/chrome/browser/ui/context_menu/context_menu_context_impl.h" | 17 #import "ios/clean/chrome/browser/ui/context_menu/context_menu_context_impl.h" |
18 #import "ios/clean/chrome/browser/ui/overlays/overlay_service.h" | |
19 #import "ios/clean/chrome/browser/ui/overlays/overlay_service_factory.h" | |
18 #import "ios/clean/chrome/browser/ui/settings/settings_coordinator.h" | 20 #import "ios/clean/chrome/browser/ui/settings/settings_coordinator.h" |
19 #import "ios/clean/chrome/browser/ui/tab/tab_coordinator.h" | 21 #import "ios/clean/chrome/browser/ui/tab/tab_coordinator.h" |
20 #import "ios/clean/chrome/browser/ui/tab_grid/tab_grid_mediator.h" | 22 #import "ios/clean/chrome/browser/ui/tab_grid/tab_grid_mediator.h" |
21 #import "ios/clean/chrome/browser/ui/tab_grid/tab_grid_view_controller.h" | 23 #import "ios/clean/chrome/browser/ui/tab_grid/tab_grid_view_controller.h" |
22 #import "ios/clean/chrome/browser/ui/tools/tools_coordinator.h" | 24 #import "ios/clean/chrome/browser/ui/tools/tools_coordinator.h" |
23 #import "ios/shared/chrome/browser/ui/browser_list/browser.h" | 25 #import "ios/shared/chrome/browser/ui/browser_list/browser.h" |
24 #import "ios/shared/chrome/browser/ui/commands/command_dispatcher.h" | 26 #import "ios/shared/chrome/browser/ui/commands/command_dispatcher.h" |
25 #import "ios/shared/chrome/browser/ui/coordinators/browser_coordinator+internal. h" | 27 #import "ios/shared/chrome/browser/ui/coordinators/browser_coordinator+internal. h" |
26 #import "ios/shared/chrome/browser/ui/tools_menu/tools_menu_configuration.h" | 28 #import "ios/shared/chrome/browser/ui/tools_menu/tools_menu_configuration.h" |
27 #import "ios/web/public/navigation_manager.h" | 29 #import "ios/web/public/navigation_manager.h" |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
122 [self openURL:net::NSURLWithGURL(contextImpl.imageURL)]; | 124 [self openURL:net::NSURLWithGURL(contextImpl.imageURL)]; |
123 } | 125 } |
124 | 126 |
125 #pragma mark - SettingsCommands | 127 #pragma mark - SettingsCommands |
126 | 128 |
127 - (void)showSettings { | 129 - (void)showSettings { |
128 CommandDispatcher* dispatcher = self.browser->dispatcher(); | 130 CommandDispatcher* dispatcher = self.browser->dispatcher(); |
129 [dispatcher startDispatchingToTarget:self | 131 [dispatcher startDispatchingToTarget:self |
130 forSelector:@selector(closeSettings)]; | 132 forSelector:@selector(closeSettings)]; |
131 SettingsCoordinator* settingsCoordinator = [[SettingsCoordinator alloc] init]; | 133 SettingsCoordinator* settingsCoordinator = [[SettingsCoordinator alloc] init]; |
132 [self addOverlayCoordinator:settingsCoordinator]; | 134 OverlayServiceFactory::GetInstance() |
marq (ping after 24h)
2017/06/21 09:53:19
This is kind of an unwieldy invocation; can't it b
kkhorimoto
2017/06/23 06:22:39
Done.
| |
135 ->GetForBrowserState(self.browser->browser_state()) | |
136 ->ShowOverlayForBrowser(settingsCoordinator, self, self.browser); | |
133 self.settingsCoordinator = settingsCoordinator; | 137 self.settingsCoordinator = settingsCoordinator; |
134 [settingsCoordinator start]; | |
135 } | 138 } |
136 | 139 |
137 - (void)closeSettings { | 140 - (void)closeSettings { |
138 CommandDispatcher* dispatcher = self.browser->dispatcher(); | 141 CommandDispatcher* dispatcher = self.browser->dispatcher(); |
139 [dispatcher stopDispatchingForSelector:@selector(closeSettings)]; | 142 [dispatcher stopDispatchingForSelector:@selector(closeSettings)]; |
140 [self.settingsCoordinator stop]; | 143 [self.settingsCoordinator stop]; |
141 [self.settingsCoordinator.parentCoordinator | 144 // Stopping an overlay added to the OverlayService removes it from the |
142 removeChildCoordinator:self.settingsCoordinator]; | 145 // overlay queue and schedules the next overlay to be shown. Since |
143 // self.settingsCoordinator should be presumed to be nil after this point. | 146 // self.settingsController is weak, it is presumed nil after this point. |
144 } | 147 } |
145 | 148 |
146 #pragma mark - TabGridCommands | 149 #pragma mark - TabGridCommands |
147 | 150 |
148 - (void)showTabGridTabAtIndex:(int)index { | 151 - (void)showTabGridTabAtIndex:(int)index { |
152 if (index == self.webStateList.active_index()) | |
153 return; | |
149 self.webStateList.ActivateWebStateAt(index); | 154 self.webStateList.ActivateWebStateAt(index); |
150 // PLACEHOLDER: The tab coordinator should be able to get the active webState | 155 // PLACEHOLDER: The tab coordinator should be able to get the active webState |
151 // on its own. | 156 // on its own. |
152 [self.activeTabCoordinator stop]; | 157 [self.activeTabCoordinator stop]; |
153 [self removeChildCoordinator:self.activeTabCoordinator]; | 158 [self removeChildCoordinator:self.activeTabCoordinator]; |
154 TabCoordinator* tabCoordinator = [[TabCoordinator alloc] init]; | 159 TabCoordinator* tabCoordinator = [[TabCoordinator alloc] init]; |
155 self.activeTabCoordinator = tabCoordinator; | 160 self.activeTabCoordinator = tabCoordinator; |
156 tabCoordinator.webState = self.webStateList.GetWebStateAt(index); | 161 tabCoordinator.webState = self.webStateList.GetWebStateAt(index); |
157 tabCoordinator.presentationKey = | 162 tabCoordinator.presentationKey = |
158 [NSIndexPath indexPathForItem:index inSection:0]; | 163 [NSIndexPath indexPathForItem:index inSection:0]; |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
201 [self.toolsMenuCoordinator stop]; | 206 [self.toolsMenuCoordinator stop]; |
202 [self removeChildCoordinator:self.toolsMenuCoordinator]; | 207 [self removeChildCoordinator:self.toolsMenuCoordinator]; |
203 } | 208 } |
204 | 209 |
205 #pragma mark - URLOpening | 210 #pragma mark - URLOpening |
206 | 211 |
207 - (void)openURL:(NSURL*)URL { | 212 - (void)openURL:(NSURL*)URL { |
208 if (self.webStateList.active_index() == WebStateList::kInvalidIndex) { | 213 if (self.webStateList.active_index() == WebStateList::kInvalidIndex) { |
209 return; | 214 return; |
210 } | 215 } |
211 [self.overlayCoordinator stop]; | 216 OverlayServiceFactory::GetInstance() |
212 [self removeOverlayCoordinator]; | 217 ->GetForBrowserState(self.browser->browser_state()) |
218 ->CancelOverlays(); | |
213 web::WebState* activeWebState = self.webStateList.GetActiveWebState(); | 219 web::WebState* activeWebState = self.webStateList.GetActiveWebState(); |
214 web::NavigationManager::WebLoadParams params(net::GURLWithNSURL(URL)); | 220 web::NavigationManager::WebLoadParams params(net::GURLWithNSURL(URL)); |
215 params.transition_type = ui::PAGE_TRANSITION_LINK; | 221 params.transition_type = ui::PAGE_TRANSITION_LINK; |
216 activeWebState->GetNavigationManager()->LoadURLWithParams(params); | 222 activeWebState->GetNavigationManager()->LoadURLWithParams(params); |
217 if (!self.children.count) { | 223 if (!self.children.count) { |
218 [self showTabGridTabAtIndex:self.webStateList.active_index()]; | 224 [self showTabGridTabAtIndex:self.webStateList.active_index()]; |
219 } | 225 } |
220 } | 226 } |
221 | 227 |
222 #pragma mark - PrivateMethods | 228 #pragma mark - PrivateMethods |
(...skipping 10 matching lines...) Expand all Loading... | |
233 startDispatchingToTarget:self | 239 startDispatchingToTarget:self |
234 forSelector:@selector(openContextMenuImageInNewTab:)]; | 240 forSelector:@selector(openContextMenuImageInNewTab:)]; |
235 } | 241 } |
236 | 242 |
237 - (void)registerForSettingsCommands { | 243 - (void)registerForSettingsCommands { |
238 [self.browser->dispatcher() startDispatchingToTarget:self | 244 [self.browser->dispatcher() startDispatchingToTarget:self |
239 forSelector:@selector(showSettings)]; | 245 forSelector:@selector(showSettings)]; |
240 } | 246 } |
241 | 247 |
242 - (void)registerForTabGridCommands { | 248 - (void)registerForTabGridCommands { |
243 [self.browser->dispatcher() startDispatchingToTarget:self | |
244 forSelector:@selector(showTabGrid)]; | |
245 [self.browser->dispatcher() | 249 [self.browser->dispatcher() |
246 startDispatchingToTarget:self | 250 startDispatchingToTarget:self |
247 forSelector:@selector(showTabGridTabAtIndex:)]; | 251 forProtocol:@protocol(TabGridCommands)]; |
248 [self.browser->dispatcher() | |
249 startDispatchingToTarget:self | |
250 forSelector:@selector(closeTabGridTabAtIndex:)]; | |
251 [self.browser->dispatcher() | |
252 startDispatchingToTarget:self | |
253 forSelector:@selector(createAndShowNewTabInTabGrid)]; | |
254 } | 252 } |
255 | 253 |
256 - (void)registerForToolsMenuCommands { | 254 - (void)registerForToolsMenuCommands { |
257 [self.browser->dispatcher() | 255 [self.browser->dispatcher() |
258 startDispatchingToTarget:self | 256 startDispatchingToTarget:self |
259 forSelector:@selector(showToolsMenu)]; | 257 forSelector:@selector(showToolsMenu)]; |
260 [self.browser->dispatcher() | 258 [self.browser->dispatcher() |
261 startDispatchingToTarget:self | 259 startDispatchingToTarget:self |
262 forSelector:@selector(closeToolsMenu)]; | 260 forSelector:@selector(closeToolsMenu)]; |
263 } | 261 } |
264 | 262 |
265 - (void)deRegisterFromToolsMenuCommands { | 263 - (void)deRegisterFromToolsMenuCommands { |
266 [self.browser->dispatcher() | 264 [self.browser->dispatcher() |
267 stopDispatchingForSelector:@selector(showToolsMenu)]; | 265 stopDispatchingForSelector:@selector(showToolsMenu)]; |
268 [self.browser->dispatcher() | 266 [self.browser->dispatcher() |
269 stopDispatchingForSelector:@selector(closeToolsMenu)]; | 267 stopDispatchingForSelector:@selector(closeToolsMenu)]; |
270 } | 268 } |
271 | 269 |
272 @end | 270 @end |
OLD | NEW |