Chromium Code Reviews| Index: chrome/browser/chromeos/gdata/gdata_file_system_proxy.cc |
| diff --git a/chrome/browser/chromeos/gdata/gdata_file_system_proxy.cc b/chrome/browser/chromeos/gdata/gdata_file_system_proxy.cc |
| index 83c81a135430de5b2702ac647e7bdd7a3edae4cb..8eab49dd66741d2ce2f04a7771d7b4a900220f3f 100644 |
| --- a/chrome/browser/chromeos/gdata/gdata_file_system_proxy.cc |
| +++ b/chrome/browser/chromeos/gdata/gdata_file_system_proxy.cc |
| @@ -12,6 +12,7 @@ |
| #include "base/string_util.h" |
| #include "base/values.h" |
| #include "content/public/browser/browser_thread.h" |
| +#include "chrome/browser/chromeos/gdata/gdata.pb.h" |
| #include "chrome/browser/chromeos/gdata/gdata_system_service.h" |
| #include "chrome/browser/chromeos/gdata/gdata_file_system.h" |
| #include "webkit/blob/shareable_file_reference.h" |
| @@ -56,17 +57,32 @@ void CallSnapshotFileCallback( |
| namespace gdata { |
| -base::FileUtilProxy::Entry GDataEntryToFileUtilProxyEntry( |
| - const GDataEntry& gdata_entry) { |
| +void GDataGDataEntryProtoToFileUtilProxyEntry( |
|
achuithb
2012/05/01 09:21:44
GDataGData? I think one GData is sufficient?
This
satorux1
2012/05/01 17:24:31
Good catch! Fixed.
|
| + const GDataEntryProto& proto, |
| + base::FileUtilProxy::Entry* entry) { |
| + entry->name = proto.file_name(); |
| + |
| + base::PlatformFileInfo file_info; |
| + GDataEntry::ConvertProtoToPlatformFileInfo(proto.file_info(), &file_info); |
| + entry->size = file_info.size; |
| + entry->last_modified_time = file_info.last_modified; |
|
achuithb
2012/05/01 09:21:44
You should just set entry->is_directory here from
satorux1
2012/05/01 17:24:31
The code was so bad. Good to have a great code rev
|
| +} |
| + |
| +base::FileUtilProxy::Entry GDataDirectoryProtoToFileUtilProxyEntry( |
| + const GDataDirectoryProto& proto) { |
| base::FileUtilProxy::Entry entry; |
| - entry.is_directory = gdata_entry.file_info().is_directory; |
| + entry.is_directory = true; |
| - // TODO(zelidrag): Add file name modification logic to enforce uniquness of |
| - // file paths across this file system. |
| - entry.name = gdata_entry.file_name(); |
| + GDataGDataEntryProtoToFileUtilProxyEntry(proto.gdata_entry(), &entry); |
| + return entry; |
| +} |
| - entry.size = gdata_entry.file_info().size; |
| - entry.last_modified_time = gdata_entry.file_info().last_modified; |
| +base::FileUtilProxy::Entry GDataFileProtoToFileUtilProxyEntry( |
| + const GDataFileProto & proto) { |
| + base::FileUtilProxy::Entry entry; |
| + entry.is_directory = false; |
| + |
| + GDataGDataEntryProtoToFileUtilProxyEntry(proto.gdata_entry(), &entry); |
| return entry; |
| } |
| @@ -98,7 +114,7 @@ void GDataFileSystemProxy::GetFileInfo(const GURL& file_url, |
| return; |
| } |
| - file_system_->FindEntryByPathAsync( |
| + file_system_->GetEntryInfoByPathAsync( |
| file_path, |
| base::Bind(&GDataFileSystemProxy::OnGetMetadata, |
| this, |
| @@ -152,7 +168,7 @@ void GDataFileSystemProxy::ReadDirectory(const GURL& file_url, |
| return; |
| } |
| - file_system_->FindEntryByPathAsync( |
| + file_system_->ReadDirectoryByPathAsync( |
| file_path, |
| base::Bind(&GDataFileSystemProxy::OnReadDirectory, |
| this, |
| @@ -227,14 +243,19 @@ void GDataFileSystemProxy::OnGetMetadata( |
| const FilePath& file_path, |
| const FileSystemOperationInterface::GetMetadataCallback& callback, |
| base::PlatformFileError error, |
| - const FilePath& directory_path, |
| - GDataEntry* entry) { |
| + scoped_ptr<gdata::GDataEntryProto> entry_proto) { |
| if (error != base::PLATFORM_FILE_OK) { |
| callback.Run(error, base::PlatformFileInfo(), FilePath()); |
| return; |
| } |
| + DCHECK(entry_proto.get()); |
| - callback.Run(base::PLATFORM_FILE_OK, entry->file_info(), file_path); |
| + base::PlatformFileInfo file_info; |
| + GDataEntry::ConvertProtoToPlatformFileInfo( |
| + entry_proto->file_info(), |
| + &file_info); |
| + |
| + callback.Run(base::PLATFORM_FILE_OK, file_info, file_path); |
| } |
| void GDataFileSystemProxy::OnReadDirectory( |
| @@ -242,13 +263,8 @@ void GDataFileSystemProxy::OnReadDirectory( |
| const FileSystemOperationInterface::ReadDirectoryCallback& |
| callback, |
| base::PlatformFileError error, |
| - const FilePath& directory_path, |
| - GDataEntry* entry) { |
| - DCHECK(entry || error != base::PLATFORM_FILE_OK); |
| - |
| - GDataDirectory* directory = entry ? entry->AsGDataDirectory() : NULL; |
| - if (!directory && error == base::PLATFORM_FILE_OK) |
| - error = base::PLATFORM_FILE_ERROR_NOT_A_DIRECTORY; |
| + scoped_ptr<gdata::GDataDirectoryProto> directory_proto) { |
| + DCHECK(error != base::PLATFORM_FILE_OK); |
| if (error != base::PLATFORM_FILE_OK) { |
| callback.Run(error, std::vector<base::FileUtilProxy::Entry>(), false); |
| @@ -256,20 +272,15 @@ void GDataFileSystemProxy::OnReadDirectory( |
| } |
| std::vector<base::FileUtilProxy::Entry> entries; |
| // Convert gdata files to something File API stack can understand. |
| - for (GDataDirectoryCollection::const_iterator iter = |
| - directory->child_directories().begin(); |
| - iter != directory->child_directories().end(); ++iter) { |
| - entries.push_back(GDataEntryToFileUtilProxyEntry(*(iter->second))); |
| + for (int i = 0; i < directory_proto->child_directories_size(); ++i) { |
| + const GDataDirectoryProto& proto = directory_proto->child_directories(i); |
| + entries.push_back(GDataDirectoryProtoToFileUtilProxyEntry(proto)); |
| } |
| - for (GDataFileCollection::const_iterator iter = |
| - directory->child_files().begin(); |
| - iter != directory->child_files().end(); ++iter) { |
| - if (hide_hosted_documents) { |
| - GDataFile* file = iter->second; |
| - if (file->is_hosted_document()) |
| + for (int i = 0; i < directory_proto->child_files_size(); ++i) { |
| + const GDataFileProto& proto = directory_proto->child_files(i); |
| + if (hide_hosted_documents && proto.is_hosted_document()) |
| continue; |
| - } |
| - entries.push_back(GDataEntryToFileUtilProxyEntry(*(iter->second))); |
| + entries.push_back(GDataFileProtoToFileUtilProxyEntry(proto)); |
| } |
| callback.Run(base::PLATFORM_FILE_OK, entries, false); |