summaryrefslogtreecommitdiffstats
path: root/base
diff options
context:
space:
mode:
Diffstat (limited to 'base')
-rw-r--r--base/file_util.h1
-rw-r--r--base/file_util_posix.cc8
-rw-r--r--base/nix/xdg_util.cc13
3 files changed, 16 insertions, 6 deletions
diff --git a/base/file_util.h b/base/file_util.h
index ca7bf626..9c9072f 100644
--- a/base/file_util.h
+++ b/base/file_util.h
@@ -218,6 +218,7 @@ BASE_EXPORT bool GetTempDir(FilePath* path);
//
// You should not generally call this directly. Instead use DIR_HOME with the
// path service which will use this function but cache the value.
+// Path service may also override DIR_HOME.
BASE_EXPORT FilePath GetHomeDir();
// Creates a temporary file. The full path is placed in |path|, and the
diff --git a/base/file_util_posix.cc b/base/file_util_posix.cc
index 9270e8a..e8dec94 100644
--- a/base/file_util_posix.cc
+++ b/base/file_util_posix.cc
@@ -458,8 +458,12 @@ bool GetTempDir(FilePath* path) {
#if !defined(OS_MACOSX) // Mac implementation is in file_util_mac.mm.
FilePath GetHomeDir() {
#if defined(OS_CHROMEOS)
- if (SysInfo::IsRunningOnChromeOS())
- return FilePath("/home/chronos/user");
+ if (SysInfo::IsRunningOnChromeOS()) {
+ // On Chrome OS chrome::DIR_USER_DATA is overriden with a primary user
+ // homedir once it becomes available.
+ NOTREACHED() << "Called GetHomeDir() without base::DIR_HOME override";
+ return FilePath("/");
+ }
#endif
const char* home_dir = getenv("HOME");
diff --git a/base/nix/xdg_util.cc b/base/nix/xdg_util.cc
index 4c1510f..4086a3d 100644
--- a/base/nix/xdg_util.cc
+++ b/base/nix/xdg_util.cc
@@ -6,9 +6,11 @@
#include <string>
+#include "base/base_paths.h"
#include "base/environment.h"
#include "base/file_util.h"
#include "base/files/file_path.h"
+#include "base/path_service.h"
#include "base/third_party/xdg_user_dirs/xdg_user_dir_lookup.h"
namespace {
@@ -28,10 +30,12 @@ FilePath GetXDGDirectory(Environment* env, const char* env_name,
const char* fallback_dir) {
FilePath path;
std::string env_value;
- if (env->GetVar(env_name, &env_value) && !env_value.empty())
+ if (env->GetVar(env_name, &env_value) && !env_value.empty()) {
path = FilePath(env_value);
- else
- path = GetHomeDir().Append(fallback_dir);
+ } else {
+ PathService::Get(base::DIR_HOME, &path);
+ path = path.Append(fallback_dir);
+ }
return path.StripTrailingSeparators();
}
@@ -42,7 +46,8 @@ FilePath GetXDGUserDirectory(const char* dir_name, const char* fallback_dir) {
path = FilePath(xdg_dir);
free(xdg_dir);
} else {
- path = GetHomeDir().Append(fallback_dir);
+ PathService::Get(base::DIR_HOME, &path);
+ path = path.Append(fallback_dir);
}
return path.StripTrailingSeparators();
}