Merge "PolyGerrit: Add some more missing configs to gr-project"
diff --git a/polygerrit-ui/app/elements/admin/gr-project/gr-project.html b/polygerrit-ui/app/elements/admin/gr-project/gr-project.html
index aee0256..8ba27d9 100644
--- a/polygerrit-ui/app/elements/admin/gr-project/gr-project.html
+++ b/polygerrit-ui/app/elements/admin/gr-project/gr-project.html
@@ -44,10 +44,10 @@
       #loading:not(.loading) {
         display: none;
       }
-      #noteDbSettings {
+      .projectSettings {
         display: none;
       }
-      #noteDbSettings.showNoteDb {
+      .projectSettings.showConfig {
         display: block;
       }
     </style>
@@ -157,6 +157,40 @@
                   </gr-select>
                 </span>
               </section>
+              <section
+                   id="enableSignedPushSettings"
+                   class$="projectSettings [[_computeProjectsClass(_projectConfig.enable_signed_push)]]">
+                <span class="title">Enable signed push</span>
+                <span class="value">
+                  <gr-select
+                      id="enableSignedPush"
+                      bind-value="{{_projectConfig.enable_signed_push.configured_value}}">
+                    <select disabled$="[[_readOnly]]">
+                      <template is="dom-repeat"
+                          items="[[_formatBooleanSelect(_projectConfig.enable_signed_push)]]">
+                        <option value="[[item.value]]">[[item.label]]</option>
+                      </template>
+                    </select>
+                  </gr-select>
+                </span>
+              </section>
+              <section
+                   id="requireSignedPushSettings"
+                   class$="projectSettings [[_computeProjectsClass(_projectConfig.require_signed_push)]]">
+                <span class="title">Require signed push</span>
+                <span class="value">
+                  <gr-select
+                      id="requireSignedPush"
+                      bind-value="{{_projectConfig.require_signed_push.configured_value}}">
+                    <select disabled$="[[_readOnly]]">
+                      <template is="dom-repeat"
+                          items="[[_formatBooleanSelect(_projectConfig.require_signed_push)]]">
+                        <option value="[[item.value]]">[[item.label]]</option>
+                      </template>
+                    </select>
+                  </gr-select>
+                </span>
+              </section>
               <section>
                 <span class="title">
                   Reject implicit merges when changes are pushed for review</span>
@@ -173,7 +207,7 @@
                   </gr-select>
                 </span>
               </section>
-              <section id="noteDbSettings class$=[[_computeNoteDbClass(_noteDbEnabled)]]">
+              <section id="noteDbSettings" class$="projectSettings [[_computeProjectsClass(_noteDbEnabled)]]">
                 <span class="title">
                   Enable adding unregistered users as reviewers and CCs on changes</span>
                 <span class="value">
diff --git a/polygerrit-ui/app/elements/admin/gr-project/gr-project.js b/polygerrit-ui/app/elements/admin/gr-project/gr-project.js
index b54824b..06d553a 100644
--- a/polygerrit-ui/app/elements/admin/gr-project/gr-project.js
+++ b/polygerrit-ui/app/elements/admin/gr-project/gr-project.js
@@ -255,8 +255,8 @@
       return commands;
     },
 
-    _computeNoteDbClass(noteDB) {
-      return noteDB ? 'showNoteDb': '';
+    _computeProjectsClass(config) {
+      return config ? 'showConfig': '';
     },
   });
 })();
diff --git a/polygerrit-ui/app/elements/admin/gr-project/gr-project_test.html b/polygerrit-ui/app/elements/admin/gr-project/gr-project_test.html
index ce7fe80..4f9b098 100644
--- a/polygerrit-ui/app/elements/admin/gr-project/gr-project_test.html
+++ b/polygerrit-ui/app/elements/admin/gr-project/gr-project_test.html
@@ -73,6 +73,14 @@
               value: false,
               configured_value: 'FALSE',
             },
+            enable_signed_push: {
+              value: false,
+              configured_value: 'FALSE',
+            },
+            require_signed_push: {
+              value: false,
+              configured_value: 'FALSE',
+            },
             reject_implicit_merges: {
               value: false,
               configured_value: 'FALSE',
@@ -244,15 +252,16 @@
       });
 
       test('fields update and save correctly', done => {
+        // test notedb
         element._noteDbEnabled = false;
 
         assert.equal(
-            element._computeNoteDbClass(element._noteDbEnabled), '');
+            element._computeProjectsClass(element._noteDbEnabled), '');
 
         element._noteDbEnabled = true;
 
         assert.equal(
-            element._computeNoteDbClass(element._noteDbEnabled), 'showNoteDb');
+            element._computeProjectsClass(element._noteDbEnabled), 'showConfig');
 
         const configInputObj = {
           description: 'new description',
@@ -261,6 +270,8 @@
           use_signed_off_by: 'TRUE',
           create_new_change_for_all_not_in_target: 'TRUE',
           require_change_id: 'TRUE',
+          enable_signed_push: 'TRUE',
+          require_signed_push: 'TRUE',
           reject_implicit_merges: 'TRUE',
           private_by_default: 'TRUE',
           match_author_to_committer_date: 'TRUE',
@@ -289,6 +300,10 @@
               configInputObj.create_new_change_for_all_not_in_target;
           element.$.requireChangeIdSelect.bindValue =
               configInputObj.require_change_id;
+          element.$.enableSignedPush.bindValue =
+              configInputObj.enable_signed_push;
+          element.$.requireSignedPush.bindValue =
+              configInputObj.require_signed_push;
           element.$.rejectImplicitMergesSelect.bindValue =
               configInputObj.reject_implicit_merges;
           element.$.setAllnewChangesPrivateByDefaultSelect.bindValue =