Merge "Append slash to STATIC_RESOURCE_PATH"
diff --git a/plugins/codemirror-editor b/plugins/codemirror-editor
index ee50e45..53dccff 160000
--- a/plugins/codemirror-editor
+++ b/plugins/codemirror-editor
@@ -1 +1 @@
-Subproject commit ee50e45b449e282ed78917175daf8b359da8d943
+Subproject commit 53dccff17c029459999ff70ac886b80626af634b
diff --git a/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list.js b/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list.js
index 83f1565..1d3a020 100644
--- a/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list.js
+++ b/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list.js
@@ -103,8 +103,6 @@
       _filesByPath: Object,
       _files: {
         type: Array,
-        computed: '_computeFiles(_filesByPath, changeComments, patchRange, ' +
-            '_reviewed)',
         observer: '_filesChanged',
         value() { return []; },
       },
@@ -183,6 +181,8 @@
 
     observers: [
       '_expandedPathsChanged(_expandedFilePaths.splices)',
+      '_computeFiles(_filesByPath, changeComments, patchRange, _reviewed, ' +
+          '_loading)',
     ],
 
     keyBindings: {
@@ -782,13 +782,14 @@
           'gr-icons:expand-less' : 'gr-icons:expand-more';
     },
 
-    _computeFiles(filesByPath, changeComments, patchRange, reviewed) {
+    _computeFiles(filesByPath, changeComments, patchRange, reviewed, loading) {
+      // Await all promises resolving from reload. @See Issue 9057
+      if (loading) { return; }
+
       const commentedPaths = changeComments.getPaths(patchRange);
       const files = Object.assign({}, filesByPath);
       Object.keys(commentedPaths).forEach(commentedPath => {
-        if (files.hasOwnProperty(commentedPath)) {
-          return;
-        }
+        if (files.hasOwnProperty(commentedPath)) { return; }
         files[commentedPath] = {status: 'U'};
       });
       const reviewedSet = new Set(reviewed || []);
@@ -797,7 +798,7 @@
         files[filePath].isReviewed = reviewedSet.has(filePath);
       }
 
-      return this._normalizeChangeFilesResponse(files);
+      this._files = this._normalizeChangeFilesResponse(files);
     },
 
     _computeFilesShown(numFilesShown, files) {
diff --git a/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list_test.html b/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list_test.html
index 3c90a1f..0289449 100644
--- a/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list_test.html
+++ b/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list_test.html
@@ -60,9 +60,11 @@
       stub('gr-rest-api-interface', {
         getLoggedIn() { return Promise.resolve(true); },
         getPreferences() { return Promise.resolve({}); },
+        getDiffPreferences() { return Promise.resolve({}); },
         getDiffComments() { return Promise.resolve({}); },
         getDiffRobotComments() { return Promise.resolve({}); },
         getDiffDrafts() { return Promise.resolve({}); },
+        getAccountCapabilities() { return Promise.resolve({}); },
       });
       stub('gr-date-formatter', {
         _loadTimeFormat() { return Promise.resolve(''); },
@@ -85,6 +87,7 @@
             .returns({meta: {}, left: [], right: []});
         done();
       });
+      element._loading = false;
       element.diffPrefs = {};
       element.numFilesShown = 200;
       element.patchRange = {
@@ -1321,6 +1324,7 @@
             .returns({meta: {}, left: [], right: []});
         done();
       });
+      element._loading = false;
       element.numFilesShown = 75;
       element.selectedIndex = 0;
       element._filesByPath = {