summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkinaba@chromium.org <kinaba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-20 15:28:16 +0000
committerkinaba@chromium.org <kinaba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-20 15:28:16 +0000
commit57ff6b3c71cc5f9508fc71884ed2f234e79879ca (patch)
tree58c3920f481da66efb0fd822d1e8e00e2475bc76
parent32e88cac8f3c681e23d48bfb16ccf85f85e152b1 (diff)
downloadchromium_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
-rw-r--r--chrome/browser/chromeos/extensions/file_manager/event_router.cc7
-rw-r--r--chrome/browser/chromeos/extensions/file_manager/private_api_file_system.cc5
-rw-r--r--chrome/browser/chromeos/file_manager/fileapi_util.cc30
-rw-r--r--chrome/browser/chromeos/file_manager/fileapi_util.h4
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;
};