Chromium Code Reviews| Index: chrome/browser/chromeos/file_system_provider/fake_provided_file_system.cc |
| diff --git a/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.cc b/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.cc |
| index 70f1aa39bb261fdc67d4a318d0baafc598cb6851..ea08d8b962c4e6c88490697c609e581ce6f6c531 100644 |
| --- a/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.cc |
| +++ b/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.cc |
| @@ -23,6 +23,17 @@ const char kFakeFileMimeType[] = "text/plain"; |
| const char kFakeFilePath[] = "/hello.txt"; |
| +FakeEntry::FakeEntry() { |
| +} |
| + |
| +FakeEntry::FakeEntry(scoped_ptr<EntryMetadata> metadata, |
| + const std::string& contents) |
| + : metadata(metadata.Pass()), contents(contents) { |
| +} |
| + |
| +FakeEntry::~FakeEntry() { |
| +} |
| + |
| FakeProvidedFileSystem::FakeProvidedFileSystem( |
| const ProvidedFileSystemInfo& file_system_info) |
| : file_system_info_(file_system_info), |
| @@ -52,25 +63,25 @@ void FakeProvidedFileSystem::AddEntry(const base::FilePath& entry_path, |
| std::string mime_type, |
| std::string contents) { |
| DCHECK(entries_.find(entry_path) == entries_.end()); |
| - EntryMetadata metadata; |
| + scoped_ptr<EntryMetadata> metadata(new EntryMetadata); |
| - metadata.is_directory = is_directory; |
| - metadata.name = name; |
| - metadata.size = size; |
| - metadata.modification_time = modification_time; |
| - metadata.mime_type = mime_type; |
| + metadata->is_directory = is_directory; |
| + metadata->name = name; |
| + metadata->size = size; |
| + metadata->modification_time = modification_time; |
| + metadata->mime_type = mime_type; |
| - entries_[entry_path] = FakeEntry(metadata, contents); |
| + entries_[entry_path] = |
| + make_linked_ptr(new FakeEntry(metadata.Pass(), contents)); |
| } |
| -bool FakeProvidedFileSystem::GetEntry(const base::FilePath& entry_path, |
| - FakeEntry* fake_entry) const { |
| +const FakeEntry* FakeProvidedFileSystem::GetEntry( |
| + const base::FilePath& entry_path) const { |
| const Entries::const_iterator entry_it = entries_.find(entry_path); |
| if (entry_it == entries_.end()) |
| - return false; |
| + return NULL; |
| - *fake_entry = entry_it->second; |
| - return true; |
| + return entry_it->second.get(); |
| } |
| ProvidedFileSystemInterface::AbortCallback |
| @@ -81,16 +92,27 @@ FakeProvidedFileSystem::RequestUnmount( |
| ProvidedFileSystemInterface::AbortCallback FakeProvidedFileSystem::GetMetadata( |
| const base::FilePath& entry_path, |
| + ProvidedFileSystemInterface::MetadataFieldMask fields, |
| const ProvidedFileSystemInterface::GetMetadataCallback& callback) { |
| const Entries::const_iterator entry_it = entries_.find(entry_path); |
| if (entry_it == entries_.end()) { |
| - return PostAbortableTask(base::Bind( |
| - callback, EntryMetadata(), base::File::FILE_ERROR_NOT_FOUND)); |
| + return PostAbortableTask( |
| + base::Bind(callback, |
| + base::Passed(make_scoped_ptr<EntryMetadata>(NULL)), |
| + base::File::FILE_ERROR_NOT_FOUND)); |
| } |
| + scoped_ptr<EntryMetadata> metadata(new EntryMetadata); |
| + metadata->is_directory = entry_it->second->metadata->is_directory; |
| + metadata->name = entry_it->second->metadata->name; |
| + metadata->size = entry_it->second->metadata->size; |
| + metadata->modification_time = entry_it->second->metadata->modification_time; |
| + metadata->mime_type = entry_it->second->metadata->mime_type; |
| + metadata->thumbnail = entry_it->second->metadata->thumbnail; |
| + |
| return PostAbortableTask( |
| - base::Bind(callback, entry_it->second.metadata, base::File::FILE_OK)); |
| + base::Bind(callback, base::Passed(&metadata), base::File::FILE_OK)); |
| } |
| ProvidedFileSystemInterface::AbortCallback |
| @@ -103,13 +125,13 @@ FakeProvidedFileSystem::ReadDirectory( |
| ++it) { |
| const base::FilePath file_path = it->first; |
| if (file_path == directory_path || directory_path.IsParent(file_path)) { |
| - const EntryMetadata& metadata = it->second.metadata; |
| + scoped_ptr<EntryMetadata>& metadata = it->second->metadata; |
|
hirono
2014/08/29 06:02:41
const scoped_ptr<EntryMetadta>& ?
or just EntryMet
mtomasz
2014/08/29 06:17:48
Done.
|
| entry_list.push_back(storage::DirectoryEntry( |
| - metadata.name, |
| - metadata.is_directory ? storage::DirectoryEntry::DIRECTORY |
| - : storage::DirectoryEntry::FILE, |
| - metadata.size, |
| - metadata.modification_time)); |
| + metadata->name, |
| + metadata->is_directory ? storage::DirectoryEntry::DIRECTORY |
| + : storage::DirectoryEntry::FILE, |
| + metadata->size, |
| + metadata->modification_time)); |
| } |
| } |
| @@ -182,19 +204,19 @@ ProvidedFileSystemInterface::AbortCallback FakeProvidedFileSystem::ReadFile( |
| int current_length = length; |
| // Reading behind EOF is fine, it will just return 0 bytes. |
| - if (current_offset >= entry_it->second.metadata.size || !current_length) { |
| + if (current_offset >= entry_it->second->metadata->size || !current_length) { |
| return PostAbortableTask(base::Bind(callback, |
| 0 /* chunk_length */, |
| false /* has_more */, |
| base::File::FILE_OK)); |
| } |
| - const FakeEntry& entry = entry_it->second; |
| + const FakeEntry* const entry = entry_it->second.get(); |
| std::vector<int> task_ids; |
| - while (current_offset < entry.metadata.size && current_length) { |
| - buffer->data()[current_offset - offset] = entry.contents[current_offset]; |
| + while (current_offset < entry->metadata->size && current_length) { |
| + buffer->data()[current_offset - offset] = entry->contents[current_offset]; |
| const bool has_more = |
| - (current_offset + 1 < entry.metadata.size) && (current_length - 1); |
| + (current_offset + 1 < entry->metadata->size) && (current_length - 1); |
| const int task_id = tracker_.PostTask( |
| base::MessageLoopProxy::current(), |
| FROM_HERE, |
| @@ -283,16 +305,16 @@ ProvidedFileSystemInterface::AbortCallback FakeProvidedFileSystem::WriteFile( |
| base::Bind(callback, base::File::FILE_ERROR_INVALID_OPERATION)); |
| } |
| - FakeEntry* const entry = &entry_it->second; |
| - if (offset > entry->metadata.size) { |
| + FakeEntry* const entry = entry_it->second.get(); |
| + if (offset > entry->metadata->size) { |
| return PostAbortableTask( |
| base::Bind(callback, base::File::FILE_ERROR_INVALID_OPERATION)); |
| } |
| // Allocate the string size in advance. |
| - if (offset + length > entry->metadata.size) { |
| - entry->metadata.size = offset + length; |
| - entry->contents.resize(entry->metadata.size); |
| + if (offset + length > entry->metadata->size) { |
| + entry->metadata->size = offset + length; |
| + entry->contents.resize(entry->metadata->size); |
| } |
| entry->contents.replace(offset, length, buffer->data(), length); |