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();