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

Unified Diff: native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_pepper_interface_html5_fs.cc

Issue 2156503002: [NaCl SDK] Expose Google Drive to nacl_io. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 3 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
Index: native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_pepper_interface_html5_fs.cc
diff --git a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_pepper_interface_html5_fs.cc b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_pepper_interface_html5_fs.cc
index c2b1b9bdf41f057046389f8c80944fe0229805c5..8459dc22179f600fa04046abbd35c8422500f811 100644
--- a/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_pepper_interface_html5_fs.cc
+++ b/native_client_sdk/src/tests/nacl_io_test/fake_ppapi/fake_pepper_interface_html5_fs.cc
@@ -13,6 +13,14 @@
#include "gtest/gtest.h"
+#include "fake_ppapi/fake_core_interface.h"
+#include "fake_ppapi/fake_filesystem.h"
+#include "fake_ppapi/fake_file_io_interface.h"
+#include "fake_ppapi/fake_file_ref_interface.h"
+#include "fake_ppapi/fake_file_system_interface.h"
+#include "fake_ppapi/fake_util.h"
+#include "fake_ppapi/fake_var_interface.h"
+
namespace {
class FakeInstanceResource : public FakeResource {
@@ -20,681 +28,11 @@ class FakeInstanceResource : public FakeResource {
FakeInstanceResource() : filesystem_template(NULL) {}
static const char* classname() { return "FakeInstanceResource"; }
- FakeHtml5FsFilesystem* filesystem_template; // Weak reference.
-};
-
-class FakeFileSystemResource : public FakeResource {
- public:
- FakeFileSystemResource() : filesystem(NULL), opened(false) {}
- ~FakeFileSystemResource() { delete filesystem; }
- static const char* classname() { return "FakeFileSystemResource"; }
-
- FakeHtml5FsFilesystem* filesystem; // Owned.
- bool opened;
-};
-
-class FakeFileRefResource : public FakeResource {
- public:
- FakeFileRefResource() : filesystem(NULL) {}
- static const char* classname() { return "FakeFileRefResource"; }
-
- FakeHtml5FsFilesystem* filesystem; // Weak reference.
- FakeHtml5FsFilesystem::Path path;
-};
-
-class FakeFileIoResource : public FakeResource {
- public:
- FakeFileIoResource() : node(NULL), open_flags(0) {}
- static const char* classname() { return "FakeFileIoResource"; }
-
- FakeHtml5FsNode* node; // Weak reference.
- int32_t open_flags;
+ FakeFilesystem* filesystem_template; // Weak reference.
};
-// Helper function to call the completion callback if it is defined (an
-// asynchronous call), or return the result directly if it isn't (a synchronous
-// call).
-//
-// Use like this:
-// if (<some error condition>)
-// return RunCompletionCallback(callback, PP_ERROR_FUBAR);
-//
-// /* Everything worked OK */
-// return RunCompletionCallback(callback, PP_OK);
-int32_t RunCompletionCallback(PP_CompletionCallback* callback, int32_t result) {
- if (callback->func) {
- PP_RunCompletionCallback(callback, result);
- return PP_OK_COMPLETIONPENDING;
- }
- return result;
-}
-
} // namespace
-FakeHtml5FsNode::FakeHtml5FsNode(const PP_FileInfo& info) : info_(info) {}
-
-FakeHtml5FsNode::FakeHtml5FsNode(const PP_FileInfo& info,
- const std::vector<uint8_t>& contents)
- : info_(info), contents_(contents) {}
-
-FakeHtml5FsNode::FakeHtml5FsNode(const PP_FileInfo& info,
- const std::string& contents)
- : info_(info) {
- std::copy(contents.begin(), contents.end(), std::back_inserter(contents_));
-}
-
-int32_t FakeHtml5FsNode::Read(int64_t offset,
- char* buffer,
- int32_t bytes_to_read) {
- if (offset < 0)
- return PP_ERROR_FAILED;
-
- bytes_to_read =
- std::max(0, std::min<int32_t>(bytes_to_read, contents_.size() - offset));
- memcpy(buffer, contents_.data() + offset, bytes_to_read);
- return bytes_to_read;
-}
-
-int32_t FakeHtml5FsNode::Write(int64_t offset,
- const char* buffer,
- int32_t bytes_to_write) {
- if (offset < 0)
- return PP_ERROR_FAILED;
-
- size_t new_size = offset + bytes_to_write;
- if (new_size > contents_.size())
- contents_.resize(new_size);
-
- memcpy(contents_.data() + offset, buffer, bytes_to_write);
- info_.size = new_size;
- return bytes_to_write;
-}
-
-int32_t FakeHtml5FsNode::Append(const char* buffer, int32_t bytes_to_write) {
- return Write(contents_.size(), buffer, bytes_to_write);
-}
-
-int32_t FakeHtml5FsNode::SetLength(int64_t length) {
- contents_.resize(length);
- info_.size = length;
- return PP_OK;
-}
-
-void FakeHtml5FsNode::GetInfo(PP_FileInfo* out_info) { *out_info = info_; }
-
-bool FakeHtml5FsNode::IsRegular() const {
- return info_.type == PP_FILETYPE_REGULAR;
-}
-
-bool FakeHtml5FsNode::IsDirectory() const {
- return info_.type == PP_FILETYPE_DIRECTORY;
-}
-
-FakeHtml5FsFilesystem::FakeHtml5FsFilesystem()
- : filesystem_type_(PP_FILESYSTEMTYPE_INVALID) {
- Clear();
-}
-
-FakeHtml5FsFilesystem::FakeHtml5FsFilesystem(PP_FileSystemType type)
- : filesystem_type_(type) {
- Clear();
-}
-
-FakeHtml5FsFilesystem::FakeHtml5FsFilesystem(
- const FakeHtml5FsFilesystem& filesystem,
- PP_FileSystemType type)
- : node_map_(filesystem.node_map_), filesystem_type_(type) {}
-
-void FakeHtml5FsFilesystem::Clear() {
- node_map_.clear();
- // Always have a root node.
- AddDirectory("/", NULL);
-}
-
-bool FakeHtml5FsFilesystem::AddEmptyFile(const Path& path,
- FakeHtml5FsNode** out_node) {
- return AddFile(path, std::vector<uint8_t>(), out_node);
-}
-
-bool FakeHtml5FsFilesystem::AddFile(const Path& path,
- const std::string& contents,
- FakeHtml5FsNode** out_node) {
- std::vector<uint8_t> data;
- std::copy(contents.begin(), contents.end(), std::back_inserter(data));
- return AddFile(path, data, out_node);
-}
-
-bool FakeHtml5FsFilesystem::AddFile(const Path& path,
- const std::vector<uint8_t>& contents,
- FakeHtml5FsNode** out_node) {
- NodeMap::iterator iter = node_map_.find(path);
- if (iter != node_map_.end()) {
- if (out_node)
- *out_node = NULL;
- return false;
- }
-
- PP_FileInfo info;
- info.size = contents.size();
- info.type = PP_FILETYPE_REGULAR;
- info.system_type = filesystem_type_;
- info.creation_time = 0;
- info.last_access_time = 0;
- info.last_modified_time = 0;
-
- FakeHtml5FsNode node(info, contents);
- std::pair<NodeMap::iterator, bool> result =
- node_map_.insert(NodeMap::value_type(path, node));
-
- EXPECT_EQ(true, result.second);
- if (out_node)
- *out_node = &result.first->second;
- return true;
-}
-
-bool FakeHtml5FsFilesystem::AddDirectory(const Path& path,
- FakeHtml5FsNode** out_node) {
- NodeMap::iterator iter = node_map_.find(path);
- if (iter != node_map_.end()) {
- if (out_node)
- *out_node = NULL;
- return false;
- }
-
- PP_FileInfo info;
- info.size = 0;
- info.type = PP_FILETYPE_DIRECTORY;
- info.system_type = filesystem_type_;
- info.creation_time = 0;
- info.last_access_time = 0;
- info.last_modified_time = 0;
-
- FakeHtml5FsNode node(info);
- std::pair<NodeMap::iterator, bool> result =
- node_map_.insert(NodeMap::value_type(path, node));
-
- EXPECT_EQ(true, result.second);
- if (out_node)
- *out_node = &result.first->second;
- return true;
-}
-
-bool FakeHtml5FsFilesystem::RemoveNode(const Path& path) {
- return node_map_.erase(path) >= 1;
-}
-
-FakeHtml5FsNode* FakeHtml5FsFilesystem::GetNode(const Path& path) {
- NodeMap::iterator iter = node_map_.find(path);
- if (iter == node_map_.end())
- return NULL;
- return &iter->second;
-}
-
-bool FakeHtml5FsFilesystem::GetDirectoryEntries(
- const Path& path,
- DirectoryEntries* out_dir_entries) const {
- out_dir_entries->clear();
-
- NodeMap::const_iterator iter = node_map_.find(path);
- if (iter == node_map_.end())
- return false;
-
- const FakeHtml5FsNode& dir_node = iter->second;
- if (!dir_node.IsDirectory())
- return false;
-
- for (NodeMap::const_iterator iter = node_map_.begin();
- iter != node_map_.end();
- ++iter) {
- const Path& node_path = iter->first;
- if (node_path.find(path) == std::string::npos)
- continue;
-
- // A node is not a child of itself.
- if (&iter->second == &dir_node)
- continue;
-
- // Only consider children, not descendants. If we find a forward slash, then
- // the node must be in a subdirectory.
- if (node_path.find('/', path.size() + 1) != std::string::npos)
- continue;
-
- // The directory entry names do not include the path.
- Path entry_path = node_path;
- size_t last_slash = node_path.rfind('/');
- if (last_slash != std::string::npos)
- entry_path.erase(0, last_slash + 1);
-
- DirectoryEntry entry;
- entry.path = entry_path;
- entry.node = &iter->second;
- out_dir_entries->push_back(entry);
- }
-
- return true;
-}
-
-// static
-FakeHtml5FsFilesystem::Path FakeHtml5FsFilesystem::GetParentPath(
- const Path& path) {
- size_t last_slash = path.rfind('/');
- if (last_slash == 0)
- return "/";
-
- EXPECT_EQ(std::string::npos, last_slash);
- return path.substr(0, last_slash);
-}
-
-FakeFileIoInterface::FakeFileIoInterface(FakeCoreInterface* core_interface)
- : core_interface_(core_interface) {}
-
-PP_Resource FakeFileIoInterface::Create(PP_Resource) {
- return CREATE_RESOURCE(core_interface_->resource_manager(),
- FakeFileIoResource,
- new FakeFileIoResource);
-}
-
-int32_t FakeFileIoInterface::Open(PP_Resource file_io,
- PP_Resource file_ref,
- int32_t open_flags,
- PP_CompletionCallback callback) {
- FakeFileIoResource* file_io_resource =
- core_interface_->resource_manager()->Get<FakeFileIoResource>(file_io);
- if (file_io_resource == NULL)
- return PP_ERROR_BADRESOURCE;
-
- bool flag_write = !!(open_flags & PP_FILEOPENFLAG_WRITE);
- bool flag_create = !!(open_flags & PP_FILEOPENFLAG_CREATE);
- bool flag_truncate = !!(open_flags & PP_FILEOPENFLAG_TRUNCATE);
- bool flag_exclusive = !!(open_flags & PP_FILEOPENFLAG_EXCLUSIVE);
- bool flag_append = !!(open_flags & PP_FILEOPENFLAG_APPEND);
-
- if ((flag_append && flag_write) || (flag_truncate && !flag_write))
- return PP_ERROR_BADARGUMENT;
-
- FakeFileRefResource* file_ref_resource =
- core_interface_->resource_manager()->Get<FakeFileRefResource>(file_ref);
- if (file_ref_resource == NULL)
- return PP_ERROR_BADRESOURCE;
-
- const FakeHtml5FsFilesystem::Path& path = file_ref_resource->path;
- FakeHtml5FsFilesystem* filesystem = file_ref_resource->filesystem;
- FakeHtml5FsNode* node = filesystem->GetNode(path);
- bool node_exists = node != NULL;
-
- if (!node_exists) {
- if (!flag_create)
- return RunCompletionCallback(&callback, PP_ERROR_FILENOTFOUND);
-
- bool result = filesystem->AddEmptyFile(path, &node);
- EXPECT_EQ(true, result);
- } else {
- if (flag_create && flag_exclusive)
- return RunCompletionCallback(&callback, PP_ERROR_FILEEXISTS);
- }
-
- file_io_resource->node = node;
- file_io_resource->open_flags = open_flags;
-
- if (flag_truncate)
- return RunCompletionCallback(&callback, node->SetLength(0));
-
- return RunCompletionCallback(&callback, PP_OK);
-}
-
-int32_t FakeFileIoInterface::Query(PP_Resource file_io,
- PP_FileInfo* info,
- PP_CompletionCallback callback) {
- FakeFileIoResource* file_io_resource =
- core_interface_->resource_manager()->Get<FakeFileIoResource>(file_io);
- if (file_io_resource == NULL)
- return PP_ERROR_BADRESOURCE;
-
- if (!file_io_resource->node)
- return RunCompletionCallback(&callback, PP_ERROR_FAILED);
-
- file_io_resource->node->GetInfo(info);
- return RunCompletionCallback(&callback, PP_OK);
-}
-
-int32_t FakeFileIoInterface::Read(PP_Resource file_io,
- int64_t offset,
- char* buffer,
- int32_t bytes_to_read,
- PP_CompletionCallback callback) {
- FakeFileIoResource* file_io_resource =
- core_interface_->resource_manager()->Get<FakeFileIoResource>(file_io);
- if (file_io_resource == NULL)
- return PP_ERROR_BADRESOURCE;
-
- if (bytes_to_read < 0)
- return RunCompletionCallback(&callback, PP_ERROR_FAILED);
-
- if ((file_io_resource->open_flags & PP_FILEOPENFLAG_READ) !=
- PP_FILEOPENFLAG_READ) {
- return RunCompletionCallback(&callback, PP_ERROR_NOACCESS);
- }
-
- if (!file_io_resource->node)
- return RunCompletionCallback(&callback, PP_ERROR_FAILED);
-
- int32_t result = file_io_resource->node->Read(offset, buffer, bytes_to_read);
- return RunCompletionCallback(&callback, result);
-}
-
-int32_t FakeFileIoInterface::Write(PP_Resource file_io,
- int64_t offset,
- const char* buffer,
- int32_t bytes_to_write,
- PP_CompletionCallback callback) {
- FakeFileIoResource* file_io_resource =
- core_interface_->resource_manager()->Get<FakeFileIoResource>(file_io);
- if (file_io_resource == NULL)
- return PP_ERROR_BADRESOURCE;
-
- if ((file_io_resource->open_flags & PP_FILEOPENFLAG_WRITE) !=
- PP_FILEOPENFLAG_WRITE) {
- return RunCompletionCallback(&callback, PP_ERROR_NOACCESS);
- }
-
- if (!file_io_resource->node)
- return RunCompletionCallback(&callback, PP_ERROR_FAILED);
-
- int32_t result;
- if ((file_io_resource->open_flags & PP_FILEOPENFLAG_APPEND) ==
- PP_FILEOPENFLAG_APPEND) {
- result = file_io_resource->node->Append(buffer, bytes_to_write);
- } else {
- result = file_io_resource->node->Write(offset, buffer, bytes_to_write);
- }
-
- return RunCompletionCallback(&callback, result);
-}
-
-int32_t FakeFileIoInterface::SetLength(PP_Resource file_io,
- int64_t length,
- PP_CompletionCallback callback) {
- FakeFileIoResource* file_io_resource =
- core_interface_->resource_manager()->Get<FakeFileIoResource>(file_io);
- if (file_io_resource == NULL)
- return PP_ERROR_BADRESOURCE;
-
- if ((file_io_resource->open_flags & PP_FILEOPENFLAG_WRITE) !=
- PP_FILEOPENFLAG_WRITE) {
- return RunCompletionCallback(&callback, PP_ERROR_NOACCESS);
- }
-
- if (!file_io_resource->node)
- return RunCompletionCallback(&callback, PP_ERROR_FAILED);
-
- int32_t result = file_io_resource->node->SetLength(length);
- return RunCompletionCallback(&callback, result);
-}
-
-int32_t FakeFileIoInterface::Flush(PP_Resource file_io,
- PP_CompletionCallback callback) {
- FakeFileIoResource* file_io_resource =
- core_interface_->resource_manager()->Get<FakeFileIoResource>(file_io);
- if (file_io_resource == NULL)
- return PP_ERROR_BADRESOURCE;
-
- if (!file_io_resource->node)
- return RunCompletionCallback(&callback, PP_ERROR_FAILED);
-
- return RunCompletionCallback(&callback, PP_OK);
-}
-
-void FakeFileIoInterface::Close(PP_Resource file_io) {
- FakeFileIoResource* file_io_resource =
- core_interface_->resource_manager()->Get<FakeFileIoResource>(file_io);
- if (file_io_resource == NULL)
- return;
-
- file_io_resource->node = NULL;
- file_io_resource->open_flags = 0;
-}
-
-FakeFileRefInterface::FakeFileRefInterface(FakeCoreInterface* core_interface,
- FakeVarInterface* var_interface)
- : core_interface_(core_interface), var_interface_(var_interface) {}
-
-PP_Resource FakeFileRefInterface::Create(PP_Resource file_system,
- const char* path) {
- FakeFileSystemResource* file_system_resource =
- core_interface_->resource_manager()->Get<FakeFileSystemResource>(
- file_system);
- if (file_system_resource == NULL)
- return PP_ERROR_BADRESOURCE;
-
- if (!file_system_resource->opened)
- return PP_ERROR_FAILED;
-
- if (path == NULL)
- return PP_ERROR_FAILED;
-
- size_t path_len = strlen(path);
- if (path_len == 0)
- return PP_ERROR_FAILED;
-
- FakeFileRefResource* file_ref_resource = new FakeFileRefResource;
- file_ref_resource->filesystem = file_system_resource->filesystem;
- file_ref_resource->path = path;
-
- // Remove a trailing slash from the path, unless it is the root path.
- if (path_len > 1 && file_ref_resource->path[path_len - 1] == '/')
- file_ref_resource->path.erase(path_len - 1);
-
- return CREATE_RESOURCE(core_interface_->resource_manager(),
- FakeFileRefResource,
- file_ref_resource);
-}
-
-PP_Var FakeFileRefInterface::GetName(PP_Resource file_ref) {
- FakeFileRefResource* file_ref_resource =
- core_interface_->resource_manager()->Get<FakeFileRefResource>(file_ref);
- if (file_ref_resource == NULL)
- return PP_MakeUndefined();
-
- return var_interface_->VarFromUtf8(file_ref_resource->path.c_str(),
- file_ref_resource->path.size());
-}
-
-int32_t FakeFileRefInterface::MakeDirectory(PP_Resource directory_ref,
- PP_Bool make_parents,
- PP_CompletionCallback callback) {
- FakeFileRefResource* directory_ref_resource =
- core_interface_->resource_manager()->Get<FakeFileRefResource>(
- directory_ref);
- if (directory_ref_resource == NULL)
- return PP_ERROR_BADRESOURCE;
-
- // TODO(binji): We don't currently use make_parents in nacl_io, so
- // I won't bother handling it yet.
- if (make_parents == PP_TRUE)
- return PP_ERROR_FAILED;
-
- FakeHtml5FsFilesystem* filesystem = directory_ref_resource->filesystem;
- FakeHtml5FsFilesystem::Path path = directory_ref_resource->path;
-
- // Pepper returns PP_ERROR_NOACCESS when trying to create the root directory,
- // not PP_ERROR_FILEEXISTS, as you might expect.
- if (path == "/")
- return RunCompletionCallback(&callback, PP_ERROR_NOACCESS);
-
- FakeHtml5FsNode* node = filesystem->GetNode(path);
- if (node != NULL)
- return RunCompletionCallback(&callback, PP_ERROR_FILEEXISTS);
-
- FakeHtml5FsFilesystem::Path parent_path = filesystem->GetParentPath(path);
- FakeHtml5FsNode* parent_node = filesystem->GetNode(parent_path);
- if (parent_node == NULL)
- return RunCompletionCallback(&callback, PP_ERROR_FILENOTFOUND);
-
- if (!parent_node->IsDirectory())
- return RunCompletionCallback(&callback, PP_ERROR_FAILED);
-
- bool result = filesystem->AddDirectory(directory_ref_resource->path, NULL);
- EXPECT_EQ(true, result);
- return RunCompletionCallback(&callback, PP_OK);
-}
-
-int32_t FakeFileRefInterface::Delete(PP_Resource file_ref,
- PP_CompletionCallback callback) {
- FakeFileRefResource* file_ref_resource =
- core_interface_->resource_manager()->Get<FakeFileRefResource>(file_ref);
- if (file_ref_resource == NULL)
- return PP_ERROR_BADRESOURCE;
-
- FakeHtml5FsFilesystem* filesystem = file_ref_resource->filesystem;
- FakeHtml5FsFilesystem::Path path = file_ref_resource->path;
- FakeHtml5FsNode* node = filesystem->GetNode(path);
- if (node == NULL)
- return RunCompletionCallback(&callback, PP_ERROR_FILENOTFOUND);
-
- filesystem->RemoveNode(path);
- return RunCompletionCallback(&callback, PP_OK);
-}
-
-int32_t FakeFileRefInterface::Query(PP_Resource file_ref,
- PP_FileInfo* info,
- PP_CompletionCallback callback) {
- FakeFileRefResource* file_ref_resource =
- core_interface_->resource_manager()->Get<FakeFileRefResource>(file_ref);
- if (file_ref_resource == NULL)
- return PP_ERROR_BADRESOURCE;
-
- FakeHtml5FsFilesystem* filesystem = file_ref_resource->filesystem;
- FakeHtml5FsFilesystem::Path path = file_ref_resource->path;
- FakeHtml5FsNode* node = filesystem->GetNode(path);
- if (node == NULL)
- return RunCompletionCallback(&callback, PP_ERROR_FILENOTFOUND);
-
- node->GetInfo(info);
- return RunCompletionCallback(&callback, PP_OK);
-}
-
-int32_t FakeFileRefInterface::ReadDirectoryEntries(
- PP_Resource directory_ref,
- const PP_ArrayOutput& output,
- PP_CompletionCallback callback) {
- FakeFileRefResource* directory_ref_resource =
- core_interface_->resource_manager()->Get<FakeFileRefResource>(
- directory_ref);
- if (directory_ref_resource == NULL)
- return PP_ERROR_BADRESOURCE;
-
- FakeHtml5FsFilesystem* filesystem = directory_ref_resource->filesystem;
- FakeHtml5FsFilesystem::Path path = directory_ref_resource->path;
- FakeHtml5FsNode* node = filesystem->GetNode(path);
- if (node == NULL)
- return RunCompletionCallback(&callback, PP_ERROR_FILENOTFOUND);
-
- if (!node->IsDirectory())
- return RunCompletionCallback(&callback, PP_ERROR_FAILED);
-
- FakeHtml5FsFilesystem::DirectoryEntries fake_dir_entries;
- filesystem->GetDirectoryEntries(path, &fake_dir_entries);
-
- uint32_t element_count = fake_dir_entries.size();
- uint32_t element_size = sizeof(fake_dir_entries[0]);
- void* data_buffer =
- (*output.GetDataBuffer)(output.user_data, element_count, element_size);
-
- if (data_buffer == NULL)
- return RunCompletionCallback(&callback, PP_ERROR_FAILED);
-
- PP_DirectoryEntry* dir_entries = static_cast<PP_DirectoryEntry*>(data_buffer);
- for (uint32_t i = 0; i < element_count; ++i) {
- const FakeHtml5FsFilesystem::DirectoryEntry& fake_dir_entry =
- fake_dir_entries[i];
-
- FakeFileRefResource* file_ref_resource = new FakeFileRefResource;
- file_ref_resource->filesystem = directory_ref_resource->filesystem;
- file_ref_resource->path = fake_dir_entry.path;
- PP_Resource file_ref = CREATE_RESOURCE(core_interface_->resource_manager(),
- FakeFileRefResource,
- file_ref_resource);
-
- dir_entries[i].file_ref = file_ref;
- dir_entries[i].file_type = fake_dir_entry.node->file_type();
- }
-
- return RunCompletionCallback(&callback, PP_OK);
-}
-
-int32_t FakeFileRefInterface::Rename(PP_Resource file_ref,
- PP_Resource new_file_ref,
- PP_CompletionCallback callback) {
- FakeFileRefResource* file_ref_resource =
- core_interface_->resource_manager()->Get<FakeFileRefResource>(file_ref);
- if (file_ref_resource == NULL)
- return PP_ERROR_BADRESOURCE;
-
- FakeFileRefResource* new_file_ref_resource =
- core_interface_->resource_manager()->Get<FakeFileRefResource>(
- new_file_ref);
- if (new_file_ref_resource == NULL)
- return PP_ERROR_BADRESOURCE;
-
- FakeHtml5FsFilesystem* filesystem = file_ref_resource->filesystem;
- FakeHtml5FsFilesystem::Path path = file_ref_resource->path;
- FakeHtml5FsFilesystem::Path newpath = new_file_ref_resource->path;
- FakeHtml5FsNode* node = filesystem->GetNode(path);
- if (node == NULL)
- return RunCompletionCallback(&callback, PP_ERROR_FILENOTFOUND);
- // FakeFileRefResource does not support directory rename.
- if (!node->IsRegular())
- return RunCompletionCallback(&callback, PP_ERROR_NOTAFILE);
-
- // Remove the destination if it exists.
- filesystem->RemoveNode(newpath);
- const std::vector<uint8_t> contents = node->contents();
- EXPECT_TRUE(filesystem->AddFile(newpath, contents, NULL));
- EXPECT_TRUE(filesystem->RemoveNode(path));
- return RunCompletionCallback(&callback, PP_OK);
-}
-
-FakeFileSystemInterface::FakeFileSystemInterface(
- FakeCoreInterface* core_interface)
- : core_interface_(core_interface) {}
-
-PP_Bool FakeFileSystemInterface::IsFileSystem(PP_Resource resource) {
- bool not_found_ok = true;
- FakeFileSystemResource* file_system_resource =
- core_interface_->resource_manager()->Get<FakeFileSystemResource>(
- resource, not_found_ok);
- return file_system_resource != NULL ? PP_TRUE : PP_FALSE;
-}
-
-PP_Resource FakeFileSystemInterface::Create(PP_Instance instance,
- PP_FileSystemType filesystem_type) {
- FakeInstanceResource* instance_resource =
- core_interface_->resource_manager()->Get<FakeInstanceResource>(instance);
- if (instance_resource == NULL)
- return PP_ERROR_BADRESOURCE;
-
- FakeFileSystemResource* file_system_resource = new FakeFileSystemResource;
- file_system_resource->filesystem = new FakeHtml5FsFilesystem(
- *instance_resource->filesystem_template, filesystem_type);
-
- return CREATE_RESOURCE(core_interface_->resource_manager(),
- FakeFileSystemResource,
- file_system_resource);
-}
-
-int32_t FakeFileSystemInterface::Open(PP_Resource file_system,
- int64_t expected_size,
- PP_CompletionCallback callback) {
- FakeFileSystemResource* file_system_resource =
- core_interface_->resource_manager()->Get<FakeFileSystemResource>(
- file_system);
- if (file_system_resource == NULL)
- return PP_ERROR_BADRESOURCE;
-
- file_system_resource->opened = true;
- return RunCompletionCallback(&callback, PP_OK);
-}
-
FakePepperInterfaceHtml5Fs::FakePepperInterfaceHtml5Fs()
: core_interface_(&resource_manager_),
var_interface_(&var_manager_),
@@ -705,7 +43,7 @@ FakePepperInterfaceHtml5Fs::FakePepperInterfaceHtml5Fs()
}
FakePepperInterfaceHtml5Fs::FakePepperInterfaceHtml5Fs(
- const FakeHtml5FsFilesystem& filesystem)
+ const FakeFilesystem& filesystem)
: core_interface_(&resource_manager_),
var_interface_(&var_manager_),
filesystem_template_(filesystem),
@@ -721,8 +59,7 @@ void FakePepperInterfaceHtml5Fs::Init() {
instance_resource->filesystem_template = &filesystem_template_;
instance_ = CREATE_RESOURCE(core_interface_.resource_manager(),
- FakeInstanceResource,
- instance_resource);
+ FakeInstanceResource, instance_resource);
}
FakePepperInterfaceHtml5Fs::~FakePepperInterfaceHtml5Fs() {

Powered by Google App Engine
This is Rietveld 408576698