Files app: Fix VolumeEntry to not raise error when rootEntry isn't resolved
I faced errors in "isDirectory" during manual tests.
Change-Id: I73fe8b23c3d6dc3bf947fd51083a4cfde8597cda
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1701022
Commit-Queue: Luciano Pacheco <lucmult@chromium.org>
Reviewed-by: Noel Gordon <noel@chromium.org>
Auto-Submit: Luciano Pacheco <lucmult@chromium.org>
Cr-Commit-Position: refs/heads/master@{#677610}
diff --git a/ui/file_manager/file_manager/common/js/files_app_entry_types.js b/ui/file_manager/file_manager/common/js/files_app_entry_types.js
index e17267bd..a4bc583 100644
--- a/ui/file_manager/file_manager/common/js/files_app_entry_types.js
+++ b/ui/file_manager/file_manager/common/js/files_app_entry_types.js
@@ -488,11 +488,11 @@
}
/**
- * @return {!FileSystem} FileSystem for this volume.
+ * @return {?FileSystem} FileSystem for this volume.
* This method is defined on Entry.
*/
get filesystem() {
- return this.rootEntry_.filesystem;
+ return this.rootEntry_ ? this.rootEntry_.filesystem : null;
}
/**
@@ -511,13 +511,16 @@
* @override.
*/
get fullPath() {
- return this.rootEntry_.fullPath;
+ return this.rootEntry_ ? this.rootEntry_.fullPath : '';
}
get isDirectory() {
- return this.rootEntry_.isDirectory;
+ // Defaults to true if root entry isn't resolved yet, because a VolumeEntry
+ // is like a directory.
+ return this.rootEntry_ ? this.rootEntry_.isDirectory : true;
}
get isFile() {
- return this.rootEntry_.isFile;
+ // Defaults to false if root entry isn't resolved yet.
+ return this.rootEntry_ ? this.rootEntry_.isFile : false;
}
/**
@@ -564,7 +567,7 @@
* @override
*/
toURL() {
- return this.rootEntry_.toURL();
+ return this.rootEntry_ ? this.rootEntry_.toURL() : '';
}
/**
diff --git a/ui/file_manager/file_manager/common/js/files_app_entry_types_unittest.js b/ui/file_manager/file_manager/common/js/files_app_entry_types_unittest.js
index d7572b7..869c860 100644
--- a/ui/file_manager/file_manager/common/js/files_app_entry_types_unittest.js
+++ b/ui/file_manager/file_manager/common/js/files_app_entry_types_unittest.js
@@ -417,6 +417,12 @@
const crostini = fakeVolumeEntry(VolumeManagerCommon.VolumeType.CROSTINI);
const android = fakeVolumeEntry(VolumeManagerCommon.VolumeType.ANDROID_FILES);
+ assertEquals(null, volumeEntry.filesystem);
+ assertEquals('', volumeEntry.fullPath);
+ assertEquals('', volumeEntry.toURL());
+ assertTrue(volumeEntry.isDirectory);
+ assertFalse(volumeEntry.isFile);
+
volumeEntry.addEntry(crostini);
volumeEntry.addEntry(android);
const reader = volumeEntry.createReader();