Index: ios/chrome/browser/ui/stack_view/stack_view_toolbar_controller.mm |
diff --git a/ios/chrome/browser/ui/stack_view/stack_view_toolbar_controller.mm b/ios/chrome/browser/ui/stack_view/stack_view_toolbar_controller.mm |
new file mode 100644 |
index 0000000000000000000000000000000000000000..cc9fceb3df05bb6dfee78d545ee5aa6d57e74c44 |
--- /dev/null |
+++ b/ios/chrome/browser/ui/stack_view/stack_view_toolbar_controller.mm |
@@ -0,0 +1,74 @@ |
+// Copyright 2012 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#import "ios/chrome/browser/ui/stack_view/stack_view_toolbar_controller.h" |
+ |
+#include "base/mac/foundation_util.h" |
+#include "base/metrics/user_metrics.h" |
+#include "base/metrics/user_metrics_action.h" |
+#import "ios/chrome/browser/ui/image_util.h" |
+#import "ios/chrome/browser/ui/rtl_geometry.h" |
+#include "ios/chrome/browser/ui/toolbar/new_tab_button.h" |
+#import "ios/chrome/browser/ui/uikit_ui_util.h" |
+ |
+using base::UserMetricsAction; |
+ |
+namespace { |
+const CGFloat kNewTabLeadingOffset = 10.0; |
+const int kBackgroundViewColor = 0x282C32; |
+const CGFloat kBackgroundViewColorAlpha = 0.95; |
+} |
+ |
+@implementation StackViewToolbarController { |
+ base::scoped_nsobject<UIView> _stackViewToolbar; |
+ base::scoped_nsobject<NewTabButton> _openNewTabButton; |
+} |
+ |
+- (instancetype)initWithStackViewToolbar { |
+ self = [super initWithStyle:ToolbarControllerStyleDarkMode]; |
+ if (self) { |
+ _stackViewToolbar.reset( |
+ [[UIView alloc] initWithFrame:[self specificControlsArea]]); |
+ [_stackViewToolbar setAutoresizingMask:UIViewAutoresizingFlexibleHeight | |
+ UIViewAutoresizingFlexibleWidth]; |
+ |
+ _openNewTabButton.reset([[NewTabButton alloc] initWithFrame:CGRectZero]); |
+ |
+ [_openNewTabButton |
+ setAutoresizingMask:UIViewAutoresizingFlexibleTopMargin | |
+ UIViewAutoresizingFlexibleTrailingMargin()]; |
+ CGFloat buttonSize = [_stackViewToolbar bounds].size.height; |
+ // Set the button's position. |
+ LayoutRect newTabButtonLayout = LayoutRectMake( |
+ kNewTabLeadingOffset, [_stackViewToolbar bounds].size.width, 0, |
+ buttonSize, buttonSize); |
+ [_openNewTabButton setFrame:LayoutRectGetRect(newTabButtonLayout)]; |
+ // Set additional button action. |
+ [_openNewTabButton addTarget:self |
+ action:@selector(recordUserMetrics:) |
+ forControlEvents:UIControlEventTouchUpInside]; |
+ |
+ self.shadowView.alpha = 0.0; |
+ self.backgroundView.image = nil; |
+ self.backgroundView.backgroundColor = |
+ UIColorFromRGB(kBackgroundViewColor, kBackgroundViewColorAlpha); |
+ |
+ [_stackViewToolbar addSubview:_openNewTabButton]; |
+ [self.view addSubview:_stackViewToolbar]; |
+ } |
+ return self; |
+} |
+ |
+- (NewTabButton*)openNewTabButton { |
+ return _openNewTabButton.get(); |
+} |
+ |
+- (IBAction)recordUserMetrics:(id)sender { |
+ if (sender == _openNewTabButton.get()) |
+ base::RecordAction(UserMetricsAction("MobileToolbarStackViewNewTab")); |
+ else |
+ [super recordUserMetrics:sender]; |
+} |
+ |
+@end |