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

Unified Diff: chrome/browser/chromeos/gdata/gdata_files.cc

Issue 10855243: child_files_ and child_directories_ have resource_ids instead of GDataFile* and GDataDirectory*. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: rebase Created 8 years, 4 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 | « chrome/browser/chromeos/gdata/gdata_files.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/chromeos/gdata/gdata_files.cc
===================================================================
--- chrome/browser/chromeos/gdata/gdata_files.cc (revision 152392)
+++ chrome/browser/chromeos/gdata/gdata_files.cc (working copy)
@@ -217,7 +217,7 @@
FilePath full_file_name(entry->base_name());
const std::string extension = full_file_name.Extension();
const std::string file_name = full_file_name.RemoveExtension().value();
- while (FindChild(full_file_name.value())) {
+ while (!FindChild(full_file_name.value()).empty()) {
if (!extension.empty()) {
full_file_name = FilePath(base::StringPrintf("%s (%d)%s",
file_name.c_str(),
@@ -240,32 +240,38 @@
directory_service_->AddEntryToResourceMap(entry);
// Setup child and parent links.
- AddChild(entry);
+ if (entry->AsGDataFile())
+ child_files_.insert(std::make_pair(entry->base_name(),
+ entry->resource_id()));
+
+ if (entry->AsGDataDirectory())
+ child_directories_.insert(std::make_pair(entry->base_name(),
+ entry->resource_id()));
entry->SetParent(this);
}
-bool GDataDirectory::TakeOverEntries(GDataDirectory* dir) {
- for (GDataFileCollection::const_iterator iter = dir->child_files_.begin();
+void GDataDirectory::TakeOverEntries(GDataDirectory* dir) {
+ for (GDataChildMap::const_iterator iter = dir->child_files_.begin();
iter != dir->child_files_.end(); ++iter) {
- GDataEntry* entry = iter->second;
- directory_service_->RemoveEntryFromResourceMap(entry->resource_id());
- entry->SetParent(NULL);
- AddEntry(entry);
+ TakeOverEntry(iter->second);
}
dir->child_files_.clear();
- for (GDataDirectoryCollection::iterator iter =
- dir->child_directories_.begin();
+ for (GDataChildMap::iterator iter = dir->child_directories_.begin();
iter != dir->child_directories_.end(); ++iter) {
- GDataEntry* entry = iter->second;
- directory_service_->RemoveEntryFromResourceMap(entry->resource_id());
- entry->SetParent(NULL);
- AddEntry(entry);
+ TakeOverEntry(iter->second);
}
dir->child_directories_.clear();
- return true;
}
+void GDataDirectory::TakeOverEntry(const std::string& resource_id) {
+ GDataEntry* entry = directory_service_->GetEntryByResourceId(resource_id);
+ DCHECK(entry);
+ directory_service_->RemoveEntryFromResourceMap(resource_id);
+ entry->SetParent(NULL);
+ AddEntry(entry);
+}
+
void GDataDirectory::RemoveEntry(GDataEntry* entry) {
DCHECK(entry);
@@ -273,38 +279,25 @@
delete entry;
}
-GDataEntry* GDataDirectory::FindChild(
+std::string GDataDirectory::FindChild(
const FilePath::StringType& file_name) const {
- GDataFileCollection::const_iterator iter = child_files_.find(file_name);
+ GDataChildMap::const_iterator iter = child_files_.find(file_name);
if (iter != child_files_.end())
return iter->second;
- GDataDirectoryCollection::const_iterator itd =
- child_directories_.find(file_name);
- if (itd != child_directories_.end())
- return itd->second;
+ iter = child_directories_.find(file_name);
+ if (iter != child_directories_.end())
+ return iter->second;
- return NULL;
+ return std::string();
}
-void GDataDirectory::AddChild(GDataEntry* entry) {
- DCHECK(entry);
-
- if (entry->AsGDataFile())
- child_files_.insert(std::make_pair(entry->base_name(),
- entry->AsGDataFile()));
-
- if (entry->AsGDataDirectory())
- child_directories_.insert(std::make_pair(entry->base_name(),
- entry->AsGDataDirectory()));
-}
-
void GDataDirectory::RemoveChild(GDataEntry* entry) {
DCHECK(entry);
const std::string& base_name(entry->base_name());
// entry must be present in this directory.
- DCHECK_EQ(entry, FindChild(base_name));
+ DCHECK_EQ(entry->resource_id(), FindChild(base_name));
// Remove entry from resource map first.
directory_service_->RemoveEntryFromResourceMap(entry->resource_id());
@@ -322,32 +315,38 @@
void GDataDirectory::RemoveChildFiles() {
DVLOG(1) << "RemoveChildFiles " << resource_id();
- for (GDataFileCollection::const_iterator iter = child_files_.begin();
+ for (GDataChildMap::const_iterator iter = child_files_.begin();
iter != child_files_.end(); ++iter) {
- directory_service_->RemoveEntryFromResourceMap(iter->second->resource_id());
+ GDataEntry* child = directory_service_->GetEntryByResourceId(iter->second);
+ DCHECK(child);
+ directory_service_->RemoveEntryFromResourceMap(iter->second);
+ delete child;
}
- STLDeleteValues(&child_files_);
child_files_.clear();
}
void GDataDirectory::RemoveChildDirectories() {
- for (GDataDirectoryCollection::iterator iter = child_directories_.begin();
+ for (GDataChildMap::iterator iter = child_directories_.begin();
iter != child_directories_.end(); ++iter) {
- GDataDirectory* dir = iter->second;
+ GDataDirectory* dir = directory_service_->GetEntryByResourceId(
+ iter->second)->AsGDataDirectory();
+ DCHECK(dir);
// Remove directories recursively.
dir->RemoveChildren();
- directory_service_->RemoveEntryFromResourceMap(dir->resource_id());
+ directory_service_->RemoveEntryFromResourceMap(iter->second);
+ delete dir;
}
- STLDeleteValues(&child_directories_);
child_directories_.clear();
}
void GDataDirectory::GetChildDirectoryPaths(std::set<FilePath>* child_dirs) {
- for (GDataDirectoryCollection::const_iterator it = child_directories_.begin();
- it != child_directories_.end(); ++it) {
- GDataDirectory* child_dir = it->second;
- child_dirs->insert(child_dir->GetFilePath());
- child_dir->GetChildDirectoryPaths(child_dirs);
+ for (GDataChildMap::const_iterator iter = child_directories_.begin();
+ iter != child_directories_.end(); ++iter) {
+ GDataDirectory* dir = directory_service_->GetEntryByResourceId(
+ iter->second)->AsGDataDirectory();
+ DCHECK(dir);
+ child_dirs->insert(dir->GetFilePath());
+ dir->GetChildDirectoryPaths(child_dirs);
}
}
@@ -470,33 +469,35 @@
GDataEntry::ToProto(proto->mutable_gdata_entry());
DCHECK(proto->gdata_entry().file_info().is_directory());
- for (GDataFileCollection::const_iterator iter = child_files_.begin();
+ for (GDataChildMap::const_iterator iter = child_files_.begin();
iter != child_files_.end(); ++iter) {
- GDataFile* file = iter->second;
+ GDataFile* file = directory_service_->GetEntryByResourceId(
+ iter->second)->AsGDataFile();
+ DCHECK(file);
file->ToProto(proto->add_child_files());
}
- for (GDataDirectoryCollection::const_iterator iter =
- child_directories_.begin();
+ for (GDataChildMap::const_iterator iter = child_directories_.begin();
iter != child_directories_.end(); ++iter) {
- GDataDirectory* dir = iter->second;
+ GDataDirectory* dir = directory_service_->GetEntryByResourceId(
+ iter->second)->AsGDataDirectory();
+ DCHECK(dir);
dir->ToProto(proto->add_child_directories());
}
}
scoped_ptr<GDataEntryProtoVector> GDataDirectory::ToProtoVector() const {
scoped_ptr<GDataEntryProtoVector> entries(new GDataEntryProtoVector);
- for (GDataFileCollection::const_iterator iter = child_files_.begin();
+ // Use ToProtoFull, as we don't want to include children in |proto|.
+ for (GDataChildMap::const_iterator iter = child_files_.begin();
iter != child_files_.end(); ++iter) {
GDataEntryProto proto;
- iter->second->ToProto(&proto);
+ directory_service_->GetEntryByResourceId(iter->second)->ToProtoFull(&proto);
entries->push_back(proto);
}
- for (GDataDirectoryCollection::const_iterator iter =
- child_directories_.begin();
+ for (GDataChildMap::const_iterator iter = child_directories_.begin();
iter != child_directories_.end(); ++iter) {
GDataEntryProto proto;
- // Convert to GDataEntry, as we don't want to include children in |proto|.
- static_cast<const GDataEntry*>(iter->second)->ToProtoFull(&proto);
+ directory_service_->GetEntryByResourceId(iter->second)->ToProtoFull(&proto);
entries->push_back(proto);
}
« no previous file with comments | « chrome/browser/chromeos/gdata/gdata_files.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698