Chromium Code Reviews| Index: chrome/browser/chromeos/gdata/gdata_file_system.cc |
| diff --git a/chrome/browser/chromeos/gdata/gdata_file_system.cc b/chrome/browser/chromeos/gdata/gdata_file_system.cc |
| index b333cc4e705c41f953388a332606ae9a4f55689e..4e49113642b05be81c57864afab195bc20ff357b 100644 |
| --- a/chrome/browser/chromeos/gdata/gdata_file_system.cc |
| +++ b/chrome/browser/chromeos/gdata/gdata_file_system.cc |
| @@ -809,6 +809,17 @@ void RelaySetMountedStateCallback( |
| base::Bind(callback, error, file_path)); |
| } |
| +// Ditto for GetEntryInfoCallback. |
| +void RelayGetEntryInfoCallback( |
| + scoped_refptr<base::MessageLoopProxy> relay_proxy, |
| + const GetEntryInfoCallback& callback, |
| + base::PlatformFileError error, |
| + scoped_ptr<GDataEntryProto> entry_proto) { |
| + relay_proxy->PostTask( |
| + FROM_HERE, |
| + base::Bind(callback, error, base::Passed(&entry_proto))); |
| +} |
| + |
| // Ditto for GetFileInfoCallback. |
| void RelayGetFileInfoCallback( |
| scoped_refptr<base::MessageLoopProxy> relay_proxy, |
| @@ -2127,6 +2138,59 @@ void GDataFileSystem::ResumeUpload( |
| documents_service_->ResumeUpload(params, callback); |
| } |
| +void GDataFileSystem::GetEntryInfoByPathAsync( |
|
achuithb
2012/05/01 09:27:09
This is a lot of boiler plate copy and paste. Is t
satorux1
2012/05/01 16:50:41
I totally agree with you that the code is overly r
|
| + const FilePath& file_path, |
| + const GetEntryInfoCallback& callback) { |
| + if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) { |
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| + const bool posted = BrowserThread::PostTask( |
| + BrowserThread::UI, |
| + FROM_HERE, |
| + base::Bind(&GDataFileSystem::GetEntryInfoByPathAsyncOnUIThread, |
| + ui_weak_ptr_, |
| + file_path, |
| + base::Bind(&RelayGetEntryInfoCallback, |
| + base::MessageLoopProxy::current(), |
| + callback))); |
| + DCHECK(posted); |
| + return; |
| + } |
| + |
| + GetEntryInfoByPathAsyncOnUIThread(file_path, callback); |
| +} |
| + |
| +void GDataFileSystem::GetEntryInfoByPathAsyncOnUIThread( |
| + const FilePath& file_path, |
| + const GetEntryInfoCallback& callback) { |
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| + |
| + FindEntryByPathAsyncOnUIThread( |
| + file_path, |
| + base::Bind(&GDataFileSystem::OnGetEntryInfo, |
| + ui_weak_ptr_, |
| + callback)); |
| +} |
| + |
| +void GDataFileSystem::OnGetEntryInfo(const GetEntryInfoCallback& callback, |
| + base::PlatformFileError error, |
| + const FilePath& directory_path, |
| + GDataEntry* entry) { |
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| + |
| + if (error != base::PLATFORM_FILE_OK) { |
| + if (!callback.is_null()) |
| + callback.Run(error, scoped_ptr<GDataEntryProto>()); |
| + return; |
| + } |
| + DCHECK(entry); |
| + |
| + scoped_ptr<GDataEntryProto> entry_proto(new GDataEntryProto); |
| + entry->ToProto(entry_proto.get()); |
| + |
| + if (!callback.is_null()) |
| + callback.Run(base::PLATFORM_FILE_OK, entry_proto.Pass()); |
| +} |
| + |
| void GDataFileSystem::GetFileInfoByPathAsync( |
| const FilePath& file_path, |
| const GetFileInfoCallback& callback) { |
| @@ -2171,6 +2235,7 @@ void GDataFileSystem::OnGetFileInfo(const GetFileInfoCallback& callback, |
| callback.Run(error, scoped_ptr<GDataFileProto>()); |
| return; |
| } |
| + DCHECK(entry); |
| GDataFile* file = entry->AsGDataFile(); |
| if (!file) { |
| @@ -2231,6 +2296,7 @@ void GDataFileSystem::OnReadDirectory(const ReadDirectoryCallback& callback, |
| callback.Run(error, scoped_ptr<GDataDirectoryProto>()); |
| return; |
| } |
| + DCHECK(entry); |
| GDataDirectory* directory = entry->AsGDataDirectory(); |
| if (!directory) { |