| 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 4587bf1dd67d48c7f01648ed5c31e89b5b11064c..7581569e9901df2000fb2393aed382b4cf656320 100644
|
| --- a/chrome/browser/chromeos/drive/drive_resource_metadata.cc
|
| +++ b/chrome/browser/chromeos/drive/drive_resource_metadata.cc
|
| @@ -185,9 +185,6 @@ DriveResourceMetadata::DriveResourceMetadata()
|
| largest_changestamp_(0),
|
| origin_(UNINITIALIZED),
|
| ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) {
|
| - root_ = CreateDriveDirectory().Pass();
|
| - if (!google_apis::util::IsDriveV2ApiEnabled())
|
| - InitializeRootEntry(kDriveRootDirectoryResourceId);
|
| }
|
|
|
| DriveResourceMetadata::~DriveResourceMetadata() {
|
| @@ -221,6 +218,7 @@ scoped_ptr<DriveDirectory> DriveResourceMetadata::CreateDriveDirectory() {
|
| }
|
|
|
| void DriveResourceMetadata::InitializeRootEntry(const std::string& root_id) {
|
| + DCHECK(!root_.get());
|
| root_ = CreateDriveDirectory().Pass();
|
| root_->set_title(kDriveRootDirectory);
|
| root_->SetBaseNameFromTitle();
|
| @@ -353,7 +351,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;
|
| }
|
| @@ -611,6 +609,7 @@ void DriveResourceMetadata::InitFromDB(
|
| DCHECK(!db_path.empty());
|
| DCHECK(blocking_task_runner);
|
| DCHECK(!callback.is_null());
|
| + DCHECK(!root_->resource_id().empty());
|
|
|
| if (resource_metadata_db_.get()) {
|
| callback.Run(DRIVE_FILE_ERROR_IN_USE);
|
| @@ -641,7 +640,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()) {
|
| @@ -650,6 +648,7 @@ void DriveResourceMetadata::InitResourceMap(
|
| return;
|
| }
|
|
|
| + std::string saved_root_resource_id = root_->resource_id();
|
| ClearRoot();
|
|
|
| // Version check.
|
| @@ -710,7 +709,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());
|
| @@ -772,6 +771,10 @@ void DriveResourceMetadata::SaveToDB() {
|
| serialized_resources));
|
| }
|
|
|
| +const std::string DriveResourceMetadata::root_resource_id() const {
|
| + return root_.get() ? root_->resource_id() : std::string();
|
| +}
|
| +
|
| void DriveResourceMetadata::SerializeToString(
|
| std::string* serialized_proto) const {
|
| DriveRootDirectoryProto proto;
|
|
|