| 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/toolbar/toolbar_view_controller.h" | 5 #import "ios/clean/chrome/browser/ui/toolbar/toolbar_view_controller.h" |
| 6 | 6 |
| 7 #import "base/mac/foundation_util.h" | 7 #import "base/mac/foundation_util.h" |
| 8 #import "ios/chrome/browser/ui/uikit_ui_util.h" | 8 #import "ios/chrome/browser/ui/uikit_ui_util.h" |
| 9 #import "ios/clean/chrome/browser/ui/actions/tab_strip_actions.h" | |
| 10 #import "ios/clean/chrome/browser/ui/commands/navigation_commands.h" | 9 #import "ios/clean/chrome/browser/ui/commands/navigation_commands.h" |
| 11 #import "ios/clean/chrome/browser/ui/commands/tab_grid_commands.h" | 10 #import "ios/clean/chrome/browser/ui/commands/tab_grid_commands.h" |
| 11 #import "ios/clean/chrome/browser/ui/commands/tab_strip_commands.h" |
| 12 #import "ios/clean/chrome/browser/ui/commands/tools_menu_commands.h" | 12 #import "ios/clean/chrome/browser/ui/commands/tools_menu_commands.h" |
| 13 #import "ios/clean/chrome/browser/ui/toolbar/toolbar_button+factory.h" | 13 #import "ios/clean/chrome/browser/ui/toolbar/toolbar_button+factory.h" |
| 14 #import "ios/clean/chrome/browser/ui/toolbar/toolbar_component_options.h" | 14 #import "ios/clean/chrome/browser/ui/toolbar/toolbar_component_options.h" |
| 15 #import "ios/clean/chrome/browser/ui/toolbar/toolbar_constants.h" | 15 #import "ios/clean/chrome/browser/ui/toolbar/toolbar_constants.h" |
| 16 #import "ios/third_party/material_components_ios/src/components/ProgressView/src
/MaterialProgressView.h" | 16 #import "ios/third_party/material_components_ios/src/components/ProgressView/src
/MaterialProgressView.h" |
| 17 | 17 |
| 18 #if !defined(__has_feature) || !__has_feature(objc_arc) | 18 #if !defined(__has_feature) || !__has_feature(objc_arc) |
| 19 #error "This file requires ARC support." | 19 #error "This file requires ARC support." |
| 20 #endif | 20 #endif |
| 21 | 21 |
| (...skipping 29 matching lines...) Expand all Loading... |
| 51 - (instancetype)init { | 51 - (instancetype)init { |
| 52 self = [super init]; | 52 self = [super init]; |
| 53 if (self) { | 53 if (self) { |
| 54 [self setUpToolbarButtons]; | 54 [self setUpToolbarButtons]; |
| 55 [self setUpLocationBarContainer]; | 55 [self setUpLocationBarContainer]; |
| 56 [self setUpProgressBar]; | 56 [self setUpProgressBar]; |
| 57 } | 57 } |
| 58 return self; | 58 return self; |
| 59 } | 59 } |
| 60 | 60 |
| 61 - (instancetype)initWithDispatcher:(id<NavigationCommands, |
| 62 TabGridCommands, |
| 63 TabStripCommands, |
| 64 ToolsMenuCommands>)dispatcher { |
| 65 _dispatcher = dispatcher; |
| 66 return [self init]; |
| 67 } |
| 68 |
| 61 #pragma mark - View lifecyle | 69 #pragma mark - View lifecyle |
| 62 | 70 |
| 63 - (void)viewDidLoad { | 71 - (void)viewDidLoad { |
| 64 self.view.backgroundColor = UIColorFromRGB(kToolbarBackgroundColor); | 72 self.view.backgroundColor = UIColorFromRGB(kToolbarBackgroundColor); |
| 65 [self addChildViewController:self.locationBarViewController | 73 [self addChildViewController:self.locationBarViewController |
| 66 toSubview:self.locationBarContainer]; | 74 toSubview:self.locationBarContainer]; |
| 67 [self setUpToolbarStackView]; | 75 [self setUpToolbarStackView]; |
| 68 [self.view addSubview:self.stackView]; | 76 [self.view addSubview:self.stackView]; |
| 69 [self.view addSubview:self.progressBar]; | 77 [self.view addSubview:self.progressBar]; |
| 70 [self setConstraints]; | 78 [self setConstraints]; |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 128 - (void)setUpToolbarButtons { | 136 - (void)setUpToolbarButtons { |
| 129 NSMutableArray* buttonConstraints = [[NSMutableArray alloc] init]; | 137 NSMutableArray* buttonConstraints = [[NSMutableArray alloc] init]; |
| 130 | 138 |
| 131 // Back button. | 139 // Back button. |
| 132 self.backButton = [ToolbarButton backToolbarButton]; | 140 self.backButton = [ToolbarButton backToolbarButton]; |
| 133 self.backButton.visibilityMask = ToolbarComponentVisibilityCompactWidth | | 141 self.backButton.visibilityMask = ToolbarComponentVisibilityCompactWidth | |
| 134 ToolbarComponentVisibilityRegularWidth; | 142 ToolbarComponentVisibilityRegularWidth; |
| 135 [buttonConstraints | 143 [buttonConstraints |
| 136 addObject:[self.backButton.widthAnchor | 144 addObject:[self.backButton.widthAnchor |
| 137 constraintEqualToConstant:kToolbarButtonWidth]]; | 145 constraintEqualToConstant:kToolbarButtonWidth]]; |
| 138 [self.backButton addTarget:self | 146 [self.backButton addTarget:self.dispatcher |
| 139 action:@selector(goBack:) | 147 action:@selector(goBack) |
| 140 forControlEvents:UIControlEventTouchUpInside]; | 148 forControlEvents:UIControlEventTouchUpInside]; |
| 141 | 149 |
| 142 // Forward button. | 150 // Forward button. |
| 143 self.forwardButton = [ToolbarButton forwardToolbarButton]; | 151 self.forwardButton = [ToolbarButton forwardToolbarButton]; |
| 144 self.forwardButton.visibilityMask = | 152 self.forwardButton.visibilityMask = |
| 145 ToolbarComponentVisibilityCompactWidthOnlyWhenEnabled | | 153 ToolbarComponentVisibilityCompactWidthOnlyWhenEnabled | |
| 146 ToolbarComponentVisibilityRegularWidth; | 154 ToolbarComponentVisibilityRegularWidth; |
| 147 [buttonConstraints | 155 [buttonConstraints |
| 148 addObject:[self.forwardButton.widthAnchor | 156 addObject:[self.forwardButton.widthAnchor |
| 149 constraintEqualToConstant:kToolbarButtonWidth]]; | 157 constraintEqualToConstant:kToolbarButtonWidth]]; |
| 150 [self.forwardButton addTarget:self | 158 [self.forwardButton addTarget:self.dispatcher |
| 151 action:@selector(goForward:) | 159 action:@selector(goForward) |
| 152 forControlEvents:UIControlEventTouchUpInside]; | 160 forControlEvents:UIControlEventTouchUpInside]; |
| 153 | 161 |
| 154 // Tab switcher Strip button. | 162 // Tab switcher Strip button. |
| 155 self.tabSwitchStripButton = [ToolbarButton tabSwitcherStripToolbarButton]; | 163 self.tabSwitchStripButton = [ToolbarButton tabSwitcherStripToolbarButton]; |
| 156 self.tabSwitchStripButton.visibilityMask = | 164 self.tabSwitchStripButton.visibilityMask = |
| 157 ToolbarComponentVisibilityCompactWidth | | 165 ToolbarComponentVisibilityCompactWidth | |
| 158 ToolbarComponentVisibilityRegularWidth; | 166 ToolbarComponentVisibilityRegularWidth; |
| 159 [buttonConstraints | 167 [buttonConstraints |
| 160 addObject:[self.tabSwitchStripButton.widthAnchor | 168 addObject:[self.tabSwitchStripButton.widthAnchor |
| 161 constraintEqualToConstant:kToolbarButtonWidth]]; | 169 constraintEqualToConstant:kToolbarButtonWidth]]; |
| 162 [self.tabSwitchStripButton addTarget:nil | 170 [self.tabSwitchStripButton addTarget:self.dispatcher |
| 163 action:@selector(showTabStrip:) | 171 action:@selector(showTabStrip) |
| 164 forControlEvents:UIControlEventTouchUpInside]; | 172 forControlEvents:UIControlEventTouchUpInside]; |
| 165 [self.tabSwitchStripButton | 173 [self.tabSwitchStripButton |
| 166 setTitleColor:UIColorFromRGB(kToolbarButtonTitleNormalColor) | 174 setTitleColor:UIColorFromRGB(kToolbarButtonTitleNormalColor) |
| 167 forState:UIControlStateNormal]; | 175 forState:UIControlStateNormal]; |
| 168 [self.tabSwitchStripButton | 176 [self.tabSwitchStripButton |
| 169 setTitleColor:UIColorFromRGB(kToolbarButtonTitleHighlightedColor) | 177 setTitleColor:UIColorFromRGB(kToolbarButtonTitleHighlightedColor) |
| 170 forState:UIControlStateHighlighted]; | 178 forState:UIControlStateHighlighted]; |
| 171 | 179 |
| 172 // Tab switcher Grid button. | 180 // Tab switcher Grid button. |
| 173 self.tabSwitchGridButton = [ToolbarButton tabSwitcherGridToolbarButton]; | 181 self.tabSwitchGridButton = [ToolbarButton tabSwitcherGridToolbarButton]; |
| 174 self.tabSwitchGridButton.visibilityMask = | 182 self.tabSwitchGridButton.visibilityMask = |
| 175 ToolbarComponentVisibilityCompactWidth | | 183 ToolbarComponentVisibilityCompactWidth | |
| 176 ToolbarComponentVisibilityRegularWidth; | 184 ToolbarComponentVisibilityRegularWidth; |
| 177 [buttonConstraints | 185 [buttonConstraints |
| 178 addObject:[self.tabSwitchGridButton.widthAnchor | 186 addObject:[self.tabSwitchGridButton.widthAnchor |
| 179 constraintEqualToConstant:kToolbarButtonWidth]]; | 187 constraintEqualToConstant:kToolbarButtonWidth]]; |
| 180 [self.tabSwitchGridButton addTarget:self | 188 [self.tabSwitchGridButton addTarget:self.dispatcher |
| 181 action:@selector(showTabGrid:) | 189 action:@selector(showTabGrid) |
| 182 forControlEvents:UIControlEventTouchUpInside]; | 190 forControlEvents:UIControlEventTouchUpInside]; |
| 183 self.tabSwitchGridButton.hiddenInCurrentState = YES; | 191 self.tabSwitchGridButton.hiddenInCurrentState = YES; |
| 184 | 192 |
| 185 // Tools menu button. | 193 // Tools menu button. |
| 186 self.toolsMenuButton = [ToolbarButton toolsMenuToolbarButton]; | 194 self.toolsMenuButton = [ToolbarButton toolsMenuToolbarButton]; |
| 187 self.toolsMenuButton.visibilityMask = ToolbarComponentVisibilityCompactWidth | | 195 self.toolsMenuButton.visibilityMask = ToolbarComponentVisibilityCompactWidth | |
| 188 ToolbarComponentVisibilityRegularWidth; | 196 ToolbarComponentVisibilityRegularWidth; |
| 189 [buttonConstraints | 197 [buttonConstraints |
| 190 addObject:[self.toolsMenuButton.widthAnchor | 198 addObject:[self.toolsMenuButton.widthAnchor |
| 191 constraintEqualToConstant:kToolbarButtonWidth]]; | 199 constraintEqualToConstant:kToolbarButtonWidth]]; |
| 192 [self.toolsMenuButton addTarget:self | 200 [self.toolsMenuButton addTarget:self.dispatcher |
| 193 action:@selector(showToolsMenu:) | 201 action:@selector(showToolsMenu) |
| 194 forControlEvents:UIControlEventTouchUpInside]; | 202 forControlEvents:UIControlEventTouchUpInside]; |
| 195 | 203 |
| 196 // Share button. | 204 // Share button. |
| 197 self.shareButton = [ToolbarButton shareToolbarButton]; | 205 self.shareButton = [ToolbarButton shareToolbarButton]; |
| 198 self.shareButton.visibilityMask = ToolbarComponentVisibilityRegularWidth; | 206 self.shareButton.visibilityMask = ToolbarComponentVisibilityRegularWidth; |
| 199 [buttonConstraints | 207 [buttonConstraints |
| 200 addObject:[self.shareButton.widthAnchor | 208 addObject:[self.shareButton.widthAnchor |
| 201 constraintEqualToConstant:kToolbarButtonWidth]]; | 209 constraintEqualToConstant:kToolbarButtonWidth]]; |
| 202 [self.shareButton addTarget:self | 210 // TODO(crbug.com/683793):Dispatch command once someone is handling it. |
| 203 action:@selector(showShareMenu:) | |
| 204 forControlEvents:UIControlEventTouchUpInside]; | |
| 205 | 211 |
| 206 // Reload button. | 212 // Reload button. |
| 207 self.reloadButton = [ToolbarButton reloadToolbarButton]; | 213 self.reloadButton = [ToolbarButton reloadToolbarButton]; |
| 208 self.reloadButton.visibilityMask = ToolbarComponentVisibilityRegularWidth; | 214 self.reloadButton.visibilityMask = ToolbarComponentVisibilityRegularWidth; |
| 209 [buttonConstraints | 215 [buttonConstraints |
| 210 addObject:[self.reloadButton.widthAnchor | 216 addObject:[self.reloadButton.widthAnchor |
| 211 constraintEqualToConstant:kToolbarButtonWidth]]; | 217 constraintEqualToConstant:kToolbarButtonWidth]]; |
| 212 [self.reloadButton addTarget:self | 218 [self.reloadButton addTarget:self.dispatcher |
| 213 action:@selector(reload:) | 219 action:@selector(reloadPage) |
| 214 forControlEvents:UIControlEventTouchUpInside]; | 220 forControlEvents:UIControlEventTouchUpInside]; |
| 215 | 221 |
| 216 // Stop button. | 222 // Stop button. |
| 217 self.stopButton = [ToolbarButton stopToolbarButton]; | 223 self.stopButton = [ToolbarButton stopToolbarButton]; |
| 218 self.stopButton.visibilityMask = ToolbarComponentVisibilityRegularWidth; | 224 self.stopButton.visibilityMask = ToolbarComponentVisibilityRegularWidth; |
| 219 [buttonConstraints | 225 [buttonConstraints |
| 220 addObject:[self.stopButton.widthAnchor | 226 addObject:[self.stopButton.widthAnchor |
| 221 constraintEqualToConstant:kToolbarButtonWidth]]; | 227 constraintEqualToConstant:kToolbarButtonWidth]]; |
| 222 [self.stopButton addTarget:self | 228 [self.stopButton addTarget:self.dispatcher |
| 223 action:@selector(stop:) | 229 action:@selector(stopLoadingPage) |
| 224 forControlEvents:UIControlEventTouchUpInside]; | 230 forControlEvents:UIControlEventTouchUpInside]; |
| 225 | 231 |
| 226 // Set the button constraint priority to UILayoutPriorityDefaultHigh so | 232 // Set the button constraint priority to UILayoutPriorityDefaultHigh so |
| 227 // these are not broken when being hidden by the StackView. | 233 // these are not broken when being hidden by the StackView. |
| 228 [self activateConstraints:buttonConstraints | 234 [self activateConstraints:buttonConstraints |
| 229 withPriority:UILayoutPriorityDefaultHigh]; | 235 withPriority:UILayoutPriorityDefaultHigh]; |
| 230 } | 236 } |
| 231 | 237 |
| 232 - (void)setUpLocationBarContainer { | 238 - (void)setUpLocationBarContainer { |
| 233 UIView* locationBarContainer = [[UIView alloc] initWithFrame:CGRectZero]; | 239 UIView* locationBarContainer = [[UIView alloc] initWithFrame:CGRectZero]; |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 368 [self.tabSwitchStripButton setAccessibilityValue:tabStripButtonValue]; | 374 [self.tabSwitchStripButton setAccessibilityValue:tabStripButtonValue]; |
| 369 } | 375 } |
| 370 | 376 |
| 371 #pragma mark - ZoomTransitionDelegate | 377 #pragma mark - ZoomTransitionDelegate |
| 372 | 378 |
| 373 - (CGRect)rectForZoomWithKey:(NSObject*)key inView:(UIView*)view { | 379 - (CGRect)rectForZoomWithKey:(NSObject*)key inView:(UIView*)view { |
| 374 return [view convertRect:self.toolsMenuButton.bounds | 380 return [view convertRect:self.toolsMenuButton.bounds |
| 375 fromView:self.toolsMenuButton]; | 381 fromView:self.toolsMenuButton]; |
| 376 } | 382 } |
| 377 | 383 |
| 378 #pragma mark - Private Methods | |
| 379 | |
| 380 - (void)showToolsMenu:(id)sender { | |
| 381 [self.dispatcher showToolsMenu]; | |
| 382 } | |
| 383 | |
| 384 - (void)closeToolsMenu:(id)sender { | |
| 385 [self.dispatcher closeToolsMenu]; | |
| 386 } | |
| 387 | |
| 388 - (void)showShareMenu:(id)sender { | |
| 389 [self.dispatcher showShareMenu]; | |
| 390 } | |
| 391 | |
| 392 - (void)goBack:(id)sender { | |
| 393 [self.dispatcher goBack]; | |
| 394 } | |
| 395 | |
| 396 - (void)goForward:(id)sender { | |
| 397 [self.dispatcher goForward]; | |
| 398 } | |
| 399 | |
| 400 - (void)stop:(id)sender { | |
| 401 [self.dispatcher stopLoadingPage]; | |
| 402 } | |
| 403 | |
| 404 - (void)reload:(id)sender { | |
| 405 [self.dispatcher reloadPage]; | |
| 406 } | |
| 407 | |
| 408 - (void)showTabGrid:(id)sender { | |
| 409 [self.dispatcher showTabGrid]; | |
| 410 } | |
| 411 | |
| 412 #pragma mark - Helper Methods | 384 #pragma mark - Helper Methods |
| 413 | 385 |
| 414 // Updates all Buttons visibility to match any recent WebState change. | 386 // Updates all Buttons visibility to match any recent WebState change. |
| 415 - (void)updateAllButtonsVisibility { | 387 - (void)updateAllButtonsVisibility { |
| 416 for (UIView* view in self.stackView.arrangedSubviews) { | 388 for (UIView* view in self.stackView.arrangedSubviews) { |
| 417 if ([view isKindOfClass:[ToolbarButton class]]) { | 389 if ([view isKindOfClass:[ToolbarButton class]]) { |
| 418 ToolbarButton* button = base::mac::ObjCCastStrict<ToolbarButton>(view); | 390 ToolbarButton* button = base::mac::ObjCCastStrict<ToolbarButton>(view); |
| 419 [button setHiddenForCurrentStateAndSizeClass]; | 391 [button setHiddenForCurrentStateAndSizeClass]; |
| 420 } | 392 } |
| 421 } | 393 } |
| 422 } | 394 } |
| 423 | 395 |
| 424 // Sets the priority for an array of constraints and activates them. | 396 // Sets the priority for an array of constraints and activates them. |
| 425 - (void)activateConstraints:(NSArray*)constraintsArray | 397 - (void)activateConstraints:(NSArray*)constraintsArray |
| 426 withPriority:(UILayoutPriority)priority { | 398 withPriority:(UILayoutPriority)priority { |
| 427 for (NSLayoutConstraint* constraint in constraintsArray) { | 399 for (NSLayoutConstraint* constraint in constraintsArray) { |
| 428 constraint.priority = priority; | 400 constraint.priority = priority; |
| 429 } | 401 } |
| 430 [NSLayoutConstraint activateConstraints:constraintsArray]; | 402 [NSLayoutConstraint activateConstraints:constraintsArray]; |
| 431 } | 403 } |
| 432 | 404 |
| 433 @end | 405 @end |
| OLD | NEW |