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

Unified Diff: chrome/browser/first_run/first_run.cc

Issue 2164033002: Refactoring startup logic for upcoming FRE changes (non-Win 10). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Attempting submission Created 4 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/first_run/first_run.cc
diff --git a/chrome/browser/first_run/first_run.cc b/chrome/browser/first_run/first_run.cc
index 5d94bcb06a066ae31340b4e95583c13afc7a3744..629e9520d963d9776cbf44c6c0f8026a6b43ab4c 100644
--- a/chrome/browser/first_run/first_run.cc
+++ b/chrome/browser/first_run/first_run.cc
@@ -89,6 +89,11 @@ uint16_t g_auto_import_state = first_run::AUTO_IMPORT_NONE;
bool g_should_show_welcome_page = false;
bool g_should_do_autofill_personal_data_manager_first_run = false;
+// Indicates whether this is first run. Populated when IsChromeFirstRun
+// is invoked, then used as a cache on subsequent calls.
+first_run::internal::FirstRunState g_first_run =
+ first_run::internal::FIRST_RUN_UNKNOWN;
+
// This class acts as an observer for the ImporterProgressObserver::ImportEnded
// callback. When the import process is started, certain errors may cause
// ImportEnded() to be called synchronously, but the typical case is that
@@ -495,8 +500,6 @@ void ProcessDefaultBrowserPolicy(bool make_chrome_default_for_user) {
namespace first_run {
namespace internal {
-FirstRunState g_first_run = FIRST_RUN_UNKNOWN;
-
void SetupMasterPrefsFromInstallPrefs(
const installer::MasterPreferences& install_prefs,
MasterPrefs* out_prefs) {
@@ -617,6 +620,14 @@ bool IsOrganicFirstRun() {
}
#endif
+FirstRunState DetermineFirstRunState(bool has_sentinel,
+ bool force_first_run,
+ bool no_first_run) {
+ return (force_first_run || (!has_sentinel && !no_first_run))
+ ? FIRST_RUN_TRUE
+ : FIRST_RUN_FALSE;
+}
+
} // namespace internal
MasterPrefs::MasterPrefs()
@@ -632,17 +643,15 @@ MasterPrefs::MasterPrefs()
MasterPrefs::~MasterPrefs() {}
bool IsChromeFirstRun() {
- if (internal::g_first_run == internal::FIRST_RUN_UNKNOWN) {
- internal::g_first_run = internal::FIRST_RUN_FALSE;
+ if (g_first_run == internal::FIRST_RUN_UNKNOWN) {
const base::CommandLine* command_line =
base::CommandLine::ForCurrentProcess();
- if (command_line->HasSwitch(switches::kForceFirstRun) ||
- (!command_line->HasSwitch(switches::kNoFirstRun) &&
- !internal::IsFirstRunSentinelPresent())) {
- internal::g_first_run = internal::FIRST_RUN_TRUE;
- }
+ g_first_run = internal::DetermineFirstRunState(
+ internal::IsFirstRunSentinelPresent(),
+ command_line->HasSwitch(switches::kForceFirstRun),
+ command_line->HasSwitch(switches::kNoFirstRun));
}
- return internal::g_first_run == internal::FIRST_RUN_TRUE;
+ return g_first_run == internal::FIRST_RUN_TRUE;
}
#if defined(OS_MACOSX)

Powered by Google App Engine
This is Rietveld 408576698