Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(228)

Unified Diff: components/filesystem/file_system_app.cc

Issue 1718123004: mojo filesystem: Further clean ups. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: jam comments Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/filesystem/file_system_app.h ('k') | components/filesystem/file_system_impl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/filesystem/file_system_app.cc
diff --git a/components/filesystem/file_system_app.cc b/components/filesystem/file_system_app.cc
index d5d577aa18555cabe8274ab8c12a23303132a4c9..988d4eca3fc230667de28f19a85f5eeb4668b012 100644
--- a/components/filesystem/file_system_app.cc
+++ b/components/filesystem/file_system_app.cc
@@ -4,11 +4,35 @@
#include "components/filesystem/file_system_app.h"
+#include "base/command_line.h"
+#include "base/files/file_path.h"
+#include "base/files/file_util.h"
#include "mojo/shell/public/cpp/connection.h"
#include "mojo/shell/public/cpp/shell.h"
+#if defined(OS_WIN)
+#include "base/base_paths_win.h"
+#include "base/path_service.h"
+#include "base/strings/utf_string_conversions.h"
+#elif defined(OS_ANDROID)
+#include "base/base_paths_android.h"
+#include "base/path_service.h"
+#elif defined(OS_LINUX)
+#include "base/environment.h"
+#include "base/nix/xdg_util.h"
+#elif defined(OS_MACOSX)
+#include "base/base_paths_mac.h"
+#include "base/path_service.h"
+#endif
+
namespace filesystem {
+namespace {
+
+const char kUserDataDir[] = "user-data-dir";
+
+} // namespace filesystem
+
FileSystemApp::FileSystemApp()
: shell_(nullptr), lock_table_(new LockTable) {}
@@ -28,7 +52,43 @@ bool FileSystemApp::AcceptConnection(mojo::Connection* connection) {
// |InterfaceFactory<Files>| implementation:
void FileSystemApp::Create(mojo::Connection* connection,
mojo::InterfaceRequest<FileSystem> request) {
- new FileSystemImpl(connection, std::move(request), lock_table_.get());
+ new FileSystemImpl(connection, std::move(request), GetUserDataDir(),
+ lock_table_.get());
+}
+
+//static
+base::FilePath FileSystemApp::GetUserDataDir() {
+ base::FilePath path;
+
+ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
+ if (command_line->HasSwitch(kUserDataDir)) {
+ path = command_line->GetSwitchValuePath(kUserDataDir);
+ } else {
+#if defined(OS_WIN)
+ CHECK(PathService::Get(base::DIR_LOCAL_APP_DATA, &path));
+ path = path.Append(FILE_PATH_LITERAL("mandoline"));
+#elif defined(OS_LINUX)
+ scoped_ptr<base::Environment> env(base::Environment::Create());
+ base::FilePath config_dir(
+ base::nix::GetXDGDirectory(env.get(),
+ base::nix::kXdgConfigHomeEnvVar,
+ base::nix::kDotConfigDir));
+ path = config_dir.Append("mandoline");
+#elif defined(OS_MACOSX)
+ CHECK(PathService::Get(base::DIR_APP_DATA, &path));
+ path = path.Append("Mandoline Shell");
+#elif defined(OS_ANDROID)
+ CHECK(PathService::Get(base::DIR_ANDROID_APP_DATA, &path));
+ path = path.Append(FILE_PATH_LITERAL("mandoline"));
+#else
+ NOTIMPLEMENTED();
+#endif
+ }
+
+ if (!base::PathExists(path))
+ base::CreateDirectory(path);
+
+ return path;
}
} // namespace filesystem
« no previous file with comments | « components/filesystem/file_system_app.h ('k') | components/filesystem/file_system_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698