#include "atom/browser/api/atom_api_cookies.h"
#include "atom/browser/atom_browser_context.h"
#include "atom/common/native_mate_converters/gurl_converter.h"
-#include "base/thread_task_runner_handle.h"
+#include "base/files/file_path.h"
+#include "base/prefs/pref_service.h"
#include "base/strings/string_util.h"
+#include "base/thread_task_runner_handle.h"
+#include "chrome/common/pref_names.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/storage_partition.h"
#include "native_mate/callback.h"
base::Bind(&SetProxyInIO, base::Unretained(getter), proxy, callback));
}
+void Session::SetDownloadPath(const std::string& path) {
+ browser_context_->prefs()->SetFilePath(prefs::kDownloadDefaultDirectory,
+ base::FilePath(path));
+}
+
v8::Local<v8::Value> Session::Cookies(v8::Isolate* isolate) {
if (cookies_.IsEmpty()) {
auto handle = atom::api::Cookies::Create(isolate, browser_context_);
.SetMethod("clearCache", &Session::ClearCache)
.SetMethod("clearStorageData", &Session::ClearStorageData)
.SetMethod("setProxy", &Session::SetProxy)
+ .SetMethod("setDownloadPath", &Session::SetDownloadPath)
.SetProperty("cookies", &Session::Cookies);
}
void ClearCache(const net::CompletionCallback& callback);
void ClearStorageData(mate::Arguments* args);
void SetProxy(const std::string& proxy, const base::Closure& callback);
+ void SetDownloadPath(const std::string& path);
v8::Local<v8::Value> Cookies(v8::Isolate* isolate);
v8::Global<v8::Value> cookies_;
void AtomBrowserContext::RegisterPrefs(PrefRegistrySimple* pref_registry) {
pref_registry->RegisterFilePathPref(prefs::kSelectFileLastDirectory,
base::FilePath());
+ pref_registry->RegisterFilePathPref(prefs::kDownloadDefaultDirectory,
+ base::FilePath());
}
} // namespace atom
#include <string>
+#include "atom/browser/atom_browser_context.h"
#include "atom/browser/native_window.h"
#include "atom/browser/ui/file_dialog.h"
#include "base/bind.h"
#include "base/files/file_util.h"
+#include "base/prefs/pref_service.h"
+#include "chrome/common/pref_names.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/download_manager.h"
return;
}
+ // Remeber the last selected download directory.
+ AtomBrowserContext* browser_context = static_cast<AtomBrowserContext*>(
+ download_manager_->GetBrowserContext());
+ browser_context->prefs()->SetFilePath(prefs::kDownloadDefaultDirectory,
+ path.DirName());
callback.Run(path,
content::DownloadItem::TARGET_DISPOSITION_PROMPT,
content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, path);
const content::DownloadTargetCallback& callback) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ AtomBrowserContext* browser_context = static_cast<AtomBrowserContext*>(
+ download_manager_->GetBrowserContext());
+ default_download_path_ = browser_context->prefs()->GetFilePath(
+ prefs::kDownloadDefaultDirectory);
+ // If users didn't set download path, use 'Downloads' directory by default.
if (default_download_path_.empty()) {
auto path = download_manager_->GetBrowserContext()->GetPath();
default_download_path_ = path.Append(FILE_PATH_LITERAL("Downloads"));
namespace prefs {
const char kSelectFileLastDirectory[] = "selectfile.last_directory";
+const char kDownloadDefaultDirectory[] = "download.default_directory";
} // namespace prefs
namespace prefs {
extern const char kSelectFileLastDirectory[];
+extern const char kDownloadDefaultDirectory[];
} // namespace prefs