Index: ios/chrome/browser/ui/tools_menu/tools_menu_view_controller.mm |
diff --git a/ios/chrome/browser/ui/tools_menu/tools_menu_view_controller.mm b/ios/chrome/browser/ui/tools_menu/tools_menu_view_controller.mm |
index e6bd95496bce10cbe3a5a71d22163a90f2dbbd75..09b81d46bd2271edaa03ecc0fdae66dca578546c 100644 |
--- a/ios/chrome/browser/ui/tools_menu/tools_menu_view_controller.mm |
+++ b/ios/chrome/browser/ui/tools_menu/tools_menu_view_controller.mm |
@@ -12,6 +12,7 @@ |
#include "base/mac/objc_property_releaser.h" |
#include "base/mac/scoped_nsobject.h" |
#include "base/metrics/field_trial.h" |
+#include "base/metrics/histogram_macros.h" |
#include "components/strings/grit/components_strings.h" |
#include "ios/chrome/browser/experimental_flags.h" |
#import "ios/chrome/browser/ui/animation_util.h" |
@@ -36,7 +37,6 @@ |
#include "ios/web/public/user_agent.h" |
#include "ui/base/l10n/l10n_util.h" |
#include "ui/base/l10n/l10n_util_mac.h" |
- |
using ios::material::TimingFunction; |
namespace { |
@@ -114,6 +114,10 @@ NS_INLINE void AnimateInViews(NSArray* views, |
@property(nonatomic, retain) ToolsMenuCollectionView* menuView; |
@property(nonatomic, retain) MDCInkView* touchFeedbackView; |
@property(nonatomic, assign) ToolbarType toolbarType; |
+// Populated by the configuration object in |initializeMenuWithConfiguration:| |
+// stores the time this view controller was requested by the user for the |
+// reporting of metrics. |
+@property(nonatomic, assign) NSTimeInterval requestStartTime; |
// Returns the reading list cell. |
- (ReadingListMenuViewCell*)readingListCell; |
@@ -128,6 +132,7 @@ NS_INLINE void AnimateInViews(NSArray* views, |
@synthesize toolbarType = _toolbarType; |
@synthesize menuItems = _menuItems; |
@synthesize delegate = _delegate; |
+@synthesize requestStartTime = _requestStartTime; |
#pragma mark Public methods |
@@ -209,6 +214,8 @@ NS_INLINE void AnimateInViews(NSArray* views, |
} |
- (void)initializeMenuWithConfiguration:(ToolsMenuConfiguration*)configuration { |
+ self.requestStartTime = configuration.requestStartTime; |
+ |
if (configuration.readingListMenuNotifier) { |
_readingListMenuNotifier.reset(configuration.readingListMenuNotifier); |
[configuration.readingListMenuNotifier setDelegate:self]; |
@@ -434,6 +441,18 @@ NS_INLINE void AnimateInViews(NSArray* views, |
[CATransaction |
setAnimationTimingFunction:TimingFunction(ios::material::CurveEaseInOut)]; |
[CATransaction setAnimationDuration:ios::material::kDuration5]; |
+ [CATransaction setCompletionBlock:^{ |
+ if (self.requestStartTime != 0) { |
+ UMA_HISTOGRAM_TIMES( |
+ "Toolbar.ShowToolsMenuResponsiveness", |
+ base::TimeDelta::FromSecondsD( |
+ [NSDate timeIntervalSinceReferenceDate] - self.requestStartTime)); |
+ // Reset the start time to ensure that whatever happens, we only record |
+ // this once. |
+ self.requestStartTime = 0; |
+ } |
+ |
+ }]; |
AnimateInViews([toolsCell allButtons], 10, 0); |
AnimateInViews(visibleCells, 0, -10); |
[CATransaction commit]; |