retrieve download directory using on linux
authorRobo <hop2deep@gmail.com>
Fri, 13 Nov 2015 02:14:05 +0000 (07:44 +0530)
committerRobo <hop2deep@gmail.com>
Fri, 13 Nov 2015 02:14:05 +0000 (07:44 +0530)
atom/browser/api/atom_api_app.cc
docs/api/app.md

index 1c5c2c0..d6d961a 100644 (file)
@@ -22,6 +22,7 @@
 #include "base/command_line.h"
 #include "base/environment.h"
 #include "base/files/file_path.h"
+#include "base/nix/xdg_util.h"
 #include "base/path_service.h"
 #include "brightray/browser/brightray_paths.h"
 #include "content/public/browser/client_certificate_delegate.h"
@@ -155,6 +156,17 @@ void PassLoginInformation(scoped_refptr<LoginHandler> login_handler,
     login_handler->CancelAuth();
 }
 
+bool GetUserDownloadsDirectory(base::FilePath* path) {
+#if defined(OS_LINUX)
+  *path = base::nix::GetXDGUserDirectory("DOWNLOAD", "Downloads");
+  return true;
+#elif defined(OS_MACOSX)
+  return false;
+#elif defined(OS_WIN)
+  return false;
+#endif
+}
+
 }  // namespace
 
 App::App() {
@@ -272,8 +284,11 @@ base::FilePath App::GetPath(mate::Arguments* args, const std::string& name) {
   int key = GetPathConstant(name);
   if (key >= 0)
     succeed = PathService::Get(key, &path);
-  if (!succeed)
+  if (!succeed) {
+    if (name == "downloads" && GetUserDownloadsDirectory(&path))
+      return path;
     args->ThrowError("Failed to get path");
+  }
   return path;
 }
 
index fdb9f99..4282b2d 100644 (file)
@@ -241,6 +241,7 @@ You can request the following paths by the name:
 * `userDesktop` The current user's Desktop directory.
 * `exe` The current executable file.
 * `module` The `libchromiumcontent` library.
+* `downloads` User's download directory.
 
 ### `app.setPath(name, path)`