summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornoms <noms@chromium.org>2015-03-27 20:35:01 -0700
committerCommit bot <commit-bot@chromium.org>2015-03-28 03:35:31 +0000
commitc527ac73268c6f603dfa6aa41ee9a0c3d79d5095 (patch)
tree65d804a493b8b06df446bc2a66fe08c7df46185d
parenta357285fdc24b17ac991cddc6ec902cb5d626fde (diff)
downloadchromium_src-c527ac73268c6f603dfa6aa41ee9a0c3d79d5095.zip
chromium_src-c527ac73268c6f603dfa6aa41ee9a0c3d79d5095.tar.gz
chromium_src-c527ac73268c6f603dfa6aa41ee9a0c3d79d5095.tar.bz2
If possible, use the PathService instead of the --user-data-dir flag directly
Some classes still using it directly are: - cloud_print_proxy_process_browsertest.cc (it's not a browser test so it doesn't call ChromeMainDelegate::PreSandboxStartup(), which sets up the PathService to know about the user-data-dir - in_process_browser_test.cc, which needs to set up the user-data-dir directory before PreSandboxStartup() is called - diagnostics_model and diagnostics_controller, which are used in BasicStartupComplete(), which is called before PreSandboxStartup() where the PathService is set up - shell_integration_win.cc which has a function that's used in unit tests, which don't call PreSandboxStartup() - chrome/browser/shell_integration.cc is used differently on linux than on other platforms, and on the former a desktop app shortcut uses a different command line that that of Chrome's - cloud_print/service/*, since it seems to be its own thing, and have a separate user_data_dir BUG=464616 Review URL: https://codereview.chromium.org/1010923002 Cr-Commit-Position: refs/heads/master@{#322697}
-rw-r--r--chrome/app/chrome_main_delegate.cc4
-rw-r--r--chrome/installer/util/auto_launch_util.cc11
-rw-r--r--chrome/service/cloud_print/cloud_print_proxy.cc2
3 files changed, 12 insertions, 5 deletions
diff --git a/chrome/app/chrome_main_delegate.cc b/chrome/app/chrome_main_delegate.cc
index e25ff4f..c9578a9 100644
--- a/chrome/app/chrome_main_delegate.cc
+++ b/chrome/app/chrome_main_delegate.cc
@@ -345,10 +345,8 @@ void InitializeUserDataDir() {
// On Windows, trailing separators leave Chrome in a bad state.
// See crbug.com/464616.
- if (user_data_dir.EndsWithSeparator()) {
+ if (user_data_dir.EndsWithSeparator())
user_data_dir = user_data_dir.StripTrailingSeparators();
- command_line->AppendSwitchPath(switches::kUserDataDir, user_data_dir);
- }
const bool specified_directory_was_invalid = !user_data_dir.empty() &&
!PathService::OverrideAndCreateIfNeeded(chrome::DIR_USER_DATA,
diff --git a/chrome/installer/util/auto_launch_util.cc b/chrome/installer/util/auto_launch_util.cc
index 08be65d..5e797ba 100644
--- a/chrome/installer/util/auto_launch_util.cc
+++ b/chrome/installer/util/auto_launch_util.cc
@@ -185,12 +185,19 @@ void SetWillLaunchAtLogin(const base::FilePath& application_path,
const base::CommandLine& command_line =
*base::CommandLine::ForCurrentProcess();
+
+ // Propagate --user-data-dir if it was specified on the command line.
+ // Retrieve the value from the PathService since some sanitation may have
+ // taken place. There is no need to add it to the command line in the
+ // event that the dir was overridden by Group Policy since the GP override
+ // will be in force when Chrome is launched.
if (command_line.HasSwitch(switches::kUserDataDir)) {
cmd_line += ASCIIToUTF16(" --");
cmd_line += ASCIIToUTF16(switches::kUserDataDir);
cmd_line += ASCIIToUTF16("=\"");
- cmd_line +=
- command_line.GetSwitchValuePath(switches::kUserDataDir).value();
+ base::FilePath user_data_dir;
+ PathService::Get(chrome::DIR_USER_DATA, &user_data_dir);
+ cmd_line += user_data_dir.value();
cmd_line += ASCIIToUTF16("\"");
}
diff --git a/chrome/service/cloud_print/cloud_print_proxy.cc b/chrome/service/cloud_print/cloud_print_proxy.cc
index a98fecb..8cfca63 100644
--- a/chrome/service/cloud_print/cloud_print_proxy.cc
+++ b/chrome/service/cloud_print/cloud_print_proxy.cc
@@ -34,6 +34,8 @@ void LaunchBrowserProcessWithSwitch(const std::string& switch_string) {
}
base::CommandLine cmd_line(exe_path);
+ // Propagate an explicit --user-data-dir value if one was given. The new
+ // browser process will pick up a policy override during initialization.
const base::CommandLine& process_command_line =
*base::CommandLine::ForCurrentProcess();
base::FilePath user_data_dir =