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

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

Issue 6340013: Add histogram to track prerender sessions (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: remediate to review, merge with Timo's changes Created 9 years, 10 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.h ('k') | chrome/browser/prerender/prerender_manager.h » ('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 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 #include "chrome/browser/net/chrome_dns_cert_provenance_checker.h" 49 #include "chrome/browser/net/chrome_dns_cert_provenance_checker.h"
50 #include "chrome/browser/net/chrome_dns_cert_provenance_checker_factory.h" 50 #include "chrome/browser/net/chrome_dns_cert_provenance_checker_factory.h"
51 #include "chrome/browser/net/metadata_url_request.h" 51 #include "chrome/browser/net/metadata_url_request.h"
52 #include "chrome/browser/net/predictor_api.h" 52 #include "chrome/browser/net/predictor_api.h"
53 #include "chrome/browser/net/sdch_dictionary_fetcher.h" 53 #include "chrome/browser/net/sdch_dictionary_fetcher.h"
54 #include "chrome/browser/net/websocket_experiment/websocket_experiment_runner.h" 54 #include "chrome/browser/net/websocket_experiment/websocket_experiment_runner.h"
55 #include "chrome/browser/plugin_service.h" 55 #include "chrome/browser/plugin_service.h"
56 #include "chrome/browser/prefs/browser_prefs.h" 56 #include "chrome/browser/prefs/browser_prefs.h"
57 #include "chrome/browser/prefs/pref_service.h" 57 #include "chrome/browser/prefs/pref_service.h"
58 #include "chrome/browser/prefs/pref_value_store.h" 58 #include "chrome/browser/prefs/pref_value_store.h"
59 #include "chrome/browser/prerender/prerender_manager.h"
59 #include "chrome/browser/printing/cloud_print/cloud_print_proxy_service.h" 60 #include "chrome/browser/printing/cloud_print/cloud_print_proxy_service.h"
60 #include "chrome/browser/printing/print_dialog_cloud.h" 61 #include "chrome/browser/printing/print_dialog_cloud.h"
61 #include "chrome/browser/process_singleton.h" 62 #include "chrome/browser/process_singleton.h"
62 #include "chrome/browser/profiles/profile.h" 63 #include "chrome/browser/profiles/profile.h"
63 #include "chrome/browser/profiles/profile_manager.h" 64 #include "chrome/browser/profiles/profile_manager.h"
64 #include "chrome/browser/renderer_host/resource_dispatcher_host.h" 65 #include "chrome/browser/renderer_host/resource_dispatcher_host.h"
65 #include "chrome/browser/search_engines/search_engine_type.h" 66 #include "chrome/browser/search_engines/search_engine_type.h"
66 #include "chrome/browser/search_engines/template_url.h" 67 #include "chrome/browser/search_engines/template_url.h"
67 #include "chrome/browser/search_engines/template_url_model.h" 68 #include "chrome/browser/search_engines/template_url_model.h"
68 #include "chrome/browser/service/service_process_control.h" 69 #include "chrome/browser/service/service_process_control.h"
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 PostEarlyInitialization(); 218 PostEarlyInitialization();
218 } 219 }
219 220
220 // This will be called after the command-line has been mutated by about:flags 221 // This will be called after the command-line has been mutated by about:flags
221 void BrowserMainParts::SetupFieldTrials() { 222 void BrowserMainParts::SetupFieldTrials() {
222 // Note: make sure to call ConnectionFieldTrial() before 223 // Note: make sure to call ConnectionFieldTrial() before
223 // ProxyConnectionsFieldTrial(). 224 // ProxyConnectionsFieldTrial().
224 ConnectionFieldTrial(); 225 ConnectionFieldTrial();
225 SocketTimeoutFieldTrial(); 226 SocketTimeoutFieldTrial();
226 ProxyConnectionsFieldTrial(); 227 ProxyConnectionsFieldTrial();
227 PrefetchFieldTrial(); 228 PrefetchAndPrerenderFieldTrial();
228 SpdyFieldTrial(); 229 SpdyFieldTrial();
229 ConnectBackupJobsFieldTrial(); 230 ConnectBackupJobsFieldTrial();
230 } 231 }
231 232
232 // This is an A/B test for the maximum number of persistent connections per 233 // This is an A/B test for the maximum number of persistent connections per
233 // host. Currently Chrome, Firefox, and IE8 have this value set at 6. Safari 234 // host. Currently Chrome, Firefox, and IE8 have this value set at 6. Safari
234 // uses 4, and Fasterfox (a plugin for Firefox that supposedly configures it to 235 // uses 4, and Fasterfox (a plugin for Firefox that supposedly configures it to
235 // run faster) uses 8. We would like to see how much of an effect this value has 236 // run faster) uses 8. We would like to see how much of an effect this value has
236 // on browsing. Too large a value might cause us to run into SYN flood detection 237 // on browsing. Too large a value might cause us to run into SYN flood detection
237 // mechanisms. 238 // mechanisms.
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
422 &value); 423 &value);
423 if (value > 0) 424 if (value > 0)
424 net::SpdySession::set_max_concurrent_streams(value); 425 net::SpdySession::set_max_concurrent_streams(value);
425 } 426 }
426 } 427 }
427 428
428 // If any of --enable-prerender, --enable-content-prefetch or 429 // If any of --enable-prerender, --enable-content-prefetch or
429 // --disable-content-prefetch are set, use those to determine if 430 // --disable-content-prefetch are set, use those to determine if
430 // prefetch is enabled. Otherwise, randomly assign users to an A/B test for 431 // prefetch is enabled. Otherwise, randomly assign users to an A/B test for
431 // prefetching. 432 // prefetching.
432 void BrowserMainParts::PrefetchFieldTrial() { 433 void BrowserMainParts::PrefetchAndPrerenderFieldTrial() {
433 if (parsed_command_line().HasSwitch(switches::kEnableContentPrefetch) || 434 if (parsed_command_line().HasSwitch(switches::kEnableContentPrefetch) ||
434 parsed_command_line().HasSwitch(switches::kEnablePagePrerender)) 435 parsed_command_line().HasSwitch(switches::kEnablePagePrerender))
435 ResourceDispatcherHost::set_is_prefetch_enabled(true); 436 ResourceDispatcherHost::set_is_prefetch_enabled(true);
436 else if (parsed_command_line().HasSwitch(switches::kDisableContentPrefetch)) { 437 else if (parsed_command_line().HasSwitch(switches::kDisableContentPrefetch)) {
437 ResourceDispatcherHost::set_is_prefetch_enabled(false); 438 ResourceDispatcherHost::set_is_prefetch_enabled(false);
438 } else { 439 } else {
439 const base::FieldTrial::Probability kPrefetchDivisor = 1000; 440 const base::FieldTrial::Probability kPrefetchDivisor = 1000;
440 const base::FieldTrial::Probability no_prefetch_probability = 500; 441 const base::FieldTrial::Probability no_prefetch_probability = 500;
441 // After June 30, 2011 builds, it will always be in default group. 442 // After June 30, 2011 builds, it will always be in default group.
442 scoped_refptr<base::FieldTrial> trial( 443 scoped_refptr<base::FieldTrial> trial(
443 new base::FieldTrial("Prefetch", kPrefetchDivisor, 444 new base::FieldTrial("Prefetch", kPrefetchDivisor,
444 "ContentPrefetchEnabled", 2011, 6, 30)); 445 "ContentPrefetchEnabled", 2011, 6, 30));
445 const int yes_prefetch_grp = trial->kDefaultGroupNumber; 446 const int yes_prefetch_grp = trial->kDefaultGroupNumber;
446 trial->AppendGroup("ContentPrefetchDisabled", no_prefetch_probability); 447 trial->AppendGroup("ContentPrefetchDisabled", no_prefetch_probability);
447 const int trial_grp = trial->group(); 448 const int trial_grp = trial->group();
448 ResourceDispatcherHost::set_is_prefetch_enabled( 449 ResourceDispatcherHost::set_is_prefetch_enabled(
449 trial_grp == yes_prefetch_grp); 450 trial_grp == yes_prefetch_grp);
450 } 451 }
452
453 PrerenderManager::PrerenderManagerMode prerender_mode;
cbentzel 2011/01/27 04:38:34 Uninitialized values always scare me. Maybe change
gavinp 2011/01/27 05:25:26 Done.
454 if (parsed_command_line().HasSwitch(switches::kEnablePagePrerender))
455 prerender_mode = PrerenderManager::PRERENDER_MODE_ENABLED;
456 else
457 prerender_mode = PrerenderManager::PRERENDER_MODE_DISABLED;
458 PrerenderManager::SetMode(prerender_mode);
459
460 UMA_HISTOGRAM_ENUMERATION("Prerender.Sessions", prerender_mode,
cbentzel 2011/01/27 04:38:34 Do we have other Prerender-prefixed histograms at
gavinp 2011/01/27 05:25:26 This is the first one. I couldn't think of anothe
461 PrerenderManager::PRERENDER_MODE_MAX);
451 } 462 }
452 463
453 // If neither --enable-connect-backup-jobs or --disable-connect-backup-jobs is 464 // If neither --enable-connect-backup-jobs or --disable-connect-backup-jobs is
454 // specified, run an A/B test for automatically establishing backup TCP 465 // specified, run an A/B test for automatically establishing backup TCP
455 // connections when a certain timeout value is exceeded. 466 // connections when a certain timeout value is exceeded.
456 void BrowserMainParts::ConnectBackupJobsFieldTrial() { 467 void BrowserMainParts::ConnectBackupJobsFieldTrial() {
457 if (parsed_command_line().HasSwitch(switches::kEnableConnectBackupJobs)) { 468 if (parsed_command_line().HasSwitch(switches::kEnableConnectBackupJobs)) {
458 net::internal::ClientSocketPoolBaseHelper::set_connect_backup_jobs_enabled( 469 net::internal::ClientSocketPoolBaseHelper::set_connect_backup_jobs_enabled(
459 true); 470 true);
460 } else if (parsed_command_line().HasSwitch( 471 } else if (parsed_command_line().HasSwitch(
(...skipping 1324 matching lines...) Expand 10 before | Expand all | Expand 10 after
1785 #if defined(OS_CHROMEOS) 1796 #if defined(OS_CHROMEOS)
1786 // To be precise, logout (browser shutdown) is not yet done, but the 1797 // To be precise, logout (browser shutdown) is not yet done, but the
1787 // remaining work is negligible, hence we say LogoutDone here. 1798 // remaining work is negligible, hence we say LogoutDone here.
1788 chromeos::BootTimesLoader::Get()->AddLogoutTimeMarker("LogoutDone", 1799 chromeos::BootTimesLoader::Get()->AddLogoutTimeMarker("LogoutDone",
1789 false); 1800 false);
1790 chromeos::BootTimesLoader::Get()->WriteLogoutTimes(); 1801 chromeos::BootTimesLoader::Get()->WriteLogoutTimes();
1791 #endif 1802 #endif
1792 TRACE_EVENT_END("BrowserMain", 0, 0); 1803 TRACE_EVENT_END("BrowserMain", 0, 0);
1793 return result_code; 1804 return result_code;
1794 } 1805 }
OLDNEW
« no previous file with comments | « chrome/browser/browser_main.h ('k') | chrome/browser/prerender/prerender_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698