app_list_service.cc revision eb525c5499e34cc9c4b825d6d9e75bb07cc06ace
1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "chrome/browser/ui/app_list/app_list_service.h" 6 7#include "base/command_line.h" 8#include "base/metrics/histogram.h" 9#include "base/prefs/pref_registry_simple.h" 10#include "base/process_info.h" 11#include "base/strings/string_number_conversions.h" 12#include "base/time/time.h" 13#include "chrome/common/chrome_switches.h" 14#include "chrome/common/pref_names.h" 15 16namespace { 17 18base::TimeDelta GetTimeFromOriginalProcessStart( 19 const CommandLine& command_line) { 20 std::string start_time_string = 21 command_line.GetSwitchValueASCII(switches::kOriginalProcessStartTime); 22 int64 remote_start_time; 23 base::StringToInt64(start_time_string, &remote_start_time); 24 return base::Time::Now() - base::Time::FromInternalValue(remote_start_time); 25} 26 27} // namespace 28 29// static 30void AppListService::RegisterPrefs(PrefRegistrySimple* registry) { 31 registry->RegisterInt64Pref(prefs::kLastAppListLaunchPing, 0); 32 registry->RegisterIntegerPref(prefs::kAppListLaunchCount, 0); 33 registry->RegisterInt64Pref(prefs::kLastAppListAppLaunchPing, 0); 34 registry->RegisterIntegerPref(prefs::kAppListAppLaunchCount, 0); 35 registry->RegisterStringPref(prefs::kAppListProfile, std::string()); 36 registry->RegisterBooleanPref(prefs::kRestartWithAppList, false); 37} 38 39// static 40void AppListService::RecordShowTimings(const CommandLine& command_line) { 41 // The presence of kOriginalProcessStartTime implies that another process 42 // has sent us its command line to handle, ie: we are already running. 43 if (command_line.HasSwitch(switches::kOriginalProcessStartTime)) { 44 base::TimeDelta elapsed = GetTimeFromOriginalProcessStart(command_line); 45 if (command_line.HasSwitch(switches::kFastStart)) 46 UMA_HISTOGRAM_LONG_TIMES("Startup.ShowAppListWarmStartFast", elapsed); 47 else 48 UMA_HISTOGRAM_LONG_TIMES("Startup.ShowAppListWarmStart", elapsed); 49 } else { 50 // base::CurrentProcessInfo::CreationTime() is only defined on win/mac. 51#if defined(OS_WIN) || defined(OS_MACOSX) 52 UMA_HISTOGRAM_LONG_TIMES( 53 "Startup.ShowAppListColdStart", 54 base::Time::Now() - *base::CurrentProcessInfo::CreationTime()); 55#endif 56 } 57} 58