Chromium Code Reviews| Index: chrome/browser/chromeos/gdata/gdata_files.cc |
| =================================================================== |
| --- chrome/browser/chromeos/gdata/gdata_files.cc (revision 150448) |
| +++ chrome/browser/chromeos/gdata/gdata_files.cc (working copy) |
| @@ -324,16 +324,6 @@ |
| entry->SetParent(this); |
| } |
| -bool GDataDirectory::TakeEntry(GDataEntry* entry) { |
| - DCHECK(entry); |
| - DCHECK(entry->parent()); |
| - |
| - entry->parent()->RemoveChild(entry); |
| - AddEntry(entry); |
| - |
| - return true; |
| -} |
| - |
| bool GDataDirectory::TakeOverEntries(GDataDirectory* dir) { |
| for (GDataFileCollection::iterator iter = dir->child_files_.begin(); |
| iter != dir->child_files_.end(); ++iter) { |
| @@ -580,8 +570,15 @@ |
| void GDataDirectoryService::AddEntryToDirectory( |
| const FilePath& directory_path, |
| GDataEntry* entry, |
| - const FileOperationCallback& callback) { |
| + const FilePathUpdateCallback& callback) { |
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| + DCHECK(entry); |
| + |
| + if (entry->parent()) |
| + entry->parent()->RemoveChild(entry); |
| + |
| GDataEntry* destination = FindEntryByPathSync(directory_path); |
| + FilePath updated_file_path; |
| GDataFileError error = GDATA_FILE_ERROR_FAILED; |
| if (!destination) { |
| error = GDATA_FILE_ERROR_NOT_FOUND; |
| @@ -589,11 +586,12 @@ |
| error = GDATA_FILE_ERROR_NOT_A_DIRECTORY; |
| } else { |
| destination->AsGDataDirectory()->AddEntry(entry); |
| + updated_file_path = entry->GetFilePath(); |
| error = GDATA_FILE_OK; |
| } |
| if (!callback.is_null()) { |
| base::MessageLoopProxy::current()->PostTask( |
| - FROM_HERE, base::Bind(callback, error)); |
| + FROM_HERE, base::Bind(callback, error, updated_file_path)); |
| } |
| } |
| @@ -956,7 +954,7 @@ |
| DCHECK(!proto.gdata_entry().has_file_specific_info()); |
| for (int i = 0; i < proto.child_files_size(); ++i) { |
| - scoped_ptr<GDataFile> file(new GDataFile(this, directory_service_)); |
| + scoped_ptr<GDataFile> file(new GDataFile(NULL, directory_service_)); |
|
satorux1
2012/08/08 14:09:06
so the parent parameter was unnecessary, because A
achuithb
2012/08/08 22:08:41
I intend to, and it will be a fun patch, but I don
|
| if (!file->FromProto(proto.child_files(i))) { |
| RemoveChildren(); |
| return false; |
| @@ -964,7 +962,7 @@ |
| AddEntry(file.release()); |
| } |
| for (int i = 0; i < proto.child_directories_size(); ++i) { |
| - scoped_ptr<GDataDirectory> dir(new GDataDirectory(this, |
| + scoped_ptr<GDataDirectory> dir(new GDataDirectory(NULL, |
| directory_service_)); |
| if (!dir->FromProto(proto.child_directories(i))) { |
| RemoveChildren(); |