Use comment's collapsed state if set

Default to the same as before when not set

Change-Id: Ie1ee844ec29c5d4425762f9de18a730dfa9c8f7a
diff --git a/polygerrit-ui/app/elements/shared/gr-comment-thread/gr-comment-thread.js b/polygerrit-ui/app/elements/shared/gr-comment-thread/gr-comment-thread.js
index f4e4d80..ccfc44c 100644
--- a/polygerrit-ui/app/elements/shared/gr-comment-thread/gr-comment-thread.js
+++ b/polygerrit-ui/app/elements/shared/gr-comment-thread/gr-comment-thread.js
@@ -295,7 +295,9 @@
         // False if it's an unresolved comment under UNRESOLVED_EXPAND_COUNT.
         const resolvedThread = !this.unresolved ||
               this._orderedComments.length - i - 1 >= UNRESOLVED_EXPAND_COUNT;
-        comment.collapsed = !isRobotComment && resolvedThread;
+        if (comment.collapsed === undefined) {
+          comment.collapsed = !isRobotComment && resolvedThread;
+        }
       }
     }
   }
diff --git a/polygerrit-ui/app/elements/shared/gr-comment-thread/gr-comment-thread_test.html b/polygerrit-ui/app/elements/shared/gr-comment-thread/gr-comment-thread_test.html
index d7c493c..a6a5767 100644
--- a/polygerrit-ui/app/elements/shared/gr-comment-thread/gr-comment-thread_test.html
+++ b/polygerrit-ui/app/elements/shared/gr-comment-thread/gr-comment-thread_test.html
@@ -646,17 +646,23 @@
       assert.isTrue(element.unresolved);
     });
 
-    test('_setInitialExpandedState', () => {
+    test('_setInitialExpandedState with unresolved', () => {
       element.unresolved = true;
       element._setInitialExpandedState();
       for (let i = 0; i < element.comments.length; i++) {
         assert.isFalse(element.comments[i].collapsed);
       }
+    });
+
+    test('_setInitialExpandedState without unresolved', () => {
       element.unresolved = false;
       element._setInitialExpandedState();
       for (let i = 0; i < element.comments.length; i++) {
         assert.isTrue(element.comments[i].collapsed);
       }
+    });
+
+    test('_setInitialExpandedState with robot_ids', () => {
       for (let i = 0; i < element.comments.length; i++) {
         element.comments[i].robot_id = 123;
       }
@@ -665,6 +671,16 @@
         assert.isFalse(element.comments[i].collapsed);
       }
     });
+
+    test('_setInitialExpandedState with collapsed state', () => {
+      element.comments[0].collapsed = false;
+      element.unresolved = false;
+      element._setInitialExpandedState();
+      assert.isFalse(element.comments[0].collapsed);
+      for (let i = 1; i < element.comments.length; i++) {
+        assert.isTrue(element.comments[i].collapsed);
+      }
+    });
   });
 
   test('_computeHostClass', () => {