| Index: chrome/browser/chromeos/drive/file_system.cc
|
| diff --git a/chrome/browser/chromeos/drive/file_system.cc b/chrome/browser/chromeos/drive/file_system.cc
|
| index 3665383d7290dd1fdeb6b8635e7ede6a08e25e78..244b3428fbf2192f3aed41e3b8846053c530e590 100644
|
| --- a/chrome/browser/chromeos/drive/file_system.cc
|
| +++ b/chrome/browser/chromeos/drive/file_system.cc
|
| @@ -693,7 +693,7 @@ void FileSystem::OnGetAboutResource(
|
|
|
| void FileSystem::GetShareUrl(const base::FilePath& file_path,
|
| const GURL& embed_origin,
|
| - const GetShareUrlCallback& callback) {
|
| + const GetUrlCallback& callback) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| DCHECK(!callback.is_null());
|
|
|
| @@ -717,7 +717,7 @@ void FileSystem::GetShareUrl(const base::FilePath& file_path,
|
| void FileSystem::GetShareUrlAfterGetResourceEntry(
|
| const base::FilePath& file_path,
|
| const GURL& embed_origin,
|
| - const GetShareUrlCallback& callback,
|
| + const GetUrlCallback& callback,
|
| ResourceEntry* entry,
|
| FileError error) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| @@ -743,7 +743,7 @@ void FileSystem::GetShareUrlAfterGetResourceEntry(
|
| }
|
|
|
| void FileSystem::OnGetResourceEntryForGetShareUrl(
|
| - const GetShareUrlCallback& callback,
|
| + const GetUrlCallback& callback,
|
| google_apis::GDataErrorCode status,
|
| const GURL& share_url) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| @@ -763,6 +763,73 @@ void FileSystem::OnGetResourceEntryForGetShareUrl(
|
| callback.Run(FILE_ERROR_OK, share_url);
|
| }
|
|
|
| +void FileSystem::GetDownloadUrl(const base::FilePath& file_path,
|
| + const GetUrlCallback& callback) {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| + DCHECK(!callback.is_null());
|
| +
|
| + // Resolve the resource id.
|
| + ResourceEntry* entry = new ResourceEntry;
|
| + base::PostTaskAndReplyWithResult(
|
| + blocking_task_runner_.get(),
|
| + FROM_HERE,
|
| + base::Bind(&internal::ResourceMetadata::GetResourceEntryByPath,
|
| + base::Unretained(resource_metadata_),
|
| + file_path,
|
| + entry),
|
| + base::Bind(&FileSystem::GetDownloadUrlAfterGetResourceEntry,
|
| + weak_ptr_factory_.GetWeakPtr(),
|
| + file_path,
|
| + callback,
|
| + base::Owned(entry)));
|
| +}
|
| +
|
| +void FileSystem::GetDownloadUrlAfterGetResourceEntry(
|
| + const base::FilePath& file_path,
|
| + const GetUrlCallback& callback,
|
| + ResourceEntry* entry,
|
| + FileError error) {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| + DCHECK(!callback.is_null());
|
| +
|
| + if (error != FILE_ERROR_OK) {
|
| + callback.Run(error, GURL());
|
| + return;
|
| + }
|
| + if (entry->resource_id().empty()) {
|
| + // This entry does not exist on the server. Just return.
|
| + callback.Run(FILE_ERROR_FAILED, GURL());
|
| + return;
|
| + }
|
| +
|
| + scheduler_->GetFileResource(
|
| + entry->resource_id(),
|
| + base::Bind(&FileSystem::OnGetFileResourceForGetDownloadUrl,
|
| + weak_ptr_factory_.GetWeakPtr(),
|
| + callback));
|
| +}
|
| +
|
| +void FileSystem::OnGetFileResourceForGetDownloadUrl(
|
| + const GetUrlCallback& callback,
|
| + google_apis::GDataErrorCode status,
|
| + scoped_ptr<google_apis::FileResource> file_resource) {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| + DCHECK(!callback.is_null());
|
| +
|
| + FileError error = GDataToFileError(status);
|
| + if (error != FILE_ERROR_OK) {
|
| + callback.Run(error, GURL());
|
| + return;
|
| + }
|
| +
|
| + if (file_resource->download_url().is_empty()) {
|
| + callback.Run(FILE_ERROR_FAILED, GURL());
|
| + return;
|
| + }
|
| +
|
| + callback.Run(FILE_ERROR_OK, file_resource->download_url());
|
| +}
|
| +
|
| void FileSystem::Search(const std::string& search_query,
|
| const GURL& next_link,
|
| const SearchCallback& callback) {
|
|
|