diff options
author | kinaba@chromium.org <kinaba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-20 15:28:16 +0000 |
---|---|---|
committer | kinaba@chromium.org <kinaba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-20 15:28:16 +0000 |
commit | 57ff6b3c71cc5f9508fc71884ed2f234e79879ca (patch) | |
tree | 58c3920f481da66efb0fd822d1e8e00e2475bc76 | |
parent | 32e88cac8f3c681e23d48bfb16ccf85f85e152b1 (diff) | |
download | chromium_src-57ff6b3c71cc5f9508fc71884ed2f234e79879ca.zip chromium_src-57ff6b3c71cc5f9508fc71884ed2f234e79879ca.tar.gz chromium_src-57ff6b3c71cc5f9508fc71884ed2f234e79879ca.tar.bz2 |
Don't treat |is_directory| mismatch as an error in entry conversion in files.app.
BUG=374722
Review URL: https://codereview.chromium.org/296693003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@271656 0039d316-1c4b-4281-b951-d872f2087c98
4 files changed, 23 insertions, 23 deletions
diff --git a/chrome/browser/chromeos/extensions/file_manager/event_router.cc b/chrome/browser/chromeos/extensions/file_manager/event_router.cc index 8e424cf..eb40b93 100644 --- a/chrome/browser/chromeos/extensions/file_manager/event_router.cc +++ b/chrome/browser/chromeos/extensions/file_manager/event_router.cc @@ -733,9 +733,10 @@ void EventRouter::DispatchDirectoryChangeEvent( void EventRouter::DispatchDirectoryChangeEventWithEntryDefinition( bool watcher_error, const EntryDefinition& entry_definition) { - if (entry_definition.error != base::File::FILE_OK) { - DVLOG(1) << "Unable to dispatch event because resolving the entry " - << "definition failed."; + if (entry_definition.error != base::File::FILE_OK || + !entry_definition.is_directory) { + DVLOG(1) << "Unable to dispatch event because resolving the directory " + << "entry definition failed."; return; } diff --git a/chrome/browser/chromeos/extensions/file_manager/private_api_file_system.cc b/chrome/browser/chromeos/extensions/file_manager/private_api_file_system.cc index 6ffbf2c..e3fd264 100644 --- a/chrome/browser/chromeos/extensions/file_manager/private_api_file_system.cc +++ b/chrome/browser/chromeos/extensions/file_manager/private_api_file_system.cc @@ -326,6 +326,11 @@ void FileBrowserPrivateRequestFileSystemFunction::OnEntryDefinition( return; } + if (!entry_definition.is_directory) { + DidFail(base::File::FILE_ERROR_NOT_A_DIRECTORY); + return; + } + base::DictionaryValue* dict = new base::DictionaryValue(); SetResult(dict); dict->SetString("name", entry_definition.file_system_name); diff --git a/chrome/browser/chromeos/file_manager/fileapi_util.cc b/chrome/browser/chromeos/file_manager/fileapi_util.cc index b02154b..0286b58 100644 --- a/chrome/browser/chromeos/file_manager/fileapi_util.cc +++ b/chrome/browser/chromeos/file_manager/fileapi_util.cc @@ -165,28 +165,20 @@ void FileDefinitionListConverter::OnResolvedURL( return; } - // Check the entry type. - if (iterator->is_directory && - type == fileapi::FileSystemContext::RESOLVED_ENTRY_FILE) { - OnIteratorConverted(self_deleter.Pass(), - iterator, - CreateEntryDefinitionWithError( - base::File::FILE_ERROR_NOT_A_DIRECTORY)); - return; - } - if (!iterator->is_directory && - type == fileapi::FileSystemContext::RESOLVED_ENTRY_DIRECTORY) { - OnIteratorConverted(self_deleter.Pass(), - iterator, - CreateEntryDefinitionWithError( - base::File::FILE_ERROR_NOT_A_FILE)); - return; - } - EntryDefinition entry_definition; entry_definition.file_system_root_url = info.root_url.spec(); entry_definition.file_system_name = info.name; - entry_definition.is_directory = iterator->is_directory; + switch (type) { + case fileapi::FileSystemContext::RESOLVED_ENTRY_FILE: + entry_definition.is_directory = false; + break; + case fileapi::FileSystemContext::RESOLVED_ENTRY_DIRECTORY: + entry_definition.is_directory = true; + break; + case fileapi::FileSystemContext::RESOLVED_ENTRY_NOT_FOUND: + entry_definition.is_directory = iterator->is_directory; + break; + } entry_definition.error = base::File::FILE_OK; // Construct a target Entry.fullPath value from the virtual path and the diff --git a/chrome/browser/chromeos/file_manager/fileapi_util.h b/chrome/browser/chromeos/file_manager/fileapi_util.h index 8adbd09..305857a 100644 --- a/chrome/browser/chromeos/file_manager/fileapi_util.h +++ b/chrome/browser/chromeos/file_manager/fileapi_util.h @@ -43,7 +43,9 @@ struct EntryDefinition { std::string file_system_root_url; // Used to create DOMFileSystem. std::string file_system_name; // Value of DOMFileSystem.name. base::FilePath full_path; // Value of Entry.fullPath. - bool is_directory; // Whether to create FileEntry or DirectoryEntry. + // Whether to create FileEntry or DirectoryEntry when the corresponding entry + // is not found. + bool is_directory; base::File::Error error; }; |