diff options
Diffstat (limited to 'chrome/common/chrome_paths_linux.cc')
-rw-r--r-- | chrome/common/chrome_paths_linux.cc | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/chrome/common/chrome_paths_linux.cc b/chrome/common/chrome_paths_linux.cc index 42c6ae7..a7fdb07 100644 --- a/chrome/common/chrome_paths_linux.cc +++ b/chrome/common/chrome_paths_linux.cc @@ -6,6 +6,7 @@ #include "base/environment.h" #include "base/file_util.h" +#include "base/path_service.h" #include "base/scoped_ptr.h" #include "base/nix/xdg_util.h" @@ -28,6 +29,32 @@ bool GetDefaultUserDataDirectory(FilePath* result) { return true; } +void GetUserCacheDirectory(const FilePath& profile_dir, FilePath* result) { + // See http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html + // for a spec on where cache files go. Our rule is: + // - if the user-data-dir in the standard place, + // use same subdirectory of the cache directory. + // (this maps ~/.config/google-chrome to ~/.cache/google-chrome as well + // as the same thing for ~/.config/chromium) + // - otherwise, use the profile dir directly. + + // Default value in cases where any of the following fails. + *result = profile_dir; + + scoped_ptr<base::Environment> env(base::Environment::Create()); + + FilePath cache_dir; + if (!PathService::Get(base::DIR_CACHE, &cache_dir)) + return; + FilePath config_dir( + base::nix::GetXDGDirectory(env.get(), "XDG_CONFIG_HOME", ".config")); + + if (!config_dir.AppendRelativePath(profile_dir, &cache_dir)) + return; + + *result = cache_dir; +} + bool GetChromeFrameUserDataDirectory(FilePath* result) { scoped_ptr<base::Environment> env(base::Environment::Create()); FilePath config_dir( |