| Index: chrome/browser/chromeos/arc/fileapi/arc_documents_provider_root.cc
|
| diff --git a/chrome/browser/chromeos/arc/fileapi/arc_documents_provider_root.cc b/chrome/browser/chromeos/arc/fileapi/arc_documents_provider_root.cc
|
| index 87cd8b468a6bbee5625dbac532e12596cd8922d3..91443f6441e5e3fdba1acfeace607466a8bea476 100644
|
| --- a/chrome/browser/chromeos/arc/fileapi/arc_documents_provider_root.cc
|
| +++ b/chrome/browser/chromeos/arc/fileapi/arc_documents_provider_root.cc
|
| @@ -78,6 +78,22 @@ void ArcDocumentsProviderRoot::ReadDirectory(
|
| weak_ptr_factory_.GetWeakPtr(), path, callback));
|
| }
|
|
|
| +void ArcDocumentsProviderRoot::ResolveToContentUrl(
|
| + const base::FilePath& path,
|
| + const ResolveToContentUrlCallback& callback) {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| + // Skip a cache update if possible.
|
| + ArcDocumentsProviderDocument* entry = root_directory_->Lookup(path);
|
| + if (entry) {
|
| + ResolveToContentUrlAfterCacheUpdate(path, callback);
|
| + return;
|
| + }
|
| + UpdateDirectoryCacheUpTo(
|
| + path,
|
| + base::Bind(&ArcDocumentsProviderRoot::ResolveToContentUrlAfterCacheUpdate,
|
| + weak_ptr_factory_.GetWeakPtr(), path, callback));
|
| +}
|
| +
|
| void ArcDocumentsProviderRoot::GetFileInfoAfterCacheUpdate(
|
| const base::FilePath& path,
|
| const GetFileInfoCallback& callback) {
|
| @@ -157,6 +173,18 @@ void ArcDocumentsProviderRoot::ReadDirectoryWithChildDocuments(
|
| callback.Run(base::File::FILE_OK, entry_list, false /* has_more */);
|
| }
|
|
|
| +void ArcDocumentsProviderRoot::ResolveToContentUrlAfterCacheUpdate(
|
| + const base::FilePath& path,
|
| + const ResolveToContentUrlCallback& callback) {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| + ArcDocumentsProviderDocument* entry = root_directory_->Lookup(path);
|
| + if (!entry) {
|
| + callback.Run(GURL());
|
| + return;
|
| + }
|
| + callback.Run(BuildDocumentUrl(authority_, entry->document_id()));
|
| +}
|
| +
|
| void ArcDocumentsProviderRoot::UpdateDirectoryCacheUpTo(
|
| const base::FilePath& path,
|
| const base::Closure& callback) {
|
|
|