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

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

Issue 208393020: Fix the new First Run sentinel file path determination. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Sync and rebase; re-upload to kick CQ. Created 6 years, 9 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 6b45c2f43b8d2a35765a8e603b3661d84b10c2ad..5239ea632a827d75745e821706607dd3b9ffd301 100644
--- a/chrome/browser/first_run/first_run.cc
+++ b/chrome/browser/first_run/first_run.cc
@@ -47,6 +47,7 @@
#include "chrome/browser/ui/global_error/global_error_service_factory.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/browser/ui/webui/ntp/new_tab_ui.h"
+#include "chrome/common/chrome_constants.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/pref_names.h"
@@ -448,30 +449,6 @@ void ProcessDefaultBrowserPolicy(bool make_chrome_default_for_user) {
}
}
-bool IsFirstRunSentinelPresent() {
- base::FilePath first_run_sentinel;
- // Treat sentinel as being present if the path can't be obtained.
- if (!first_run::internal::GetFirstRunSentinelFilePath(&first_run_sentinel) ||
- base::PathExists(first_run_sentinel)) {
- return true;
- }
- // Sentinel is truly absent if there's no legacy path or legacy doesn't exist.
- base::FilePath legacy_first_run_sentinel;
- if (!first_run::internal::GetLegacyFirstRunSentinelFilePath(
- &legacy_first_run_sentinel) ||
- !base::PathExists(legacy_first_run_sentinel)) {
- return false;
- }
- // Migrate the legacy sentinel to the new location if it was found. This does
- // a copy instead of a move to avoid breaking the developer build case where
- // the First Run sentinel is dropped beside chrome.exe by a build action
- // (i.e., at the legacy path).
- bool migrated = base::CopyFile(legacy_first_run_sentinel, first_run_sentinel);
- DPCHECK(migrated);
- // Sentinel is present regardless of whether or not it was migrated.
- return true;
-}
-
} // namespace
namespace first_run {
@@ -566,11 +543,18 @@ void SetupMasterPrefsFromInstallPrefs(
&out_prefs->suppress_default_browser_prompt_for_version);
}
+bool GetFirstRunSentinelFilePath(base::FilePath* path) {
+ base::FilePath user_data_dir;
+ if (!PathService::Get(chrome::DIR_USER_DATA, &user_data_dir))
+ return false;
+ *path = user_data_dir.Append(chrome::kFirstRunSentinel);
+ return true;
+}
+
bool CreateSentinel() {
base::FilePath first_run_sentinel;
- if (!internal::GetFirstRunSentinelFilePath(&first_run_sentinel))
- return false;
- return base::WriteFile(first_run_sentinel, "", 0) != -1;
+ return GetFirstRunSentinelFilePath(&first_run_sentinel) &&
+ base::WriteFile(first_run_sentinel, "", 0) != -1;
}
// -- Platform-specific functions --
@@ -597,20 +581,15 @@ MasterPrefs::MasterPrefs()
MasterPrefs::~MasterPrefs() {}
bool IsChromeFirstRun() {
- if (internal::first_run_ != internal::FIRST_RUN_UNKNOWN)
- return internal::first_run_ == internal::FIRST_RUN_TRUE;
-
- internal::first_run_ = internal::FIRST_RUN_FALSE;
-
- base::FilePath first_run_sentinel;
- const CommandLine* command_line = CommandLine::ForCurrentProcess();
- if (command_line->HasSwitch(switches::kForceFirstRun)) {
- internal::first_run_ = internal::FIRST_RUN_TRUE;
- } else if (!command_line->HasSwitch(switches::kNoFirstRun) &&
- !IsFirstRunSentinelPresent()) {
- internal::first_run_ = internal::FIRST_RUN_TRUE;
+ if (internal::first_run_ == internal::FIRST_RUN_UNKNOWN) {
+ internal::first_run_ = internal::FIRST_RUN_FALSE;
+ const CommandLine* command_line = CommandLine::ForCurrentProcess();
+ if (command_line->HasSwitch(switches::kForceFirstRun) ||
+ (!command_line->HasSwitch(switches::kNoFirstRun) &&
+ !internal::IsFirstRunSentinelPresent())) {
+ internal::first_run_ = internal::FIRST_RUN_TRUE;
+ }
}
-
return internal::first_run_ == internal::FIRST_RUN_TRUE;
}
@@ -638,9 +617,8 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
bool RemoveSentinel() {
base::FilePath first_run_sentinel;
- if (!internal::GetFirstRunSentinelFilePath(&first_run_sentinel))
- return false;
- return base::DeleteFile(first_run_sentinel, false);
+ return internal::GetFirstRunSentinelFilePath(&first_run_sentinel) &&
+ base::DeleteFile(first_run_sentinel, false);
}
bool SetShowFirstRunBubblePref(FirstRunBubbleOptions show_bubble_option) {

Powered by Google App Engine
This is Rietveld 408576698