summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/chromeos/drive/resource_metadata.cc39
-rw-r--r--chrome/browser/chromeos/drive/resource_metadata.h4
2 files changed, 16 insertions, 27 deletions
diff --git a/chrome/browser/chromeos/drive/resource_metadata.cc b/chrome/browser/chromeos/drive/resource_metadata.cc
index 03f93d9..565c918 100644
--- a/chrome/browser/chromeos/drive/resource_metadata.cc
+++ b/chrome/browser/chromeos/drive/resource_metadata.cc
@@ -703,7 +703,17 @@ FileError ResourceMetadata::ReadDirectoryByPath(
if (!entry->file_info().is_directory())
return FILE_ERROR_NOT_A_DIRECTORY;
- DirectoryChildrenToProtoVector(entry->resource_id())->swap(*out_entries);
+ std::vector<std::string> children;
+ storage_->GetChildren(entry->resource_id(), &children);
+
+ ResourceEntryVector entries;
+ for (size_t i = 0; i < children.size(); ++i) {
+ scoped_ptr<ResourceEntry> child = storage_->GetEntry(children[i]);
+ if (!child)
+ return FILE_ERROR_FAILED;
+ entries.push_back(*child);
+ }
+ out_entries->swap(entries);
return FILE_ERROR_OK;
}
@@ -774,15 +784,14 @@ FileError ResourceMetadata::RefreshDirectory(
}
// Go through the existing entries and remove deleted entries.
- scoped_ptr<ResourceEntryVector> entries =
- DirectoryChildrenToProtoVector(directory->resource_id());
- for (size_t i = 0; i < entries->size(); ++i) {
+ std::vector<std::string> children;
+ storage_->GetChildren(directory->resource_id(), &children);
+ for (size_t i = 0; i < children.size(); ++i) {
if (!EnoughDiskSpaceIsAvailableForDBOperation(data_directory_path_))
return FILE_ERROR_NO_SPACE;
- const ResourceEntry& entry = entries->at(i);
- if (entry_map.count(entry.resource_id()) == 0) {
- if (!RemoveEntryRecursively(entry.resource_id()))
+ if (entry_map.count(children[i]) == 0) {
+ if (!RemoveEntryRecursively(children[i]))
return FILE_ERROR_FAILED;
}
}
@@ -920,21 +929,5 @@ bool ResourceMetadata::RemoveEntryRecursively(
return storage_->RemoveEntry(resource_id);
}
-scoped_ptr<ResourceEntryVector>
-ResourceMetadata::DirectoryChildrenToProtoVector(
- const std::string& directory_resource_id) {
- DCHECK(blocking_task_runner_->RunsTasksOnCurrentThread());
-
- scoped_ptr<ResourceEntryVector> entries(new ResourceEntryVector);
- std::vector<std::string> children;
- storage_->GetChildren(directory_resource_id, &children);
- for (size_t i = 0; i < children.size(); ++i) {
- scoped_ptr<ResourceEntry> child = storage_->GetEntry(children[i]);
- DCHECK(child);
- entries->push_back(*child);
- }
- return entries.Pass();
-}
-
} // namespace internal
} // namespace drive
diff --git a/chrome/browser/chromeos/drive/resource_metadata.h b/chrome/browser/chromeos/drive/resource_metadata.h
index 9ac234e..68d3210 100644
--- a/chrome/browser/chromeos/drive/resource_metadata.h
+++ b/chrome/browser/chromeos/drive/resource_metadata.h
@@ -356,10 +356,6 @@ class ResourceMetadata {
// Removes the entry and its descendants.
bool RemoveEntryRecursively(const std::string& resource_id);
- // Converts the children as a vector of ResourceEntry.
- scoped_ptr<ResourceEntryVector> DirectoryChildrenToProtoVector(
- const std::string& directory_resource_id);
-
const base::FilePath data_directory_path_;
scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_;