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

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

Issue 12096114: Extract locking behaviour from ProcessSingleton. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Restrict chrome_process_singleton_unittest to WIN for now. Created 7 years, 8 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
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 730 matching lines...) Expand 10 before | Expand all | Expand 10 after
741 int ChromeBrowserMainParts::PreCreateThreadsImpl() { 741 int ChromeBrowserMainParts::PreCreateThreadsImpl() {
742 run_message_loop_ = false; 742 run_message_loop_ = false;
743 user_data_dir_ = chrome::GetUserDataDir(parameters()); 743 user_data_dir_ = chrome::GetUserDataDir(parameters());
744 744
745 // Whether this is First Run. |do_first_run_tasks_| should be prefered to this 745 // Whether this is First Run. |do_first_run_tasks_| should be prefered to this
746 // unless the desire is actually to know whether this is really First Run 746 // unless the desire is actually to know whether this is really First Run
747 // (i.e., even if --no-first-run is passed). 747 // (i.e., even if --no-first-run is passed).
748 bool is_first_run = false; 748 bool is_first_run = false;
749 // Android's first run is done in Java instead of native. 749 // Android's first run is done in Java instead of native.
750 #if !defined(OS_ANDROID) 750 #if !defined(OS_ANDROID)
751 751 process_singleton_.reset(new ChromeProcessSingleton(
752 process_singleton_.reset(new ProcessSingleton(
753 user_data_dir_, base::Bind(&ProcessSingletonNotificationCallback))); 752 user_data_dir_, base::Bind(&ProcessSingletonNotificationCallback)));
754 // Ensure ProcessSingleton won't process messages too early. It will be
755 // unlocked in PostBrowserStart().
756 process_singleton_->Lock(NULL);
757 753
758 bool force_first_run = 754 bool force_first_run =
759 parsed_command_line().HasSwitch(switches::kForceFirstRun); 755 parsed_command_line().HasSwitch(switches::kForceFirstRun);
760 bool force_skip_first_run_tasks = 756 bool force_skip_first_run_tasks =
761 (!force_first_run && 757 (!force_first_run &&
762 parsed_command_line().HasSwitch(switches::kNoFirstRun)); 758 parsed_command_line().HasSwitch(switches::kNoFirstRun));
763 759
764 is_first_run = 760 is_first_run =
765 (force_first_run || first_run::IsChromeFirstRun()) && 761 (force_first_run || first_run::IsChromeFirstRun()) &&
766 !ProfileManager::IsImportProcess(parsed_command_line()); 762 !ProfileManager::IsImportProcess(parsed_command_line());
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after
1167 std::string try_chrome = 1163 std::string try_chrome =
1168 parsed_command_line().GetSwitchValueASCII(switches::kTryChromeAgain); 1164 parsed_command_line().GetSwitchValueASCII(switches::kTryChromeAgain);
1169 if (!try_chrome.empty()) { 1165 if (!try_chrome.empty()) {
1170 #if defined(OS_WIN) 1166 #if defined(OS_WIN)
1171 // Setup.exe has determined that we need to run a retention experiment 1167 // Setup.exe has determined that we need to run a retention experiment
1172 // and has lauched chrome to show the experiment UI. It is guaranteed that 1168 // and has lauched chrome to show the experiment UI. It is guaranteed that
1173 // no other Chrome is currently running as the process singleton was 1169 // no other Chrome is currently running as the process singleton was
1174 // sucessfully grabbed above. 1170 // sucessfully grabbed above.
1175 int try_chrome_int; 1171 int try_chrome_int;
1176 base::StringToInt(try_chrome, &try_chrome_int); 1172 base::StringToInt(try_chrome, &try_chrome_int);
1177 TryChromeDialogView::Result answer = 1173 TryChromeDialogView::Result answer = TryChromeDialogView::Show(
1178 TryChromeDialogView::Show(try_chrome_int, process_singleton_.get()); 1174 try_chrome_int,
1175 base::Bind(&ChromeProcessSingleton::SetActiveModalDialog,
1176 base::Unretained(process_singleton_.get())));
1179 if (answer == TryChromeDialogView::NOT_NOW) 1177 if (answer == TryChromeDialogView::NOT_NOW)
1180 return chrome::RESULT_CODE_NORMAL_EXIT_CANCEL; 1178 return chrome::RESULT_CODE_NORMAL_EXIT_CANCEL;
1181 if (answer == TryChromeDialogView::UNINSTALL_CHROME) 1179 if (answer == TryChromeDialogView::UNINSTALL_CHROME)
1182 return chrome::RESULT_CODE_NORMAL_EXIT_EXP2; 1180 return chrome::RESULT_CODE_NORMAL_EXIT_EXP2;
1183 // At this point the user is willing to try chrome again. 1181 // At this point the user is willing to try chrome again.
1184 if (answer == TryChromeDialogView::TRY_CHROME_AS_DEFAULT) { 1182 if (answer == TryChromeDialogView::TRY_CHROME_AS_DEFAULT) {
1185 // Only set in the unattended case, the interactive case is Windows 8. 1183 // Only set in the unattended case, the interactive case is Windows 8.
1186 if (ShellIntegration::CanSetAsDefaultBrowser() == 1184 if (ShellIntegration::CanSetAsDefaultBrowser() ==
1187 ShellIntegration::SET_DEFAULT_UNATTENDED) 1185 ShellIntegration::SET_DEFAULT_UNATTENDED)
1188 ShellIntegration::SetAsDefaultBrowser(); 1186 ShellIntegration::SetAsDefaultBrowser();
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
1270 #if !defined(OS_ANDROID) 1268 #if !defined(OS_ANDROID)
1271 // Show the First Run UI if this is the first time Chrome has been run on 1269 // Show the First Run UI if this is the first time Chrome has been run on
1272 // this computer, or we're being compelled to do so by a command line flag. 1270 // this computer, or we're being compelled to do so by a command line flag.
1273 // Note that this be done _after_ the PrefService is initialized and all 1271 // Note that this be done _after_ the PrefService is initialized and all
1274 // preferences are registered, since some of the code that the importer 1272 // preferences are registered, since some of the code that the importer
1275 // touches reads preferences. 1273 // touches reads preferences.
1276 if (do_first_run_tasks_) { 1274 if (do_first_run_tasks_) {
1277 first_run::AutoImport(profile_, 1275 first_run::AutoImport(profile_,
1278 master_prefs_->homepage_defined, 1276 master_prefs_->homepage_defined,
1279 master_prefs_->do_import_items, 1277 master_prefs_->do_import_items,
1280 master_prefs_->dont_import_items, 1278 master_prefs_->dont_import_items);
1281 process_singleton_.get());
1282 // Note: this can pop the first run consent dialog on linux. 1279 // Note: this can pop the first run consent dialog on linux.
1283 first_run::DoPostImportTasks(profile_, master_prefs_->make_chrome_default); 1280 first_run::DoPostImportTasks(profile_, master_prefs_->make_chrome_default);
1284 1281
1285 browser_process_->profile_manager()->OnImportFinished(profile_); 1282 browser_process_->profile_manager()->OnImportFinished(profile_);
1286 1283
1287 if (!master_prefs_->suppress_first_run_default_browser_prompt) { 1284 if (!master_prefs_->suppress_first_run_default_browser_prompt) {
1288 browser_creator_->set_show_main_browser_window( 1285 browser_creator_->set_show_main_browser_window(
1289 !chrome::ShowFirstRunDefaultBrowserPrompt(profile_)); 1286 !chrome::ShowFirstRunDefaultBrowserPrompt(profile_));
1290 } else { 1287 } else {
1291 browser_creator_->set_is_default_browser_dialog_suppressed(true); 1288 browser_creator_->set_is_default_browser_dialog_suppressed(true);
(...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after
1735 if (base::win::GetVersion() <= base::win::VERSION_XP) 1732 if (base::win::GetVersion() <= base::win::VERSION_XP)
1736 uma_name += "_XP"; 1733 uma_name += "_XP";
1737 1734
1738 uma_name += "_PreRead_"; 1735 uma_name += "_PreRead_";
1739 uma_name += pre_read_percentage; 1736 uma_name += pre_read_percentage;
1740 AddPreReadHistogramTime(uma_name.c_str(), time); 1737 AddPreReadHistogramTime(uma_name.c_str(), time);
1741 } 1738 }
1742 #endif 1739 #endif
1743 #endif 1740 #endif
1744 } 1741 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698