summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorasvitkine <asvitkine@chromium.org>2015-06-09 08:36:42 -0700
committerCommit bot <commit-bot@chromium.org>2015-06-09 15:37:09 +0000
commite25de0ff2fff45175fed8d2140d8a44213530913 (patch)
treee56c472d4d104e5cd7382b8aa35122777368b3c2
parent6151512345209471009ad1f679bc78c46b998f99 (diff)
downloadchromium_src-e25de0ff2fff45175fed8d2140d8a44213530913.zip
chromium_src-e25de0ff2fff45175fed8d2140d8a44213530913.tar.gz
chromium_src-e25de0ff2fff45175fed8d2140d8a44213530913.tar.bz2
Deprecate Startup.SlowStartup* histograms.
Per discussion on the associated bug, these aren't as useful without data for fast start ups and many of these areas are already being investigated using other mechanism (i.e. histograms that are always logged, UMA profiler, etc). Also updates components/startup_metric_utils/OWNERS to a more current set of people that are now focusing on the start up performance problem space, removing jeremy@ who is no longer working on Chrome. BUG=246555 Review URL: https://codereview.chromium.org/1167203002 Cr-Commit-Position: refs/heads/master@{#333491}
-rw-r--r--chrome/browser/chrome_browser_main.cc28
-rw-r--r--chrome/browser/profiles/profile_impl.cc7
-rw-r--r--chrome/browser/profiles/profile_io_data.cc4
-rw-r--r--chrome/browser/safe_browsing/local_database_manager.cc5
-rw-r--r--chrome/browser/safe_browsing/safe_browsing_service.cc4
-rw-r--r--chrome/browser/sessions/session_service.cc4
-rw-r--r--components/bookmarks/browser/bookmark_storage.cc3
-rw-r--r--components/startup_metric_utils/OWNERS3
-rw-r--r--components/startup_metric_utils/startup_metric_utils.cc86
-rw-r--r--components/startup_metric_utils/startup_metric_utils.h22
-rw-r--r--crypto/nss_util.cc11
-rw-r--r--tools/metrics/histograms/histograms.xml40
12 files changed, 42 insertions, 175 deletions
diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_browser_main.cc
index 2b77ec8..462a275 100644
--- a/chrome/browser/chrome_browser_main.cc
+++ b/chrome/browser/chrome_browser_main.cc
@@ -536,31 +536,6 @@ void LaunchDevToolsHandlerIfNeeded(const base::CommandLine& command_line) {
}
}
-// Heap allocated class that listens for first page load, kicks off stat
-// recording and then deletes itself.
-class LoadCompleteListener : public content::NotificationObserver {
- public:
- LoadCompleteListener() {
- registrar_.Add(this,
- content::NOTIFICATION_LOAD_COMPLETED_MAIN_FRAME,
- content::NotificationService::AllSources());
- }
- ~LoadCompleteListener() override {}
-
- // content::NotificationObserver implementation.
- void Observe(int type,
- const content::NotificationSource& source,
- const content::NotificationDetails& details) override {
- DCHECK_EQ(content::NOTIFICATION_LOAD_COMPLETED_MAIN_FRAME, type);
- startup_metric_utils::OnInitialPageLoadComplete();
- delete this;
- }
-
- private:
- content::NotificationRegistrar registrar_;
- DISALLOW_COPY_AND_ASSIGN(LoadCompleteListener);
-};
-
} // namespace
namespace chrome_browser {
@@ -748,9 +723,6 @@ void ChromeBrowserMainParts::RecordBrowserStartupTime() {
// Record collected startup metrics.
startup_metric_utils::OnBrowserStartupComplete(is_first_run);
-
- // Deletes self.
- new LoadCompleteListener();
}
// -----------------------------------------------------------------------------
diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc
index 6eb96e9..b61964d 100644
--- a/chrome/browser/profiles/profile_impl.cc
+++ b/chrome/browser/profiles/profile_impl.cc
@@ -88,7 +88,6 @@
#include "components/metrics/metrics_service.h"
#include "components/pref_registry/pref_registry_syncable.h"
#include "components/signin/core/browser/signin_manager.h"
-#include "components/startup_metric_utils/startup_metric_utils.h"
#include "components/ui/zoom/zoom_event_manager.h"
#include "components/url_fixer/url_fixer.h"
#include "components/user_prefs/user_prefs.h"
@@ -451,10 +450,6 @@ ProfileImpl::ProfileImpl(
}
{
- // On startup, preference loading is always synchronous so a scoped timer
- // will work here.
- startup_metric_utils::ScopedSlowStartupUMA
- scoped_timer("Startup.SlowStartupPreferenceLoading");
prefs_ = chrome_prefs::CreateProfilePrefs(
path_,
sequenced_task_runner,
@@ -468,8 +463,6 @@ ProfileImpl::ProfileImpl(
user_prefs::UserPrefs::Set(this, prefs_.get());
}
- startup_metric_utils::ScopedSlowStartupUMA
- scoped_timer("Startup.SlowStartupFinalProfileInit");
if (async_prefs) {
// Wait for the notification that prefs has been loaded
// (successfully or not). Note that we can use base::Unretained
diff --git a/chrome/browser/profiles/profile_io_data.cc b/chrome/browser/profiles/profile_io_data.cc
index e625178..4e1f3b7 100644
--- a/chrome/browser/profiles/profile_io_data.cc
+++ b/chrome/browser/profiles/profile_io_data.cc
@@ -56,7 +56,6 @@
#include "components/content_settings/core/browser/host_content_settings_map.h"
#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_io_data.h"
#include "components/dom_distiller/core/url_constants.h"
-#include "components/startup_metric_utils/startup_metric_utils.h"
#include "components/sync_driver/pref_names.h"
#include "components/url_fixer/url_fixer.h"
#include "content/public/browser/browser_thread.h"
@@ -982,9 +981,6 @@ void ProfileIOData::Init(
DCHECK_CURRENTLY_ON(BrowserThread::IO);
DCHECK(!initialized_);
- startup_metric_utils::ScopedSlowStartupUMA
- scoped_timer("Startup.SlowStartupProfileIODataInit");
-
// TODO(jhawkins): Remove once crbug.com/102004 is fixed.
CHECK(initialized_on_UI_thread_);
diff --git a/chrome/browser/safe_browsing/local_database_manager.cc b/chrome/browser/safe_browsing/local_database_manager.cc
index a19eac9..e02db2d 100644
--- a/chrome/browser/safe_browsing/local_database_manager.cc
+++ b/chrome/browser/safe_browsing/local_database_manager.cc
@@ -27,7 +27,6 @@
#include "chrome/common/chrome_constants.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/common/chrome_switches.h"
-#include "components/startup_metric_utils/startup_metric_utils.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/notification_service.h"
#include "url/url_constants.h"
@@ -750,10 +749,8 @@ SafeBrowsingDatabase* LocalSafeBrowsingDatabaseManager::GetDatabase() {
if (database_)
return database_;
- startup_metric_utils::ScopedSlowStartupUMA
- scoped_timer("Startup.SlowStartupSafeBrowsingGetDatabase");
- const base::TimeTicks before = base::TimeTicks::Now();
+ const base::TimeTicks before = base::TimeTicks::Now();
SafeBrowsingDatabase* database = SafeBrowsingDatabase::Create(
safe_browsing_task_runner_, enable_download_protection_,
enable_csd_whitelist_, enable_download_whitelist_,
diff --git a/chrome/browser/safe_browsing/safe_browsing_service.cc b/chrome/browser/safe_browsing/safe_browsing_service.cc
index 0d7f7da..162e6c2 100644
--- a/chrome/browser/safe_browsing/safe_browsing_service.cc
+++ b/chrome/browser/safe_browsing/safe_browsing_service.cc
@@ -37,7 +37,6 @@
#include "chrome/common/chrome_switches.h"
#include "chrome/common/pref_names.h"
#include "chrome/common/url_constants.h"
-#include "components/startup_metric_utils/startup_metric_utils.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/cookie_store_factory.h"
#include "content/public/browser/notification_service.h"
@@ -218,9 +217,6 @@ SafeBrowsingService::~SafeBrowsingService() {
}
void SafeBrowsingService::Initialize() {
- startup_metric_utils::ScopedSlowStartupUMA
- scoped_timer("Startup.SlowStartupSafeBrowsingServiceInitialize");
-
url_request_context_getter_ =
new SafeBrowsingURLRequestContextGetter(this);
diff --git a/chrome/browser/sessions/session_service.cc b/chrome/browser/sessions/session_service.cc
index 0b8759a..1e241d6 100644
--- a/chrome/browser/sessions/session_service.cc
+++ b/chrome/browser/sessions/session_service.cc
@@ -39,7 +39,6 @@
#include "components/sessions/content/content_serialized_navigation_builder.h"
#include "components/sessions/session_command.h"
#include "components/sessions/session_types.h"
-#include "components/startup_metric_utils/startup_metric_utils.h"
#include "content/public/browser/navigation_details.h"
#include "content/public/browser/navigation_entry.h"
#include "content/public/browser/notification_details.h"
@@ -701,9 +700,6 @@ void SessionService::OnGotSessionCommands(
ScopedVector<sessions::SessionWindow> valid_windows;
SessionID::id_type active_window_id = 0;
- startup_metric_utils::ScopedSlowStartupUMA
- scoped_timer("Startup.SlowStartupSessionServiceCreateTabsAndWindows");
-
sessions::RestoreSessionFromCommands(
commands, &valid_windows.get(), &active_window_id);
RemoveUnusedRestoreWindows(&valid_windows.get());
diff --git a/components/bookmarks/browser/bookmark_storage.cc b/components/bookmarks/browser/bookmark_storage.cc
index 2612f9c..74d6417 100644
--- a/components/bookmarks/browser/bookmark_storage.cc
+++ b/components/bookmarks/browser/bookmark_storage.cc
@@ -16,7 +16,6 @@
#include "components/bookmarks/browser/bookmark_index.h"
#include "components/bookmarks/browser/bookmark_model.h"
#include "components/bookmarks/common/bookmark_constants.h"
-#include "components/startup_metric_utils/startup_metric_utils.h"
using base::TimeTicks;
@@ -51,8 +50,6 @@ void LoadCallback(const base::FilePath& path,
const base::WeakPtr<BookmarkStorage>& storage,
scoped_ptr<BookmarkLoadDetails> details,
base::SequencedTaskRunner* task_runner) {
- startup_metric_utils::ScopedSlowStartupUMA
- scoped_timer("Startup.SlowStartupBookmarksLoad");
bool load_index = false;
bool bookmark_file_exists = base::PathExists(path);
if (bookmark_file_exists) {
diff --git a/components/startup_metric_utils/OWNERS b/components/startup_metric_utils/OWNERS
index b112a84..f75fe2e 100644
--- a/components/startup_metric_utils/OWNERS
+++ b/components/startup_metric_utils/OWNERS
@@ -1 +1,2 @@
-jeremy@chromium.org \ No newline at end of file
+erikchen@chromium.org
+gab@chromium.org
diff --git a/components/startup_metric_utils/startup_metric_utils.cc b/components/startup_metric_utils/startup_metric_utils.cc
index b82da00..1d546fe 100644
--- a/components/startup_metric_utils/startup_metric_utils.cc
+++ b/components/startup_metric_utils/startup_metric_utils.cc
@@ -7,12 +7,9 @@
#include "base/containers/hash_tables.h"
#include "base/environment.h"
#include "base/logging.h"
-#include "base/metrics/histogram.h"
-#include "base/metrics/histogram_base.h"
-#include "base/metrics/statistics_recorder.h"
+#include "base/metrics/histogram_macros.h"
#include "base/process/process_info.h"
#include "base/strings/string_number_conversions.h"
-#include "base/synchronization/lock.h"
#include "base/sys_info.h"
#include "base/time/time.h"
@@ -32,19 +29,6 @@ base::Time* MainEntryPointTimeInternal() {
return &main_start_time;
}
-typedef base::hash_map<std::string,base::TimeDelta> SubsystemStartupTimeHash;
-
-SubsystemStartupTimeHash* GetSubsystemStartupTimeHash() {
- static SubsystemStartupTimeHash* slow_startup_time_hash =
- new SubsystemStartupTimeHash;
- return slow_startup_time_hash;
-}
-
-base::Lock* GetSubsystemStartupTimeHashLock() {
- static base::Lock* slow_startup_time_hash_lock = new base::Lock;
- return slow_startup_time_hash_lock;
-}
-
#if defined(OS_WIN)
// The struct used to return system process information via the NT internal
@@ -218,8 +202,6 @@ void RecordMainEntryTimeHistogram() {
}
bool g_main_entry_time_was_recorded = false;
-bool g_startup_stats_collection_finished = false;
-bool g_was_slow_startup = false;
// Environment variable that stores the timestamp when the executable's main()
// function was entered.
@@ -272,10 +254,8 @@ void OnBrowserStartupComplete(bool is_first_run) {
// autostarted and the machine is under io pressure.
const int64 kSevenMinutesInMilliseconds =
base::TimeDelta::FromMinutes(7).InMilliseconds();
- if (base::SysInfo::Uptime() < kSevenMinutesInMilliseconds) {
- g_startup_stats_collection_finished = true;
+ if (base::SysInfo::Uptime() < kSevenMinutesInMilliseconds)
return;
- }
// The Startup.BrowserMessageLoopStartTime histogram recorded in
// chrome_browser_main.cc exhibits instability in the field which limits its
@@ -329,54 +309,6 @@ void OnBrowserStartupComplete(bool is_first_run) {
}
}
#endif
-
- // Record histograms for the subsystem times for startups > 10 seconds.
- const base::TimeDelta kTenSeconds = base::TimeDelta::FromSeconds(10);
- if (startup_time_from_main_entry < kTenSeconds) {
- g_startup_stats_collection_finished = true;
- return;
- }
-
- // If we got here this was what we consider to be a slow startup which we
- // want to record stats for.
- g_was_slow_startup = true;
-}
-
-void OnInitialPageLoadComplete() {
- if (!g_was_slow_startup)
- return;
- DCHECK(!g_startup_stats_collection_finished);
-
- const base::TimeDelta kStartupTimeMin(
- base::TimeDelta::FromMilliseconds(1));
- const base::TimeDelta kStartupTimeMax(base::TimeDelta::FromMinutes(5));
- static const size_t kStartupTimeBuckets = 100;
-
- // Set UMA flag for histograms outside chrome/ that can't use the
- // ScopedSlowStartupUMA class.
- base::HistogramBase* histogram =
- base::StatisticsRecorder::FindHistogram("Startup.SlowStartupNSSInit");
- if (histogram)
- histogram->SetFlags(base::HistogramBase::kUmaTargetedHistogramFlag);
-
- // Iterate over the stats recorded by ScopedSlowStartupUMA and create
- // histograms for them.
- base::AutoLock locker(*GetSubsystemStartupTimeHashLock());
- SubsystemStartupTimeHash* time_hash = GetSubsystemStartupTimeHash();
- for (SubsystemStartupTimeHash::iterator i = time_hash->begin();
- i != time_hash->end();
- ++i) {
- const std::string histogram_name = i->first;
- base::HistogramBase* counter = base::Histogram::FactoryTimeGet(
- histogram_name,
- kStartupTimeMin,
- kStartupTimeMax,
- kStartupTimeBuckets,
- base::Histogram::kUmaTargetedHistogramFlag);
- counter->AddTime(i->second);
- }
-
- g_startup_stats_collection_finished = true;
}
const base::Time* MainEntryPointTime() {
@@ -385,18 +317,4 @@ const base::Time* MainEntryPointTime() {
return MainEntryPointTimeInternal();
}
-ScopedSlowStartupUMA::~ScopedSlowStartupUMA() {
- if (g_startup_stats_collection_finished)
- return;
-
- base::AutoLock locker(*GetSubsystemStartupTimeHashLock());
- SubsystemStartupTimeHash* hash = GetSubsystemStartupTimeHash();
- // Only record the initial sample for a given histogram.
- if (hash->find(histogram_name_) != hash->end())
- return;
-
- (*hash)[histogram_name_] =
- base::TimeTicks::Now() - start_time_;
-}
-
} // namespace startup_metric_utils
diff --git a/components/startup_metric_utils/startup_metric_utils.h b/components/startup_metric_utils/startup_metric_utils.h
index 3f62947..952abf9 100644
--- a/components/startup_metric_utils/startup_metric_utils.h
+++ b/components/startup_metric_utils/startup_metric_utils.h
@@ -48,33 +48,11 @@ void RecordSavedMainEntryPointTime(const base::Time& entry_point_time);
// |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();
-
// Returns the time of main entry recorded from RecordMainEntryPointTime.
// Returns NULL if that method has not yet been called.
// This method is expected to be called from the UI thread.
const base::Time* MainEntryPointTime();
-// 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_
diff --git a/crypto/nss_util.cc b/crypto/nss_util.cc
index df93160..125591c 100644
--- a/crypto/nss_util.cc
+++ b/crypto/nss_util.cc
@@ -37,7 +37,6 @@
#include "base/logging.h"
#include "base/memory/scoped_ptr.h"
#include "base/message_loop/message_loop.h"
-#include "base/metrics/histogram.h"
#include "base/native_library.h"
#include "base/path_service.h"
#include "base/stl_util.h"
@@ -685,8 +684,6 @@ class NSSInitSingleton {
initializing_tpm_token_(false),
chaps_module_(NULL),
root_(NULL) {
- base::TimeTicks start_time = base::TimeTicks::Now();
-
// It's safe to construct on any thread, since LazyInstance will prevent any
// other threads from accessing until the constructor is done.
thread_checker_.DetachFromThread();
@@ -783,14 +780,6 @@ class NSSInitSingleton {
NSS_SetAlgorithmPolicy(SEC_OID_MD5, 0, NSS_USE_ALG_IN_CERT_SIGNATURE);
NSS_SetAlgorithmPolicy(SEC_OID_PKCS1_MD5_WITH_RSA_ENCRYPTION,
0, NSS_USE_ALG_IN_CERT_SIGNATURE);
-
- // The UMA bit is conditionally set for this histogram in
- // components/startup_metric_utils.cc .
- LOCAL_HISTOGRAM_CUSTOM_TIMES("Startup.SlowStartupNSSInit",
- base::TimeTicks::Now() - start_time,
- base::TimeDelta::FromMilliseconds(10),
- base::TimeDelta::FromHours(1),
- 50);
}
// NOTE(willchan): We don't actually execute this code since we leak NSS to
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
index 39db40d..67b7301 100644
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -41635,20 +41635,27 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
<histogram name="Startup.LoadTime.ExeMainToDllMain">
<owner>jeremy@chromium.org</owner>
<summary>
- Time from the main() function in chrome.exe to chrome.dll's main().
+ Time from the main() function in chrome.exe to chrome.dll's main(). This
+ stat is only recorded after 7 minutes of OS uptime to try to mitigate the
+ variance resulting from Chrome being autostarted.
</summary>
</histogram>
<histogram name="Startup.LoadTime.ProcessCreateToDllMain">
<owner>jeremy@chromium.org</owner>
- <summary>Time from the process creation to chrome.dll's main().</summary>
+ <summary>
+ Time from the process creation to chrome.dll's main(). This stat is only
+ recorded after 7 minutes of OS uptime to try to mitigate the variance
+ resulting from Chrome being autostarted.
+ </summary>
</histogram>
<histogram name="Startup.LoadTime.ProcessCreateToExeMain">
<owner>jeremy@chromium.org</owner>
<summary>
Time from the process creation to executing the main() function in
- chrome.exe.
+ chrome.exe. This stat is only recorded after 7 minutes of OS uptime to try
+ to mitigate the variance resulting from Chrome being autostarted.
</summary>
</histogram>
@@ -41778,6 +41785,9 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
</histogram>
<histogram name="Startup.SlowStartupBookmarksLoad" units="milliseconds">
+ <obsolete>
+ Deprecated 06/2015.
+ </obsolete>
<owner>jeremy@chromium.org</owner>
<summary>
Time it takes to load bookmarks from disk. This measurement is only sent for
@@ -41787,6 +41797,9 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
<histogram name="Startup.SlowStartupExtensionServiceInitAfterImport"
units="milliseconds">
+ <obsolete>
+ Deprecated 06/2015.
+ </obsolete>
<owner>jeremy@chromium.org</owner>
<summary>
Time it takes to finish initialization of the extension service including
@@ -41796,6 +41809,9 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
</histogram>
<histogram name="Startup.SlowStartupFinalProfileInit" units="milliseconds">
+ <obsolete>
+ Deprecated 06/2015.
+ </obsolete>
<owner>jeremy@chromium.org</owner>
<summary>
Time the final stages of profile initialization taking including
@@ -41805,6 +41821,9 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
</histogram>
<histogram name="Startup.SlowStartupNSSInit" units="milliseconds">
+ <obsolete>
+ Deprecated 06/2015.
+ </obsolete>
<owner>jeremy@chromium.org</owner>
<summary>
Time it takes to load the NSS libraries and initialize it. This measurement
@@ -41814,6 +41833,9 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
</histogram>
<histogram name="Startup.SlowStartupPreferenceLoading" units="milliseconds">
+ <obsolete>
+ Deprecated 06/2015.
+ </obsolete>
<owner>jeremy@chromium.org</owner>
<summary>
Time it takes to load preferences from disk. This measurement is only sent
@@ -41822,6 +41844,9 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
</histogram>
<histogram name="Startup.SlowStartupProfileIODataInit" units="milliseconds">
+ <obsolete>
+ Deprecated 06/2015.
+ </obsolete>
<owner>jeremy@chromium.org</owner>
<summary>
Time it takes to initialize the ProfileIOData object - this includes
@@ -41832,6 +41857,9 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
<histogram name="Startup.SlowStartupSafeBrowsingGetDatabase"
units="milliseconds">
+ <obsolete>
+ Deprecated 06/2015.
+ </obsolete>
<owner>jeremy@chromium.org</owner>
<summary>
Time it takes to load the safe browsing database from disk. This measurement
@@ -41842,6 +41870,9 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
<histogram name="Startup.SlowStartupSafeBrowsingServiceInitialize"
units="milliseconds">
+ <obsolete>
+ Deprecated 06/2015.
+ </obsolete>
<owner>jeremy@chromium.org</owner>
<summary>
Time it takes to initialize the safe browsing service. This measurement is
@@ -41852,6 +41883,9 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
<histogram name="Startup.SlowStartupSessionServiceCreateTabsAndWindows"
units="milliseconds">
+ <obsolete>
+ Deprecated 06/2015.
+ </obsolete>
<owner>jeremy@chromium.org</owner>
<summary>
Time it takes for session restore to finish initiating creation of restored