summaryrefslogtreecommitdiffstats
path: root/chrome/common/chrome_paths_linux.cc
diff options
context:
space:
mode:
authorestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-02-28 01:49:55 +0000
committerestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-02-28 01:49:55 +0000
commitc1a9f8d4c169b2eb6b32dc50d20b05f69d73237e (patch)
treed67d12634f2793e44f48d5f6b660d9f04b081978 /chrome/common/chrome_paths_linux.cc
parent04abd506d6a0ae3c5130bf1e026eadbe3b24ccbf (diff)
downloadchromium_src-c1a9f8d4c169b2eb6b32dc50d20b05f69d73237e.zip
chromium_src-c1a9f8d4c169b2eb6b32dc50d20b05f69d73237e.tar.gz
chromium_src-c1a9f8d4c169b2eb6b32dc50d20b05f69d73237e.tar.bz2
Instead of appending "Downloads" to the user document directory, let each platform specify its own downloads directory.
On mac this is unimplemented. On windows it remains the user document directory + "\Downloads\", and on linux we attempt to follow their XDG setting, but fall back to ~/Downloads if they have an unsafe value in their XDG setting. Review URL: http://codereview.chromium.org/28167 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10669 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/common/chrome_paths_linux.cc')
-rw-r--r--chrome/common/chrome_paths_linux.cc20
1 files changed, 20 insertions, 0 deletions
diff --git a/chrome/common/chrome_paths_linux.cc b/chrome/common/chrome_paths_linux.cc
index 93556f1..8ffd9e0 100644
--- a/chrome/common/chrome_paths_linux.cc
+++ b/chrome/common/chrome_paths_linux.cc
@@ -78,6 +78,26 @@ bool GetUserDocumentsDirectory(FilePath* result) {
return true;
}
+// We respect the user's preferred download location, unless it is
+// ~ or their desktop directory, in which case we default to ~/Downloads.
+bool GetUserDownloadsDirectory(FilePath* result) {
+ *result = GetXDGUserDirectory("DOWNLOAD", "Downloads");
+
+ FilePath home = GetHomeDir();
+ if (*result == home) {
+ *result = home.Append("Downloads");
+ return true;
+ }
+
+ FilePath desktop;
+ GetUserDesktop(&desktop);
+ if (*result == desktop) {
+ *result = home.Append("Downloads");
+ }
+
+ return true;
+}
+
bool GetUserDesktop(FilePath* result) {
*result = GetXDGUserDirectory("DESKTOP", "Desktop");
return true;