Index: chrome/browser/chromeos/file_manager/fileapi_util.cc |
diff --git a/chrome/browser/chromeos/file_manager/fileapi_util.cc b/chrome/browser/chromeos/file_manager/fileapi_util.cc |
index 15550c52bedbbfc99beb321a9d7924c207e1c83e..435eb8d1c4eac71e1bee95c1fb13fb9b4ce57022 100644 |
--- a/chrome/browser/chromeos/file_manager/fileapi_util.cc |
+++ b/chrome/browser/chromeos/file_manager/fileapi_util.cc |
@@ -229,6 +229,17 @@ void CheckIfDirectoryExistsOnIOThread( |
file_system_url, callback); |
} |
+// Used by GetMetadataForPath |
+void GetMetadataOnIOThread( |
+ scoped_refptr<storage::FileSystemContext> file_system_context, |
+ const GURL& url, |
+ const storage::FileSystemOperationRunner::GetMetadataCallback& callback) { |
+ DCHECK_CURRENTLY_ON(BrowserThread::IO); |
+ storage::FileSystemURL file_system_url = file_system_context->CrackURL(url); |
+ file_system_context->operation_runner()->GetMetadata(file_system_url, |
+ callback); |
+} |
+ |
// Checks if the |file_path| points non-native location or not. |
bool IsUnderNonNativeLocalPath(const storage::FileSystemContext& context, |
const base::FilePath& file_path) { |
@@ -557,9 +568,26 @@ void CheckIfDirectoryExists( |
BrowserThread::PostTask( |
BrowserThread::IO, FROM_HERE, |
- base::Bind(&CheckIfDirectoryExistsOnIOThread, |
- file_system_context, |
- url, |
+ base::Bind(&CheckIfDirectoryExistsOnIOThread, file_system_context, url, |
+ google_apis::CreateRelayCallback(callback))); |
+} |
+ |
+void GetMetadataForPath( |
+ scoped_refptr<storage::FileSystemContext> file_system_context, |
+ const GURL& url, |
+ const storage::FileSystemOperationRunner::GetMetadataCallback& callback) { |
+ DCHECK_CURRENTLY_ON(BrowserThread::UI); |
+ |
+ // Check the existence of directory using file system API implementation on |
+ // behalf of the file manager app. We need to grant access beforehand. |
+ storage::ExternalFileSystemBackend* backend = |
+ file_system_context->external_backend(); |
+ DCHECK(backend); |
+ backend->GrantFullAccessToExtension(kFileManagerAppId); |
+ |
+ BrowserThread::PostTask( |
+ BrowserThread::IO, FROM_HERE, |
+ base::Bind(&GetMetadataOnIOThread, file_system_context, url, |
google_apis::CreateRelayCallback(callback))); |
} |