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

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

Issue 11636031: [Fixit Dec-2012] Refactor first_run, very few things should depend on whether the First Run senti... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merge up to r174446 Created 8 years 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/chrome_browser_main.h" 5 #include "chrome/browser/chrome_browser_main.h"
6 6
7 #if defined(TOOLKIT_GTK) 7 #if defined(TOOLKIT_GTK)
8 #include <gtk/gtk.h> 8 #include <gtk/gtk.h>
9 #endif 9 #endif
10 10
(...skipping 470 matching lines...) Expand 10 before | Expand all | Expand 10 after
481 result_code_(content::RESULT_CODE_NORMAL_EXIT), 481 result_code_(content::RESULT_CODE_NORMAL_EXIT),
482 startup_watcher_(new StartupTimeBomb()), 482 startup_watcher_(new StartupTimeBomb()),
483 shutdown_watcher_(new ShutdownWatcherHelper()), 483 shutdown_watcher_(new ShutdownWatcherHelper()),
484 startup_timer_(new performance_monitor::StartupTimer()), 484 startup_timer_(new performance_monitor::StartupTimer()),
485 browser_field_trials_(parameters.command_line), 485 browser_field_trials_(parameters.command_line),
486 record_search_engine_(false), 486 record_search_engine_(false),
487 translate_manager_(NULL), 487 translate_manager_(NULL),
488 profile_(NULL), 488 profile_(NULL),
489 run_message_loop_(true), 489 run_message_loop_(true),
490 notify_result_(ProcessSingleton::PROCESS_NONE), 490 notify_result_(ProcessSingleton::PROCESS_NONE),
491 is_first_run_(false), 491 do_first_run_tasks_(false),
492 first_run_ui_bypass_(false),
493 local_state_(NULL), 492 local_state_(NULL),
494 restart_last_session_(false) { 493 restart_last_session_(false) {
495 // If we're running tests (ui_task is non-null). 494 // If we're running tests (ui_task is non-null).
496 if (parameters.ui_task) 495 if (parameters.ui_task)
497 browser_defaults::enable_help_app = false; 496 browser_defaults::enable_help_app = false;
498 497
499 // Chrome disallows cookies by default. All code paths that want to use 498 // Chrome disallows cookies by default. All code paths that want to use
500 // cookies need to go through one of Chrome's URLRequestContexts which have 499 // cookies need to go through one of Chrome's URLRequestContexts which have
501 // a ChromeNetworkDelegate attached that selectively allows cookies again. 500 // a ChromeNetworkDelegate attached that selectively allows cookies again.
502 if (!disable_enforcing_cookie_policies_for_tests_) 501 if (!disable_enforcing_cookie_policies_for_tests_)
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
683 // Getting the user data dir can fail if the directory isn't 682 // Getting the user data dir can fail if the directory isn't
684 // creatable, for example; on Windows in code below we bring up a 683 // creatable, for example; on Windows in code below we bring up a
685 // dialog prompting the user to pick a different directory. 684 // dialog prompting the user to pick a different directory.
686 // However, ProcessSingleton needs a real user_data_dir on Mac/Linux, 685 // However, ProcessSingleton needs a real user_data_dir on Mac/Linux,
687 // so it's better to fail here than fail mysteriously elsewhere. 686 // so it's better to fail here than fail mysteriously elsewhere.
688 CHECK(PathService::Get(chrome::DIR_USER_DATA, &user_data_dir_)) 687 CHECK(PathService::Get(chrome::DIR_USER_DATA, &user_data_dir_))
689 << "Must be able to get user data directory!"; 688 << "Must be able to get user data directory!";
690 #endif 689 #endif
691 690
692 // Android's first run is done in Java instead of native. 691 // Android's first run is done in Java instead of native.
692 bool is_first_run = false;
693 #if !defined(OS_ANDROID) 693 #if !defined(OS_ANDROID)
694 process_singleton_.reset(new ProcessSingleton(user_data_dir_)); 694 process_singleton_.reset(new ProcessSingleton(user_data_dir_));
695 // Ensure ProcessSingleton won't process messages too early. It will be 695 // Ensure ProcessSingleton won't process messages too early. It will be
696 // unlocked in PostBrowserStart(). 696 // unlocked in PostBrowserStart().
697 process_singleton_->Lock(NULL); 697 process_singleton_->Lock(NULL);
698 698
699 is_first_run_ = 699 is_first_run =
700 (first_run::IsChromeFirstRun() || 700 (first_run::IsChromeFirstRun() ||
701 parsed_command_line().HasSwitch(switches::kFirstRun)) && 701 parsed_command_line().HasSwitch(switches::kFirstRun)) &&
702 !ProfileManager::IsImportProcess(parsed_command_line()); 702 !ProfileManager::IsImportProcess(parsed_command_line());
703 #endif 703 #endif
704 704
705 FilePath local_state_path; 705 FilePath local_state_path;
706 CHECK(PathService::Get(chrome::FILE_LOCAL_STATE, &local_state_path)); 706 CHECK(PathService::Get(chrome::FILE_LOCAL_STATE, &local_state_path));
707 scoped_refptr<base::SequencedTaskRunner> local_state_task_runner = 707 scoped_refptr<base::SequencedTaskRunner> local_state_task_runner =
708 JsonPrefStore::GetTaskRunnerForFile(local_state_path, 708 JsonPrefStore::GetTaskRunnerForFile(local_state_path,
709 BrowserThread::GetBlockingPool()); 709 BrowserThread::GetBlockingPool());
(...skipping 15 matching lines...) Expand all
725 } 725 }
726 726
727 if (parsed_command_line().HasSwitch(switches::kProfilingOutputFile)) { 727 if (parsed_command_line().HasSwitch(switches::kProfilingOutputFile)) {
728 tracking_objects_.set_output_file_path( 728 tracking_objects_.set_output_file_path(
729 parsed_command_line().GetSwitchValuePath( 729 parsed_command_line().GetSwitchValuePath(
730 switches::kProfilingOutputFile)); 730 switches::kProfilingOutputFile));
731 } 731 }
732 732
733 local_state_ = InitializeLocalState(local_state_task_runner, 733 local_state_ = InitializeLocalState(local_state_task_runner,
734 parsed_command_line(), 734 parsed_command_line(),
735 is_first_run_); 735 is_first_run);
736 736
737 // These members must be initialized before returning from this function. 737 // These members must be initialized before returning from this function.
738 master_prefs_.reset(new first_run::MasterPrefs); 738 master_prefs_.reset(new first_run::MasterPrefs);
739 739
740 #if !defined(OS_ANDROID) 740 #if !defined(OS_ANDROID)
741 // Android doesn't use StartupBrowserCreator. 741 // Android doesn't use StartupBrowserCreator.
742 browser_creator_.reset(new StartupBrowserCreator); 742 browser_creator_.reset(new StartupBrowserCreator);
743 // TODO(yfriedman): Refactor Android to re-use UMABrowsingActivityObserver 743 // TODO(yfriedman): Refactor Android to re-use UMABrowsingActivityObserver
744 chrome::UMABrowsingActivityObserver::Init(); 744 chrome::UMABrowsingActivityObserver::Init();
745 #endif 745 #endif
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
791 791
792 #if defined(TOOLKIT_GTK) 792 #if defined(TOOLKIT_GTK)
793 g_set_application_name(l10n_util::GetStringUTF8(IDS_PRODUCT_NAME).c_str()); 793 g_set_application_name(l10n_util::GetStringUTF8(IDS_PRODUCT_NAME).c_str());
794 #endif 794 #endif
795 795
796 // Android does first run in Java instead of native. 796 // Android does first run in Java instead of native.
797 #if !defined(OS_ANDROID) 797 #if !defined(OS_ANDROID)
798 // On first run, we need to process the predictor preferences before the 798 // On first run, we need to process the predictor preferences before the
799 // browser's profile_manager object is created, but after ResourceBundle 799 // browser's profile_manager object is created, but after ResourceBundle
800 // is initialized. 800 // is initialized.
801 first_run_ui_bypass_ = false; // True to skip first run UI. 801 // True to do first run tasks. This should be prefered to is_first_run
802 if (is_first_run_) { 802 // unless the desire is actually to know whether this is really first run
803 // (i.e. even if --no-first-run is passed).
804 do_first_run_tasks_ = false;
805 if (is_first_run) {
803 first_run::ProcessMasterPreferencesResult pmp_result = 806 first_run::ProcessMasterPreferencesResult pmp_result =
804 first_run::ProcessMasterPreferences(user_data_dir_, 807 first_run::ProcessMasterPreferences(user_data_dir_,
805 master_prefs_.get()); 808 master_prefs_.get());
806 if (pmp_result == first_run::EULA_EXIT_NOW) 809 if (pmp_result == first_run::EULA_EXIT_NOW)
807 return chrome::RESULT_CODE_EULA_REFUSED; 810 return chrome::RESULT_CODE_EULA_REFUSED;
808 811
809 first_run_ui_bypass_ = (pmp_result == first_run::SKIP_FIRST_RUN); 812 do_first_run_tasks_ =
813 (pmp_result != first_run::SKIP_FIRST_RUN_TASKS ||
814 parsed_command_line().HasSwitch(switches::kFirstRun));
810 815
811 AddFirstRunNewTabs(browser_creator_.get(), master_prefs_->new_tabs); 816 AddFirstRunNewTabs(browser_creator_.get(), master_prefs_->new_tabs);
812 817
813 // If we are running in App mode, we do not want to show the importer 818 // If we are running in App mode, we do not want to show the importer
814 // (first run) UI. 819 // (first run) UI.
815 if (!first_run_ui_bypass_ && 820 if (do_first_run_tasks_ &&
816 (parsed_command_line().HasSwitch(switches::kApp) || 821 (parsed_command_line().HasSwitch(switches::kApp) ||
817 parsed_command_line().HasSwitch(switches::kAppId) || 822 parsed_command_line().HasSwitch(switches::kAppId))) {
818 parsed_command_line().HasSwitch(switches::kNoFirstRun))) 823 do_first_run_tasks_ = false;
819 first_run_ui_bypass_ = true; 824 }
820 825
821 // Create Sentinel if no-first-run argument is passed in. 826 // Create Sentinel if no-first-run argument is passed in.
822 if (parsed_command_line().HasSwitch(switches::kNoFirstRun)) 827 if (parsed_command_line().HasSwitch(switches::kNoFirstRun)) {
828 do_first_run_tasks_ = false;
823 first_run::CreateSentinel(); 829 first_run::CreateSentinel();
830 }
824 } 831 }
825 #endif 832 #endif
826 833
827 // TODO(viettrungluu): why don't we run this earlier? 834 // TODO(viettrungluu): why don't we run this earlier?
828 if (!parsed_command_line().HasSwitch(switches::kNoErrorDialogs)) 835 if (!parsed_command_line().HasSwitch(switches::kNoErrorDialogs))
829 WarnAboutMinimumSystemRequirements(); 836 WarnAboutMinimumSystemRequirements();
830 837
831 #if defined(OS_LINUX) || defined(OS_OPENBSD) || defined(OS_MACOSX) 838 #if defined(OS_LINUX) || defined(OS_OPENBSD) || defined(OS_MACOSX)
832 // Set the product channel for crash reports. 839 // Set the product channel for crash reports.
833 child_process_logging::SetChannel( 840 child_process_logging::SetChannel(
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
875 chrome_extra_parts_[i]->PreMainMessageLoopRun(); 882 chrome_extra_parts_[i]->PreMainMessageLoopRun();
876 } 883 }
877 884
878 // PreMainMessageLoopRun calls these extra stages in the following order: 885 // PreMainMessageLoopRun calls these extra stages in the following order:
879 // PreMainMessageLoopRunImpl() 886 // PreMainMessageLoopRunImpl()
880 // ... initial setup, including browser_process_ setup. 887 // ... initial setup, including browser_process_ setup.
881 // PreProfileInit() 888 // PreProfileInit()
882 // ... additional setup, including CreateProfile() 889 // ... additional setup, including CreateProfile()
883 // PostProfileInit() 890 // PostProfileInit()
884 // ... additional setup 891 // ... additional setup
885 // PreInteractiveFirstRunInit()
886 // ... first_run::AutoImport()
887 // PostInteractiveFirstRunInit()
888 // ... additional setup
889 // PreBrowserStart() 892 // PreBrowserStart()
890 // ... browser_creator_->Start (OR parameters().ui_task->Run()) 893 // ... browser_creator_->Start (OR parameters().ui_task->Run())
891 // PostBrowserStart() 894 // PostBrowserStart()
892 895
893 void ChromeBrowserMainParts::PreProfileInit() { 896 void ChromeBrowserMainParts::PreProfileInit() {
894 for (size_t i = 0; i < chrome_extra_parts_.size(); ++i) 897 for (size_t i = 0; i < chrome_extra_parts_.size(); ++i)
895 chrome_extra_parts_[i]->PreProfileInit(); 898 chrome_extra_parts_[i]->PreProfileInit();
896 } 899 }
897 900
898 void ChromeBrowserMainParts::PostProfileInit() { 901 void ChromeBrowserMainParts::PostProfileInit() {
899 LaunchDevToolsHandlerIfNeeded(profile(), parsed_command_line()); 902 LaunchDevToolsHandlerIfNeeded(profile(), parsed_command_line());
900 for (size_t i = 0; i < chrome_extra_parts_.size(); ++i) 903 for (size_t i = 0; i < chrome_extra_parts_.size(); ++i)
901 chrome_extra_parts_[i]->PostProfileInit(); 904 chrome_extra_parts_[i]->PostProfileInit();
902 } 905 }
903 906
904 void ChromeBrowserMainParts::PreInteractiveFirstRunInit() {
905 for (size_t i = 0; i < chrome_extra_parts_.size(); ++i)
906 chrome_extra_parts_[i]->PreInteractiveFirstRunInit();
907 }
908
909 void ChromeBrowserMainParts::PostInteractiveFirstRunInit() {
910 for (size_t i = 0; i < chrome_extra_parts_.size(); ++i)
911 chrome_extra_parts_[i]->PostInteractiveFirstRunInit();
912 }
913
914 void ChromeBrowserMainParts::PreBrowserStart() { 907 void ChromeBrowserMainParts::PreBrowserStart() {
915 for (size_t i = 0; i < chrome_extra_parts_.size(); ++i) 908 for (size_t i = 0; i < chrome_extra_parts_.size(); ++i)
916 chrome_extra_parts_[i]->PreBrowserStart(); 909 chrome_extra_parts_[i]->PreBrowserStart();
917 #if !defined(OS_ANDROID) 910 #if !defined(OS_ANDROID)
918 gpu_util::InstallBrowserMonitor(); 911 gpu_util::InstallBrowserMonitor();
919 #endif 912 #endif
920 } 913 }
921 914
922 void ChromeBrowserMainParts::PostBrowserStart() { 915 void ChromeBrowserMainParts::PostBrowserStart() {
923 #if !defined(OS_ANDROID) 916 #if !defined(OS_ANDROID)
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
1113 ShellIntegration::SetAsDefaultBrowser(); 1106 ShellIntegration::SetAsDefaultBrowser();
1114 } 1107 }
1115 #else 1108 #else
1116 // We don't support retention experiments on Mac or Linux. 1109 // We don't support retention experiments on Mac or Linux.
1117 return content::RESULT_CODE_NORMAL_EXIT; 1110 return content::RESULT_CODE_NORMAL_EXIT;
1118 #endif // defined(OS_WIN) 1111 #endif // defined(OS_WIN)
1119 } 1112 }
1120 1113
1121 // Profile creation ---------------------------------------------------------- 1114 // Profile creation ----------------------------------------------------------
1122 1115
1123 if (is_first_run_) { 1116 if (do_first_run_tasks_) {
1124 // Warn the ProfileManager that an import process will run, possibly 1117 // Warn the ProfileManager that an import process will run, possibly
1125 // locking the WebDataService directory of the next Profile created. 1118 // locking the WebDataService directory of the next Profile created.
1126 browser_process_->profile_manager()->SetWillImport(); 1119 browser_process_->profile_manager()->SetWillImport();
1127 } 1120 }
1128 1121
1129 profile_ = CreateProfile(parameters(), user_data_dir_, parsed_command_line()); 1122 profile_ = CreateProfile(parameters(), user_data_dir_, parsed_command_line());
1130 if (!profile_) 1123 if (!profile_)
1131 return content::RESULT_CODE_NORMAL_EXIT; 1124 return content::RESULT_CODE_NORMAL_EXIT;
1132 1125
1133 #if defined(ENABLE_BACKGROUND) 1126 #if defined(ENABLE_BACKGROUND)
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
1183 // blacklist decisions. 1176 // blacklist decisions.
1184 if (g_browser_process->gl_string_manager()) 1177 if (g_browser_process->gl_string_manager())
1185 g_browser_process->gl_string_manager()->Initialize(); 1178 g_browser_process->gl_string_manager()->Initialize();
1186 1179
1187 #if !defined(OS_ANDROID) 1180 #if !defined(OS_ANDROID)
1188 // Show the First Run UI if this is the first time Chrome has been run on 1181 // Show the First Run UI if this is the first time Chrome has been run on
1189 // this computer, or we're being compelled to do so by a command line flag. 1182 // this computer, or we're being compelled to do so by a command line flag.
1190 // Note that this be done _after_ the PrefService is initialized and all 1183 // Note that this be done _after_ the PrefService is initialized and all
1191 // preferences are registered, since some of the code that the importer 1184 // preferences are registered, since some of the code that the importer
1192 // touches reads preferences. 1185 // touches reads preferences.
1193 if (is_first_run_) { 1186 if (do_first_run_tasks_) {
1194 PreInteractiveFirstRunInit(); 1187 first_run::AutoImport(profile_,
1195 1188 master_prefs_->homepage_defined,
1196 if (!first_run_ui_bypass_ || 1189 master_prefs_->do_import_items,
1197 parsed_command_line().HasSwitch(switches::kFirstRunForceImport)) { 1190 master_prefs_->dont_import_items,
1198 first_run::AutoImport(profile_, 1191 process_singleton_.get());
1199 master_prefs_->homepage_defined, 1192 first_run::DoPostImportTasks(profile_, master_prefs_->make_chrome_default);
Nico 2012/12/21 21:44:22 This makes the windows code not run when --no-firs
gab 2012/12/21 22:10:35 Yes this is intentional (and one of the intents of
Nico 2012/12/21 22:13:05 Yes, that dialog. I'd add the comment here, not i
gab 2012/12/21 22:21:37 Ok added the comment here as well (left it on the
1200 master_prefs_->do_import_items,
1201 master_prefs_->dont_import_items,
1202 process_singleton_.get());
1203 first_run::DoFirstRunTasks(profile_, master_prefs_->make_chrome_default);
1204 #if defined(OS_POSIX) && !defined(OS_CHROMEOS)
1205 // TODO(thakis): Look into moving this POSIX-specific section to
1206 // ChromeBrowserMainPartsPosix::PostInteractiveFirstRunInit().
1207
1208 // On Windows, the download is tagged with enable/disable stats so there
1209 // is no need for this code.
1210
1211 // If stats reporting was turned on by the first run dialog then toggle
1212 // the pref.
1213 if (GoogleUpdateSettings::GetCollectStatsConsent())
1214 local_state_->SetBoolean(prefs::kMetricsReportingEnabled, true);
1215 #endif // OS_POSIX && !OS_CHROMEOS
1216 } // if (!first_run_ui_bypass_)
1217 PostInteractiveFirstRunInit();
1218 1193
1219 browser_process_->profile_manager()->OnImportFinished(profile_); 1194 browser_process_->profile_manager()->OnImportFinished(profile_);
1220 1195
1221 if (!master_prefs_->suppress_first_run_default_browser_prompt) { 1196 if (!master_prefs_->suppress_first_run_default_browser_prompt) {
1222 browser_creator_->set_show_main_browser_window( 1197 browser_creator_->set_show_main_browser_window(
1223 !chrome::ShowFirstRunDefaultBrowserPrompt(profile_)); 1198 !chrome::ShowFirstRunDefaultBrowserPrompt(profile_));
1224 } else { 1199 } else {
1225 browser_creator_->set_is_default_browser_dialog_suppressed(true); 1200 browser_creator_->set_is_default_browser_dialog_suppressed(true);
1226 } 1201 }
1227 } // if (is_first_run_) 1202 } // if (do_first_run_tasks_)
1228 #endif // !defined(OS_ANDROID) 1203 #endif // !defined(OS_ANDROID)
1229 1204
1230 #if defined(OS_WIN) 1205 #if defined(OS_WIN)
1231 // Sets things up so that if we crash from this point on, a dialog will 1206 // Sets things up so that if we crash from this point on, a dialog will
1232 // popup asking the user to restart chrome. It is done this late to avoid 1207 // popup asking the user to restart chrome. It is done this late to avoid
1233 // testing against a bunch of special cases that are taken care early on. 1208 // testing against a bunch of special cases that are taken care early on.
1234 ChromeBrowserMainPartsWin::PrepareRestartOnCrashEnviroment( 1209 ChromeBrowserMainPartsWin::PrepareRestartOnCrashEnviroment(
1235 parsed_command_line()); 1210 parsed_command_line());
1236 1211
1237 // Registers Chrome with the Windows Restart Manager, which will restore the 1212 // Registers Chrome with the Windows Restart Manager, which will restore the
(...skipping 13 matching lines...) Expand all
1251 base::Bind(&NetworkProfileBubble::CheckNetworkProfile, 1226 base::Bind(&NetworkProfileBubble::CheckNetworkProfile,
1252 profile_->GetPath())); 1227 profile_->GetPath()));
1253 } 1228 }
1254 #endif // OS_WIN 1229 #endif // OS_WIN
1255 1230
1256 #if defined(ENABLE_RLZ) && !defined(OS_CHROMEOS) 1231 #if defined(ENABLE_RLZ) && !defined(OS_CHROMEOS)
1257 // Init the RLZ library. This just binds the dll and schedules a task on the 1232 // Init the RLZ library. This just binds the dll and schedules a task on the
1258 // file thread to be run sometime later. If this is the first run we record 1233 // file thread to be run sometime later. If this is the first run we record
1259 // the installation event. 1234 // the installation event.
1260 PrefService* pref_service = profile_->GetPrefs(); 1235 PrefService* pref_service = profile_->GetPrefs();
1261 int ping_delay = is_first_run_ ? master_prefs_->ping_delay : 1236 int ping_delay = do_first_run_tasks_ ? master_prefs_->ping_delay :
1262 pref_service->GetInteger(first_run::GetPingDelayPrefName().c_str()); 1237 pref_service->GetInteger(first_run::GetPingDelayPrefName().c_str());
1263 RLZTracker::InitRlzFromProfileDelayed(profile_, is_first_run_, ping_delay); 1238 RLZTracker::InitRlzFromProfileDelayed(profile_, do_first_run_tasks_,
1239 ping_delay);
1264 #endif // defined(ENABLE_RLZ) && !defined(OS_CHROMEOS) 1240 #endif // defined(ENABLE_RLZ) && !defined(OS_CHROMEOS)
1265 1241
1266 // Configure modules that need access to resources. 1242 // Configure modules that need access to resources.
1267 net::NetModule::SetResourceProvider(chrome_common_net::NetResourceProvider); 1243 net::NetModule::SetResourceProvider(chrome_common_net::NetResourceProvider);
1268 1244
1269 // In unittest mode, this will do nothing. In normal mode, this will create 1245 // In unittest mode, this will do nothing. In normal mode, this will create
1270 // the global IntranetRedirectDetector instance, which will promptly go to 1246 // the global IntranetRedirectDetector instance, which will promptly go to
1271 // sleep for seven seconds (to avoid slowing startup), and wake up afterwards 1247 // sleep for seven seconds (to avoid slowing startup), and wake up afterwards
1272 // to see if it should do anything else. 1248 // to see if it should do anything else.
1273 // 1249 //
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
1349 // ThreadWatcher takes over or when browser is shutdown or when 1325 // ThreadWatcher takes over or when browser is shutdown or when
1350 // startup_watcher_ is deleted. 1326 // startup_watcher_ is deleted.
1351 startup_watcher_->Arm(base::TimeDelta::FromSeconds(300)); 1327 startup_watcher_->Arm(base::TimeDelta::FromSeconds(300));
1352 1328
1353 // Start watching for a hang. 1329 // Start watching for a hang.
1354 MetricsService::LogNeedForCleanShutdown(); 1330 MetricsService::LogNeedForCleanShutdown();
1355 1331
1356 #if defined(OS_WIN) 1332 #if defined(OS_WIN)
1357 // We check this here because if the profile is OTR (chromeos possibility) 1333 // We check this here because if the profile is OTR (chromeos possibility)
1358 // it won't still be accessible after browser is destroyed. 1334 // it won't still be accessible after browser is destroyed.
1359 record_search_engine_ = is_first_run_ && !profile_->IsOffTheRecord(); 1335 record_search_engine_ = do_first_run_tasks_ && !profile_->IsOffTheRecord();
1360 #endif 1336 #endif
1361 1337
1362 // Create the instance of the cloud print proxy service so that it can launch 1338 // Create the instance of the cloud print proxy service so that it can launch
1363 // the service process if needed. This is needed because the service process 1339 // the service process if needed. This is needed because the service process
1364 // might have shutdown because an update was available. 1340 // might have shutdown because an update was available.
1365 // TODO(torne): this should maybe be done with 1341 // TODO(torne): this should maybe be done with
1366 // ProfileKeyedServiceFactory::ServiceIsCreatedWithProfile() instead? 1342 // ProfileKeyedServiceFactory::ServiceIsCreatedWithProfile() instead?
1367 #if !defined(OS_ANDROID) 1343 #if !defined(OS_ANDROID)
1368 CloudPrintProxyServiceFactory::GetForProfile(profile_); 1344 CloudPrintProxyServiceFactory::GetForProfile(profile_);
1369 #endif 1345 #endif
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after
1681 if (base::win::GetVersion() <= base::win::VERSION_XP) 1657 if (base::win::GetVersion() <= base::win::VERSION_XP)
1682 uma_name += "_XP"; 1658 uma_name += "_XP";
1683 1659
1684 uma_name += "_PreRead_"; 1660 uma_name += "_PreRead_";
1685 uma_name += pre_read_percentage; 1661 uma_name += pre_read_percentage;
1686 AddPreReadHistogramTime(uma_name.c_str(), time); 1662 AddPreReadHistogramTime(uma_name.c_str(), time);
1687 } 1663 }
1688 #endif 1664 #endif
1689 #endif 1665 #endif
1690 } 1666 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698