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

Unified Diff: chrome/browser/chromeos/drive/drive_resource_metadata.cc

Issue 11227020: Set root resource ID upon full feed update. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: undo minor comment fix. Created 8 years, 2 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: chrome/browser/chromeos/drive/drive_resource_metadata.cc
diff --git a/chrome/browser/chromeos/drive/drive_resource_metadata.cc b/chrome/browser/chromeos/drive/drive_resource_metadata.cc
index a6f780c7c917e6021eb82393fd9134d30e3cd97a..5147a224debb7c4fad0778f17cce9594ed8dc9a4 100644
--- a/chrome/browser/chromeos/drive/drive_resource_metadata.cc
+++ b/chrome/browser/chromeos/drive/drive_resource_metadata.cc
@@ -198,8 +198,8 @@ DriveResourceMetadata::DriveResourceMetadata()
origin_(UNINITIALIZED),
ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) {
root_ = CreateDriveDirectory().Pass();
- if (!google_apis::util::IsDriveV2ApiEnabled())
- InitializeRootEntry(kDriveRootDirectoryResourceId);
+ root_->set_title(kDriveRootDirectory);
+ root_->SetBaseNameFromTitle();
}
DriveResourceMetadata::~DriveResourceMetadata() {
@@ -232,11 +232,9 @@ scoped_ptr<DriveDirectory> DriveResourceMetadata::CreateDriveDirectory() {
return scoped_ptr<DriveDirectory>(new DriveDirectory(this));
}
-void DriveResourceMetadata::InitializeRootEntry(const std::string& root_id) {
- root_ = CreateDriveDirectory().Pass();
- root_->set_title(kDriveRootDirectory);
- root_->SetBaseNameFromTitle();
- root_->set_resource_id(root_id);
+void DriveResourceMetadata::SetRootResourceId(const std::string& id) {
+ DCHECK(root_->resource_id().empty());
+ root_->set_resource_id(id);
AddEntryToResourceMap(root_.get());
}
@@ -244,12 +242,15 @@ void DriveResourceMetadata::ClearRoot() {
if (!root_.get())
return;
- // Note that children have a reference to root_,
- // so we need to delete them here.
- root_->RemoveChildren();
- RemoveEntryFromResourceMap(root_->resource_id());
- DCHECK(resource_map_.empty());
- resource_map_.clear();
+ // If root resource ID is not set, it means no children.
+ if (!root_->resource_id().empty()) {
satorux1 2012/10/26 06:14:36 Do we need to check? Can we just always run the sa
kochi 2012/10/26 07:35:42 No. RemoveEntryFromResourceMap DCHECK()'s empty re
satorux1 2012/10/26 07:52:44 I think we can change ClearRoot() to do something
+ // Note that children have a reference to root_,
+ // so we need to delete them here.
+ root_->RemoveChildren();
+ RemoveEntryFromResourceMap(root_->resource_id());
+ DCHECK(resource_map_.empty());
+ resource_map_.clear();
+ }
root_.reset();
}
@@ -365,7 +366,7 @@ void DriveResourceMetadata::RemoveEntryFromParent(
DCHECK(!callback.is_null());
// Disallow deletion of root.
- if (resource_id == kDriveRootDirectoryResourceId) {
+ if (resource_id == root_->resource_id()) {
PostFileMoveCallbackError(callback, DRIVE_FILE_ERROR_ACCESS_DENIED);
return;
}
@@ -652,7 +653,6 @@ void DriveResourceMetadata::InitResourceMap(
DCHECK(!resource_metadata_db_.get());
DCHECK(!callback.is_null());
-
SerializedMap* serialized_resources = &create_params->serialized_resources;
resource_metadata_db_ = create_params->db.Pass();
if (serialized_resources->empty()) {
@@ -661,6 +661,8 @@ void DriveResourceMetadata::InitResourceMap(
return;
}
+ // Save root directory resource ID as ClearRoot() resets |root_|.
+ std::string saved_root_resource_id = root_->resource_id();
ClearRoot();
// Version check.
@@ -722,7 +724,7 @@ void DriveResourceMetadata::InitResourceMap(
} else {
NOTREACHED() << "Parent is not a directory " << parent->resource_id();
}
- } else if (entry->resource_id() == kDriveRootDirectoryResourceId) {
+ } else if (entry->resource_id() == saved_root_resource_id) {
root_.reset(entry->AsDriveDirectory());
DCHECK(root_.get());
AddEntryToResourceMap(root_.get());
@@ -808,6 +810,8 @@ bool DriveResourceMetadata::ParseFromString(
}
root_->FromProto(proto.drive_directory());
+ // Root resource ID is already set from proto.
+ AddEntryToResourceMap(root_.get());
origin_ = FROM_CACHE;
largest_changestamp_ = proto.largest_changestamp();

Powered by Google App Engine
This is Rietveld 408576698