| 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 4f7860ab6ea65e1cf440d4733f27e34b055ca4e8..31340de5079f4590b03a9bbb9d201ce27d888dbe 100644
|
| --- a/chrome/browser/chromeos/file_manager/fileapi_util.cc
|
| +++ b/chrome/browser/chromeos/file_manager/fileapi_util.cc
|
| @@ -71,9 +71,10 @@ class FileDefinitionListConverter {
|
| // Then, calls OnIteratorConverted with the created entry definition.
|
| void OnResolvedURL(scoped_ptr<FileDefinitionListConverter> self_deleter,
|
| FileDefinitionList::const_iterator iterator,
|
| - const GURL& root_url,
|
| - const std::string& name,
|
| - base::File::Error error);
|
| + base::File::Error error,
|
| + const fileapi::FileSystemInfo& info,
|
| + const base::FilePath& file_path,
|
| + fileapi::FileSystemContext::ResolvedEntryType type);
|
|
|
| // Called when the iterator is converted. Adds the |entry_definition| to
|
| // |results_| and calls ConvertNextIterator() for the next element.
|
| @@ -132,16 +133,6 @@ void FileDefinitionListConverter::ConvertNextIterator(
|
| return;
|
| }
|
|
|
| - fileapi::ExternalFileSystemBackend* backend =
|
| - file_system_context_->external_backend();
|
| - if (!backend) {
|
| - OnIteratorConverted(self_deleter.Pass(),
|
| - iterator,
|
| - CreateEntryDefinitionWithError(
|
| - base::File::FILE_ERROR_INVALID_OPERATION));
|
| - return;
|
| - }
|
| -
|
| fileapi::FileSystemURL url = file_system_context_->CreateCrackedFileSystemURL(
|
| extensions::Extension::GetBaseURLFromExtensionId(extension_id_),
|
| fileapi::kFileSystemTypeExternal,
|
| @@ -150,13 +141,8 @@ void FileDefinitionListConverter::ConvertNextIterator(
|
|
|
| // The converter object will be deleted if the callback is not called because
|
| // of shutdown during ResolveURL().
|
| - //
|
| - // TODO(mtomasz, nhiroki): Call FileSystemContext::ResolveURL() directly,
|
| - // after removing redundant thread restrictions in there.
|
| - backend->ResolveURL(
|
| + file_system_context_->ResolveURL(
|
| url,
|
| - // Not sandboxed file systems are not creatable via ResolveURL().
|
| - fileapi::OPEN_FILE_SYSTEM_FAIL_IF_NONEXISTENT,
|
| base::Bind(&FileDefinitionListConverter::OnResolvedURL,
|
| base::Unretained(this),
|
| base::Passed(&self_deleter),
|
| @@ -166,21 +152,32 @@ void FileDefinitionListConverter::ConvertNextIterator(
|
| void FileDefinitionListConverter::OnResolvedURL(
|
| scoped_ptr<FileDefinitionListConverter> self_deleter,
|
| FileDefinitionList::const_iterator iterator,
|
| - const GURL& root_url,
|
| - const std::string& name,
|
| - base::File::Error error) {
|
| + base::File::Error error,
|
| + const fileapi::FileSystemInfo& info,
|
| + const base::FilePath& file_path,
|
| + fileapi::FileSystemContext::ResolvedEntryType type) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
|
|
| + if (error != base::File::FILE_OK) {
|
| + OnIteratorConverted(self_deleter.Pass(),
|
| + iterator,
|
| + CreateEntryDefinitionWithError(error));
|
| + return;
|
| + }
|
| +
|
| EntryDefinition entry_definition;
|
| - entry_definition.file_system_root_url = root_url.spec();
|
| - entry_definition.file_system_name = name;
|
| + entry_definition.file_system_root_url = info.root_url.spec();
|
| + entry_definition.file_system_name = info.name;
|
| + DCHECK(type == fileapi::FileSystemContext::RESOLVED_ENTRY_NOT_FOUND ||
|
| + iterator->is_directory ==
|
| + (type == fileapi::FileSystemContext::RESOLVED_ENTRY_DIRECTORY));
|
| entry_definition.is_directory = iterator->is_directory;
|
| - entry_definition.error = error;
|
| + entry_definition.error = base::File::FILE_OK;
|
|
|
| // Construct a target Entry.fullPath value from the virtual path and the
|
| // root URL. Eg. Downloads/A/b.txt -> A/b.txt.
|
| const base::FilePath root_virtual_path =
|
| - file_system_context_->CrackURL(root_url).virtual_path();
|
| + file_system_context_->CrackURL(info.root_url).virtual_path();
|
| DCHECK(root_virtual_path == iterator->virtual_path ||
|
| root_virtual_path.IsParent(iterator->virtual_path));
|
| base::FilePath full_path;
|
|
|