Index: chrome/browser/chromeos/drive/fileapi/file_system_backend_delegate.cc |
diff --git a/chrome/browser/chromeos/drive/fileapi/file_system_backend_delegate.cc b/chrome/browser/chromeos/drive/fileapi/file_system_backend_delegate.cc |
index a191e75f4e9f3b19e12e49205a8734264116145e..ce8e263acbe0e7ec38d0f0b5fb53cfd04c107330 100644 |
--- a/chrome/browser/chromeos/drive/fileapi/file_system_backend_delegate.cc |
+++ b/chrome/browser/chromeos/drive/fileapi/file_system_backend_delegate.cc |
@@ -7,6 +7,7 @@ |
#include "base/bind.h" |
#include "base/files/file_path.h" |
#include "base/memory/scoped_ptr.h" |
+#include "chrome/browser/chromeos/drive/file_system_interface.h" |
#include "chrome/browser/chromeos/drive/file_system_util.h" |
#include "chrome/browser/chromeos/drive/fileapi/async_file_util.h" |
#include "chrome/browser/chromeos/drive/fileapi/fileapi_worker.h" |
@@ -22,6 +23,40 @@ |
using content::BrowserThread; |
namespace drive { |
+namespace { |
+ |
+void GetURLForBrowserTabOnUIThreadWithResourceEntry( |
mtomasz
2014/09/04 05:30:01
nit: Comments are missing. Especially we should co
hirono
2014/09/04 06:10:58
Done.
|
+ const FileSystemBackendDelegate::URLCallback& callback, |
+ FileError error, |
+ scoped_ptr<ResourceEntry> entry) { |
+ DCHECK_CURRENTLY_ON(BrowserThread::UI); |
+ GURL url; |
+ if (error == FILE_ERROR_OK && entry->has_file_specific_info() && |
+ entry->file_specific_info().is_hosted_document()) { |
+ url = GURL(entry->file_specific_info().alternate_url()); |
+ } |
+ BrowserThread::PostTask( |
+ BrowserThread::IO, FROM_HERE, base::Bind(callback, url)); |
+} |
+ |
+void GetURLForBrowserTabOnUIThread( |
+ const storage::FileSystemURL& url, |
+ const FileSystemBackendDelegate::URLCallback& callback) { |
+ DCHECK_CURRENTLY_ON(BrowserThread::UI); |
+ FileSystemInterface* const file_system = |
+ fileapi_internal::GetFileSystemFromUrl(url); |
+ if (!file_system) { |
+ BrowserThread::PostTask( |
+ BrowserThread::IO, FROM_HERE, base::Bind(callback, GURL())); |
+ return; |
+ } |
+ const base::FilePath file_path = util::ExtractDrivePathFromFileSystemUrl(url); |
+ file_system->GetResourceEntry( |
+ file_path, |
+ base::Bind(&GetURLForBrowserTabOnUIThreadWithResourceEntry, callback)); |
+ |
mtomasz
2014/09/04 05:30:01
nit: The empty line should be one line lower?
hirono
2014/09/04 06:10:58
Done.
|
+} |
+} // namespace |
FileSystemBackendDelegate::FileSystemBackendDelegate() |
: async_file_util_(new internal::AsyncFileUtil) { |
@@ -86,4 +121,14 @@ storage::WatcherManager* FileSystemBackendDelegate::GetWatcherManager( |
return NULL; |
} |
+void FileSystemBackendDelegate::GetURLForBrowserTab( |
+ const storage::FileSystemURL& url, |
+ const URLCallback& callback) { |
+ DCHECK_CURRENTLY_ON(BrowserThread::IO); |
+ BrowserThread::PostTask( |
+ BrowserThread::UI, |
+ FROM_HERE, |
+ base::Bind(&GetURLForBrowserTabOnUIThread, url, callback)); |
+} |
+ |
} // namespace drive |