Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4839)

Unified Diff: chrome/browser/chromeos/drive/file_system.cc

Issue 371883003: Files.app: Add an private API to get a download URL (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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) {

Powered by Google App Engine
This is Rietveld 408576698