Merge "Add "voting disabled" text to reply dialogue for closed CLs"
diff --git a/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog.html b/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog.html
index 1432d8c..cb6a6f9 100644
--- a/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog.html
+++ b/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog.html
@@ -208,6 +208,12 @@
         </iron-autogrow-textarea>
       </section>
       <section class="labelsContainer">
+        <template is="dom-if" if="[[_isClosed(change)]]" id="labelDisabled">
+          <div class="labelDisabledMessage">
+            Setting labels are disabled for this change because it has been
+            closed.
+          </div>
+        </template>
         <template is="dom-repeat"
             items="[[_computeLabelArray(permittedLabels)]]" as="label">
           <div class="labelContainer">
diff --git a/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog.js b/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog.js
index b3d3849..a61de4d 100644
--- a/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog.js
+++ b/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog.js
@@ -23,6 +23,8 @@
     REVIEWERS: 'reviewers',
   };
 
+  var CLOSED_CHANGE_STATUSES = ['ABANDONED', 'MERGED'];
+
   Polymer({
     is: 'gr-reply-dialog',
 
@@ -271,6 +273,10 @@
       }.bind(this));
     },
 
+    _isClosed: function(change) {
+      return CLOSED_CHANGE_STATUSES.indexOf(change.status) !== -1;
+    },
+
     _computeHideDraftList: function(drafts) {
       return Object.keys(drafts || {}).length == 0;
     },
diff --git a/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog_test.html b/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog_test.html
index 01ca076..6c77afb 100644
--- a/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog_test.html
+++ b/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog_test.html
@@ -244,6 +244,18 @@
       }).then(done);
     });
 
+    test('message disabled dialogue appears for closed change', function() {
+      element.change = {status: 'ABANDONED'};
+      flushAsynchronousOperations();
+      assert.isOk(element.$$('.labelDisabledMessage'));
+    });
+
+    test('message disabled dialogue does not appear for open change',
+        function() {
+      element.change = {status: 'NEW'};
+      assert.isNotOk(element.$$('.labelDisabledMessage'));
+    });
+
     test('_getStorageLocation', function() {
       var actual = element._getStorageLocation();
       assert.equal(actual.changeNum, changeNum);