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/overlay_service/browser_coordinator+overlay
_support.h" |
| 19 #import "ios/clean/chrome/browser/ui/overlay_service/overlay_service.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 self.overlayService->ShowOverlayForBrowser(settingsCoordinator, self, |
| 135 self.browser); |
133 self.settingsCoordinator = settingsCoordinator; | 136 self.settingsCoordinator = settingsCoordinator; |
134 [settingsCoordinator start]; | |
135 } | 137 } |
136 | 138 |
137 - (void)closeSettings { | 139 - (void)closeSettings { |
138 CommandDispatcher* dispatcher = self.browser->dispatcher(); | 140 CommandDispatcher* dispatcher = self.browser->dispatcher(); |
139 [dispatcher stopDispatchingForSelector:@selector(closeSettings)]; | 141 [dispatcher stopDispatchingForSelector:@selector(closeSettings)]; |
140 [self.settingsCoordinator stop]; | 142 [self.settingsCoordinator stop]; |
141 [self.settingsCoordinator.parentCoordinator | 143 // Stopping an overlay added to the OverlayService removes it from the |
142 removeChildCoordinator:self.settingsCoordinator]; | 144 // overlay queue and schedules the next overlay to be shown. Since |
143 // self.settingsCoordinator should be presumed to be nil after this point. | 145 // self.settingsController is weak, it is presumed nil after this point. |
144 } | 146 } |
145 | 147 |
146 #pragma mark - TabGridCommands | 148 #pragma mark - TabGridCommands |
147 | 149 |
148 - (void)showTabGridTabAtIndex:(int)index { | 150 - (void)showTabGridTabAtIndex:(int)index { |
| 151 if (index == self.webStateList.active_index()) |
| 152 return; |
149 self.webStateList.ActivateWebStateAt(index); | 153 self.webStateList.ActivateWebStateAt(index); |
150 // PLACEHOLDER: The tab coordinator should be able to get the active webState | 154 // PLACEHOLDER: The tab coordinator should be able to get the active webState |
151 // on its own. | 155 // on its own. |
152 [self.activeTabCoordinator stop]; | 156 [self.activeTabCoordinator stop]; |
153 [self removeChildCoordinator:self.activeTabCoordinator]; | 157 [self removeChildCoordinator:self.activeTabCoordinator]; |
154 TabCoordinator* tabCoordinator = [[TabCoordinator alloc] init]; | 158 TabCoordinator* tabCoordinator = [[TabCoordinator alloc] init]; |
155 self.activeTabCoordinator = tabCoordinator; | 159 self.activeTabCoordinator = tabCoordinator; |
156 tabCoordinator.webState = self.webStateList.GetWebStateAt(index); | 160 tabCoordinator.webState = self.webStateList.GetWebStateAt(index); |
157 tabCoordinator.presentationKey = | 161 tabCoordinator.presentationKey = |
158 [NSIndexPath indexPathForItem:index inSection:0]; | 162 [NSIndexPath indexPathForItem:index inSection:0]; |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
201 [self.toolsMenuCoordinator stop]; | 205 [self.toolsMenuCoordinator stop]; |
202 [self removeChildCoordinator:self.toolsMenuCoordinator]; | 206 [self removeChildCoordinator:self.toolsMenuCoordinator]; |
203 } | 207 } |
204 | 208 |
205 #pragma mark - URLOpening | 209 #pragma mark - URLOpening |
206 | 210 |
207 - (void)openURL:(NSURL*)URL { | 211 - (void)openURL:(NSURL*)URL { |
208 if (self.webStateList.active_index() == WebStateList::kInvalidIndex) { | 212 if (self.webStateList.active_index() == WebStateList::kInvalidIndex) { |
209 return; | 213 return; |
210 } | 214 } |
211 [self.overlayCoordinator stop]; | 215 self.overlayService->CancelOverlays(); |
212 [self removeOverlayCoordinator]; | |
213 web::WebState* activeWebState = self.webStateList.GetActiveWebState(); | 216 web::WebState* activeWebState = self.webStateList.GetActiveWebState(); |
214 web::NavigationManager::WebLoadParams params(net::GURLWithNSURL(URL)); | 217 web::NavigationManager::WebLoadParams params(net::GURLWithNSURL(URL)); |
215 params.transition_type = ui::PAGE_TRANSITION_LINK; | 218 params.transition_type = ui::PAGE_TRANSITION_LINK; |
216 activeWebState->GetNavigationManager()->LoadURLWithParams(params); | 219 activeWebState->GetNavigationManager()->LoadURLWithParams(params); |
217 if (!self.children.count) { | 220 if (!self.children.count) { |
218 [self showTabGridTabAtIndex:self.webStateList.active_index()]; | 221 [self showTabGridTabAtIndex:self.webStateList.active_index()]; |
219 } | 222 } |
220 } | 223 } |
221 | 224 |
222 #pragma mark - PrivateMethods | 225 #pragma mark - PrivateMethods |
(...skipping 10 matching lines...) Expand all Loading... |
233 startDispatchingToTarget:self | 236 startDispatchingToTarget:self |
234 forSelector:@selector(openContextMenuImageInNewTab:)]; | 237 forSelector:@selector(openContextMenuImageInNewTab:)]; |
235 } | 238 } |
236 | 239 |
237 - (void)registerForSettingsCommands { | 240 - (void)registerForSettingsCommands { |
238 [self.browser->dispatcher() startDispatchingToTarget:self | 241 [self.browser->dispatcher() startDispatchingToTarget:self |
239 forSelector:@selector(showSettings)]; | 242 forSelector:@selector(showSettings)]; |
240 } | 243 } |
241 | 244 |
242 - (void)registerForTabGridCommands { | 245 - (void)registerForTabGridCommands { |
243 [self.browser->dispatcher() startDispatchingToTarget:self | |
244 forSelector:@selector(showTabGrid)]; | |
245 [self.browser->dispatcher() | 246 [self.browser->dispatcher() |
246 startDispatchingToTarget:self | 247 startDispatchingToTarget:self |
247 forSelector:@selector(showTabGridTabAtIndex:)]; | 248 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 } | 249 } |
255 | 250 |
256 - (void)registerForToolsMenuCommands { | 251 - (void)registerForToolsMenuCommands { |
257 [self.browser->dispatcher() | 252 [self.browser->dispatcher() |
258 startDispatchingToTarget:self | 253 startDispatchingToTarget:self |
259 forSelector:@selector(showToolsMenu)]; | 254 forSelector:@selector(showToolsMenu)]; |
260 [self.browser->dispatcher() | 255 [self.browser->dispatcher() |
261 startDispatchingToTarget:self | 256 startDispatchingToTarget:self |
262 forSelector:@selector(closeToolsMenu)]; | 257 forSelector:@selector(closeToolsMenu)]; |
263 } | 258 } |
264 | 259 |
265 - (void)deRegisterFromToolsMenuCommands { | 260 - (void)deRegisterFromToolsMenuCommands { |
266 [self.browser->dispatcher() | 261 [self.browser->dispatcher() |
267 stopDispatchingForSelector:@selector(showToolsMenu)]; | 262 stopDispatchingForSelector:@selector(showToolsMenu)]; |
268 [self.browser->dispatcher() | 263 [self.browser->dispatcher() |
269 stopDispatchingForSelector:@selector(closeToolsMenu)]; | 264 stopDispatchingForSelector:@selector(closeToolsMenu)]; |
270 } | 265 } |
271 | 266 |
272 @end | 267 @end |
OLD | NEW |