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

Unified Diff: chrome/app/chrome_main_delegate.cc

Issue 2487783002: Make Crashpad use the user data dir, rather than always default location (Closed)
Patch Set: . Created 4 years, 1 month 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/app/chrome_main_delegate.cc
diff --git a/chrome/app/chrome_main_delegate.cc b/chrome/app/chrome_main_delegate.cc
index b33dec417a1fe9ab77c86e7868ff781748e5e2e8..fa18c095d455dafdbf7d322c0ef4ba35c9368343 100644
--- a/chrome/app/chrome_main_delegate.cc
+++ b/chrome/app/chrome_main_delegate.cc
@@ -41,6 +41,7 @@
#include "chrome/common/trace_event_args_whitelist.h"
#include "chrome/common/url_constants.h"
#include "chrome/gpu/chrome_content_gpu_client.h"
+#include "chrome/install_static/install_details.h"
#include "chrome/renderer/chrome_content_renderer_client.h"
#include "chrome/utility/chrome_content_utility_client.h"
#include "components/component_updater/component_updater_paths.h"
@@ -359,8 +360,20 @@ struct MainFunction {
};
// Initializes the user data dir. Must be called before InitializeLocalState().
-void InitializeUserDataDir() {
- base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
+void InitializeUserDataDir(base::CommandLine* command_line) {
+#if defined(OS_WIN)
+ base::FilePath user_data_dir(
+ install_static::InstallDetails::Get().user_data_dir());
+ std::wstring invalid_user_data_dir(
+ install_static::InstallDetails::Get().invalid_user_data_dir());
+ if (!invalid_user_data_dir.empty()) {
+ chrome::SetInvalidSpecifiedUserDataDir(
+ base::FilePath(invalid_user_data_dir));
+ command_line->AppendSwitchPath(switches::kUserDataDir, user_data_dir);
+ }
+ CHECK(PathService::OverrideAndCreateIfNeeded(chrome::DIR_USER_DATA,
+ user_data_dir, true, false));
+#else // OS_WIN
base::FilePath user_data_dir =
command_line->GetSwitchValuePath(switches::kUserDataDir);
std::string process_type =
@@ -378,15 +391,10 @@ void InitializeUserDataDir() {
user_data_dir = base::FilePath::FromUTF8Unsafe(user_data_dir_string);
}
}
-#endif
-#if defined(OS_MACOSX) || defined(OS_WIN)
+#endif // OS_LINUX
+#if defined(OS_MACOSX)
policy::path_parser::CheckUserDataDirPolicy(&user_data_dir);
-#endif
-
- // On Windows, trailing separators leave Chrome in a bad state.
- // See crbug.com/464616.
- if (user_data_dir.EndsWithSeparator())
- user_data_dir = user_data_dir.StripTrailingSeparators();
+#endif // OS_MAC
const bool specified_directory_was_invalid = !user_data_dir.empty() &&
!PathService::OverrideAndCreateIfNeeded(chrome::DIR_USER_DATA,
@@ -419,6 +427,7 @@ void InitializeUserDataDir() {
// child or service processes will attempt to use the invalid directory.
if (specified_directory_was_invalid)
command_line->AppendSwitchPath(switches::kUserDataDir, user_data_dir);
+#endif // OS_WIN
}
#if !defined(OS_ANDROID)
@@ -748,7 +757,7 @@ void ChromeMainDelegate::PreSandboxStartup() {
// Initialize the user data dir for any process type that needs it.
if (chrome::ProcessNeedsProfileDir(process_type)) {
- InitializeUserDataDir();
+ InitializeUserDataDir(base::CommandLine::ForCurrentProcess());
#if defined(OS_WIN) && !defined(CHROME_MULTIPLE_DLL_CHILD)
if (downgrade::IsMSIInstall()) {
downgrade::MoveUserDataForFirstRunAfterDowngrade();

Powered by Google App Engine
This is Rietveld 408576698