Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(278)

Side by Side Diff: chrome/browser/browser_main_win.cc

Issue 7508034: Make a pre-read A/B field-trial (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/browser_main_win.h ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/browser_main.h" 5 #include "chrome/browser/browser_main.h"
6 #include "chrome/browser/browser_main_win.h" 6 #include "chrome/browser/browser_main_win.h"
7 7
8 #include <windows.h> 8 #include <windows.h>
9 #include <shellapi.h> 9 #include <shellapi.h>
10 10
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 } 83 }
84 } 84 }
85 85
86 void RecordBrowserStartupTime() { 86 void RecordBrowserStartupTime() {
87 // Calculate the time that has elapsed from our own process creation. 87 // Calculate the time that has elapsed from our own process creation.
88 FILETIME creation_time = {}; 88 FILETIME creation_time = {};
89 FILETIME ignore = {}; 89 FILETIME ignore = {};
90 ::GetProcessTimes(::GetCurrentProcess(), &creation_time, &ignore, &ignore, 90 ::GetProcessTimes(::GetCurrentProcess(), &creation_time, &ignore, &ignore,
91 &ignore); 91 &ignore);
92 92
93 base::TimeDelta elapsed_from_startup = 93 RecordPreReadExperimentTime(
94 base::Time::Now() - base::Time::FromFileTime(creation_time); 94 "Startup.BrowserMessageLoopStartTime",
95 95 base::Time::Now() - base::Time::FromFileTime(creation_time));
96 // Record the time to present in a histogram.
97 UMA_HISTOGRAM_MEDIUM_TIMES("Startup.BrowserMessageLoopStartTime",
98 elapsed_from_startup);
99 } 96 }
100 97
101 int AskForUninstallConfirmation() { 98 int AskForUninstallConfirmation() {
102 int ret = content::RESULT_CODE_NORMAL_EXIT; 99 int ret = content::RESULT_CODE_NORMAL_EXIT;
103 views::Widget::CreateWindow(new UninstallView(ret))->Show(); 100 views::Widget::CreateWindow(new UninstallView(ret))->Show();
104 views::AcceleratorHandler accelerator_handler; 101 views::AcceleratorHandler accelerator_handler;
105 MessageLoopForUI::current()->Run(&accelerator_handler); 102 MessageLoopForUI::current()->Run(&accelerator_handler);
106 return ret; 103 return ret;
107 } 104 }
108 105
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 uninstall_cmd.AppendSwitch( 266 uninstall_cmd.AppendSwitch(
270 installer::switches::kDoNotRemoveSharedItems); 267 installer::switches::kDoNotRemoveSharedItems);
271 base::LaunchProcess(uninstall_cmd, base::LaunchOptions(), NULL); 268 base::LaunchProcess(uninstall_cmd, base::LaunchOptions(), NULL);
272 } 269 }
273 return true; 270 return true;
274 } 271 }
275 } 272 }
276 return false; 273 return false;
277 } 274 }
278 275
276 // This code is specific to the Windows-only PreReadExperiment field-trial.
277 void AddPreReadHistogramTime(const char* name, base::TimeDelta time) {
Sigurður Ásgeirsson 2011/08/04 18:57:52 can this function be static?
chrisha 2011/08/04 19:02:07 Done.
278 static const base::TimeDelta kMin(base::TimeDelta::FromMilliseconds(1));
Sigurður Ásgeirsson 2011/08/04 18:57:52 These locals ought to be non-static per http://goo
chrisha 2011/08/04 19:02:07 Done.
279 static const base::TimeDelta kMax(base::TimeDelta::FromHours(1));
280 static const size_t kBuckets(100);
281
282 // FactoryTimeGet will always return a pointer to the same histogram object,
283 // keyed on its name. There's no need for us to store it explicitly anywhere.
284 base::Histogram* counter = base::Histogram::FactoryTimeGet(
285 name, kMin, kMax, kBuckets, base::Histogram::kUmaTargetedHistogramFlag);
286 DCHECK(counter != NULL);
287
288 counter->AddTime(time);
289 }
290
291 // This code is specific to the Windows-only PreReadExperiment field-trial.
292 void RecordPreReadExperimentTime(const char* name, base::TimeDelta time) {
293 DCHECK(name != NULL);
294
295 static const char kEnvVar[] = "CHROME_PRE_READ_EXPERIMENT";
296
297 // This gets called with different histogram names, so we don't want to use
298 // the UMA_HISTOGRAM_CUSTOM_TIMES macro--it uses a static variable, and the
299 // first call wins.
300 AddPreReadHistogramTime(name, time);
301
302 scoped_ptr<base::Environment> env(base::Environment::Create());
303 DCHECK(env.get() != NULL);
304
305 // Only record the sub-histogram result if the experiment is running
306 // (environment variable is set, and valid).
307 std::string pre_read;
308 if (env->GetVar(kEnvVar, &pre_read) && (pre_read == "0" || pre_read == "1")) {
309 std::string uma_name(name);
310 uma_name += "_PreRead";
311 uma_name += pre_read == "1" ? "Enabled" : "Disabled";
312 AddPreReadHistogramTime(uma_name.c_str(), time);
313 }
314 }
315
279 // BrowserMainPartsWin --------------------------------------------------------- 316 // BrowserMainPartsWin ---------------------------------------------------------
280 317
281 class BrowserMainPartsWin : public BrowserMainParts { 318 class BrowserMainPartsWin : public BrowserMainParts {
282 public: 319 public:
283 explicit BrowserMainPartsWin(const MainFunctionParams& parameters) 320 explicit BrowserMainPartsWin(const MainFunctionParams& parameters)
284 : BrowserMainParts(parameters) {} 321 : BrowserMainParts(parameters) {}
285 322
286 protected: 323 protected:
287 virtual void PreEarlyInitialization() { 324 virtual void PreEarlyInitialization() {
288 // Initialize Winsock. 325 // Initialize Winsock.
(...skipping 26 matching lines...) Expand all
315 crypto::EnsureNSPRInit(); 352 crypto::EnsureNSPRInit();
316 } 353 }
317 } 354 }
318 }; 355 };
319 356
320 // static 357 // static
321 BrowserMainParts* BrowserMainParts::CreateBrowserMainParts( 358 BrowserMainParts* BrowserMainParts::CreateBrowserMainParts(
322 const MainFunctionParams& parameters) { 359 const MainFunctionParams& parameters) {
323 return new BrowserMainPartsWin(parameters); 360 return new BrowserMainPartsWin(parameters);
324 } 361 }
OLDNEW
« no previous file with comments | « chrome/browser/browser_main_win.h ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698