| Index: components/filesystem/file_system_impl.cc
|
| diff --git a/components/filesystem/file_system_impl.cc b/components/filesystem/file_system_impl.cc
|
| index 1ce5d255e5b0e131bd957a429f968f5a88be2cf3..f33aea8947d3380314d5c9c09cdfb992d3da1329 100644
|
| --- a/components/filesystem/file_system_impl.cc
|
| +++ b/components/filesystem/file_system_impl.cc
|
| @@ -15,45 +15,15 @@
|
| #include "base/files/scoped_temp_dir.h"
|
| #include "base/logging.h"
|
| #include "base/memory/scoped_ptr.h"
|
| -#include "base/posix/eintr_wrapper.h"
|
| #include "components/filesystem/directory_impl.h"
|
| +#include "mojo/application/public/cpp/application_connection.h"
|
|
|
| namespace filesystem {
|
|
|
| -namespace {
|
| -
|
| -base::ScopedFD CreateAndOpenTemporaryDirectory(
|
| - scoped_ptr<base::ScopedTempDir>* temp_dir) {
|
| - (*temp_dir).reset(new base::ScopedTempDir());
|
| - CHECK((*temp_dir)->CreateUniqueTempDir());
|
| -
|
| - base::ScopedFD temp_dir_fd(HANDLE_EINTR(
|
| - open((*temp_dir)->path().value().c_str(), O_RDONLY | O_DIRECTORY, 0)));
|
| - PCHECK(temp_dir_fd.is_valid());
|
| - DVLOG(1) << "Made a temporary directory: " << (*temp_dir)->path().value();
|
| - return temp_dir_fd.Pass();
|
| -}
|
| -
|
| -#ifndef NDEBUG
|
| -base::ScopedFD OpenMojoDebugDirectory() {
|
| - const char* home_dir_name = getenv("HOME");
|
| - if (!home_dir_name || !home_dir_name[0]) {
|
| - LOG(ERROR) << "HOME not set";
|
| - return base::ScopedFD();
|
| - }
|
| - base::FilePath mojo_debug_dir_name =
|
| - base::FilePath(home_dir_name).Append("MojoDebug");
|
| - return base::ScopedFD(HANDLE_EINTR(
|
| - open(mojo_debug_dir_name.value().c_str(), O_RDONLY | O_DIRECTORY, 0)));
|
| -}
|
| -#endif
|
| -
|
| -} // namespace
|
| -
|
| FileSystemImpl::FileSystemImpl(mojo::ApplicationConnection* connection,
|
| mojo::InterfaceRequest<FileSystem> request)
|
| - : binding_(this, request.Pass()) {
|
| - // TODO(vtl): record other app's URL
|
| + : remote_application_url_(connection->GetRemoteApplicationURL()),
|
| + binding_(this, request.Pass()) {
|
| }
|
|
|
| FileSystemImpl::~FileSystemImpl() {
|
| @@ -62,33 +32,24 @@ FileSystemImpl::~FileSystemImpl() {
|
| void FileSystemImpl::OpenFileSystem(const mojo::String& file_system,
|
| mojo::InterfaceRequest<Directory> directory,
|
| const OpenFileSystemCallback& callback) {
|
| - base::ScopedFD dir_fd;
|
| // Set only if the |DirectoryImpl| will own a temporary directory.
|
| scoped_ptr<base::ScopedTempDir> temp_dir;
|
| - if (file_system.is_null()) {
|
| - // TODO(vtl): ScopedGeneric (hence ScopedFD) doesn't have an operator=!
|
| - dir_fd.reset(CreateAndOpenTemporaryDirectory(&temp_dir).release());
|
| - DCHECK(temp_dir);
|
| - } else if (file_system.get() == std::string("debug")) {
|
| -#ifdef NDEBUG
|
| - LOG(WARNING) << "~/MojoDebug only available in Debug builds";
|
| -#else
|
| - // TODO(vtl): ScopedGeneric (hence ScopedFD) doesn't have an operator=!
|
| - dir_fd.reset(OpenMojoDebugDirectory().release());
|
| -#endif
|
| - if (!dir_fd.is_valid()) {
|
| - LOG(ERROR) << "~/MojoDebug unavailable";
|
| - callback.Run(ERROR_UNAVAILABLE);
|
| - return;
|
| - }
|
| - } else {
|
| - LOG(ERROR) << "Unknown file system: " << file_system.get();
|
| - callback.Run(ERROR_UNIMPLEMENTED);
|
| - return;
|
| + base::FilePath path;
|
| + if (file_system.get() == std::string("temp")) {
|
| + temp_dir.reset(new base::ScopedTempDir);
|
| + CHECK(temp_dir->CreateUniqueTempDir());
|
| + path = temp_dir->path();
|
| + } else if (file_system.get() == std::string("origin")) {
|
| + // TODO(erg): We should serve a persistent directory based on the
|
| + // subdirectory |remote_application_url_| of a profile directory.
|
| }
|
|
|
| - new DirectoryImpl(directory.Pass(), dir_fd.Pass(), temp_dir.Pass());
|
| - callback.Run(ERROR_OK);
|
| + if (!path.empty()) {
|
| + new DirectoryImpl(directory.Pass(), path, temp_dir.Pass());
|
| + callback.Run(ERROR_OK);
|
| + } else {
|
| + callback.Run(ERROR_FAILED);
|
| + }
|
| }
|
|
|
| } // namespace filesystem
|
|
|