Chromium Code Reviews| Index: chrome/browser/browser_main.cc |
| =================================================================== |
| --- chrome/browser/browser_main.cc (revision 98219) |
| +++ chrome/browser/browser_main.cc (working copy) |
| @@ -165,6 +165,8 @@ |
| #include <commctrl.h> |
| #include <shellapi.h> |
| +#include "base/environment.h" // For PreRead experiment. |
| +#include "base/win/registry.h" // For PreRead experiment. |
|
Sigurður Ásgeirsson
2011/08/25 17:44:14
I don't think you need this include?
chrisha
2011/08/25 19:39:17
Leftover from before refactor.
Done.
|
| #include "base/win/scoped_com_initializer.h" |
| #include "base/win/windows_version.h" |
| #include "chrome/browser/browser_trial.h" |
| @@ -814,6 +816,20 @@ |
| } |
| #endif // #if defined(USE_LINUX_BREAKPAD) |
| +// This code is specific to the Windows-only PreReadExperiment field-trial. |
| +void AddPreReadHistogramTime(const char* name, base::TimeDelta time) { |
| + const base::TimeDelta kMin(base::TimeDelta::FromMilliseconds(1)); |
| + const base::TimeDelta kMax(base::TimeDelta::FromHours(1)); |
| + static const size_t kBuckets(100); |
| + |
| + // FactoryTimeGet will always return a pointer to the same histogram object, |
| + // keyed on its name. There's no need for us to store it explicitly anywhere. |
| + base::Histogram* counter = base::Histogram::FactoryTimeGet( |
| + name, kMin, kMax, kBuckets, base::Histogram::kUmaTargetedHistogramFlag); |
| + |
| + counter->AddTime(time); |
| +} |
| + |
| } // namespace |
| namespace chrome_browser { |
| @@ -2046,12 +2062,8 @@ |
| if (pool) |
| pool->Recycle(); |
| - UMA_HISTOGRAM_CUSTOM_TIMES( |
| - "Startup.BrowserOpenTabs", |
| - base::TimeTicks::Now() - browser_open_start, |
| - base::TimeDelta::FromMilliseconds(1), |
| - base::TimeDelta::FromHours(1), |
| - 100); |
| + RecordPreReadExperimentTime("Startup.BrowserOpenTabs", |
| + base::TimeTicks::Now() - browser_open_start); |
| // TODO(mad): Move this call in a proper place on CrOS. |
| // http://crosbug.com/17687 |
| @@ -2146,3 +2158,30 @@ |
| TRACE_EVENT_END_ETW("BrowserMain", 0, 0); |
| return result_code; |
| } |
| + |
| +// This code is specific to the Windows-only PreReadExperiment field-trial. |
| +void RecordPreReadExperimentTime(const char* name, base::TimeDelta time) { |
| + DCHECK(name != NULL); |
| + |
| + // This gets called with different histogram names, so we don't want to use |
| + // the UMA_HISTOGRAM_CUSTOM_TIMES macro--it uses a static variable, and the |
| + // first call wins. |
| + AddPreReadHistogramTime(name, time); |
| + |
| +#if defined(OS_WIN) |
| + // The pre-read experiment is Windows specific. |
| + scoped_ptr<base::Environment> env(base::Environment::Create()); |
| + |
| + // Only record the sub-histogram result if the experiment is running |
| + // (environment variable is set, and valid). |
| + std::string pre_read; |
| + if (env->GetVar(chrome::kPreReadEnvironmentVariable, &pre_read) && |
| + (pre_read == "0" || pre_read == "1")) { |
| + std::string uma_name(name); |
| + uma_name += "_PreRead"; |
| + uma_name += pre_read == "1" ? "Enabled" : "Disabled"; |
| + AddPreReadHistogramTime(uma_name.c_str(), time); |
| + } |
| +#endif |
| +} |
| + |