Index: chrome/common/chrome_paths_linux.cc |
diff --git a/chrome/common/chrome_paths_linux.cc b/chrome/common/chrome_paths_linux.cc |
index 42c6ae7e03e103cf1088f387a307fe202043a303..a7fdb07913125470c18dbd63cc0d0da14e104f61 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( |