Commit 57ff6b3c authored by kinaba@chromium.org's avatar kinaba@chromium.org

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
parent 32e88cac
......@@ -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;
}
......
......@@ -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);
......
......@@ -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
......
......@@ -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;
};
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment