diff options
Diffstat (limited to 'components/startup_metric_utils/startup_metric_utils.h')
-rw-r--r-- | components/startup_metric_utils/startup_metric_utils.h | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/components/startup_metric_utils/startup_metric_utils.h b/components/startup_metric_utils/startup_metric_utils.h new file mode 100644 index 0000000..594ad15 --- /dev/null +++ b/components/startup_metric_utils/startup_metric_utils.h @@ -0,0 +1,70 @@ +// Copyright 2013 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. + +#ifndef COMPONENTS_STARTUP_METRIC_UTILS_STARTUP_METRIC_UTILS_H_ +#define COMPONENTS_STARTUP_METRIC_UTILS_STARTUP_METRIC_UTILS_H_ + +#include <string> + +#include "base/time/time.h" + +// Utility functions to support metric collection for browser startup. + +namespace startup_metric_utils { + +// Returns true if any UI other than the browser window has been displayed +// so far. Useful to test if UI has been displayed before the first browser +// window was shown, which would invalidate any surrounding timing metrics. +bool WasNonBrowserUIDisplayed(); + +// Call this when displaying UI that might potentially delay the appearance +// of the initial browser window on Chrome startup. +// +// Note on usage: This function is idempotent and its overhead is low enough +// in comparison with UI display that it's OK to call it on every +// UI invocation regardless of whether the browser window has already +// been displayed or not. +void SetNonBrowserUIDisplayed(); + +// Call this as early as possible in the startup process to record a +// timestamp. +void RecordMainEntryPointTime(); + +#if defined(OS_ANDROID) +// On Android the entry point time is the time at which the Java code starts. +// This is recorded on the Java side, and then passed to the C++ side once the +// C++ library is loaded and running. +void RecordSavedMainEntryPointTime(const base::Time& entry_point_time); +#endif // OS_ANDROID + +// Called just before the message loop is about to start. Entry point to record +// startup stats. +// |is_first_run| - is the current launch part of a first run. +void OnBrowserStartupComplete(bool is_first_run); + +// Called when the initial page load has finished in order to record startup +// stats. +void OnInitialPageLoadComplete(); + +// Scoper that records the time period before it's destructed in a histogram +// with the given name. The histogram is only recorded for slow chrome startups. +// Useful for trying to figure out what parts of Chrome cause slow startup. +class ScopedSlowStartupUMA { + public: + explicit ScopedSlowStartupUMA(const std::string& histogram_name) + : start_time_(base::TimeTicks::Now()), + histogram_name_(histogram_name) {} + + ~ScopedSlowStartupUMA(); + + private: + const base::TimeTicks start_time_; + const std::string histogram_name_; + + DISALLOW_COPY_AND_ASSIGN(ScopedSlowStartupUMA); +}; + +} // namespace startup_metric_utils + +#endif // COMPONENTS_STARTUP_METRIC_UTILS_STARTUP_METRIC_UTILS_H_ |