PolyGerrit: Remove support for drafts

Note that this removes drafts for patches, comments as drafts are still
supported.

Bug: Issue 7210
Change-Id: Idf2069bd38a62996d58ff515b7e27444bbe3b708
diff --git a/polygerrit-ui/app/behaviors/rest-client-behavior/rest-client-behavior.html b/polygerrit-ui/app/behaviors/rest-client-behavior/rest-client-behavior.html
index 928de04..a6106e4 100644
--- a/polygerrit-ui/app/behaviors/rest-client-behavior/rest-client-behavior.html
+++ b/polygerrit-ui/app/behaviors/rest-client-behavior/rest-client-behavior.html
@@ -34,7 +34,6 @@
 
     ChangeStatus: {
       ABANDONED: 'ABANDONED',
-      DRAFT: 'DRAFT',
       MERGED: 'MERGED',
       NEW: 'NEW',
     },
@@ -117,8 +116,7 @@
     },
 
     changeIsOpen(status) {
-      return status === this.ChangeStatus.NEW ||
-          status === this.ChangeStatus.DRAFT;
+      return status === this.ChangeStatus.NEW;
     },
 
     changeStatusString(change) {
@@ -133,7 +131,6 @@
       }
       if (change.work_in_progress) { states.push('WIP'); }
       if (change.is_private) { states.push('Private'); }
-      if (change.status === this.ChangeStatus.DRAFT) { states.push('Draft'); }
       return states.join(', ');
     },
   },
diff --git a/polygerrit-ui/app/elements/change-list/gr-change-list/gr-change-list_test.html b/polygerrit-ui/app/elements/change-list/gr-change-list/gr-change-list_test.html
index 704606c..093e302 100644
--- a/polygerrit-ui/app/elements/change-list/gr-change-list/gr-change-list_test.html
+++ b/polygerrit-ui/app/elements/change-list/gr-change-list/gr-change-list_test.html
@@ -214,11 +214,6 @@
         },
         {
           _number: 3,
-          status: 'DRAFT',
-          owner: {_account_id: 42},
-        },
-        {
-          _number: 4,
           status: 'ABANDONED',
           owner: {_account_id: 0},
         },
@@ -226,7 +221,7 @@
       flushAsynchronousOperations();
       let elementItems = Polymer.dom(element.root).querySelectorAll(
           'gr-change-list-item');
-      assert.equal(elementItems.length, 5);
+      assert.equal(elementItems.length, 4);
       for (let i = 0; i < elementItems.length; i++) {
         assert.isFalse(elementItems[i].hasAttribute('needs-review'));
       }
@@ -234,22 +229,20 @@
       element.showReviewedState = true;
       elementItems = Polymer.dom(element.root).querySelectorAll(
           'gr-change-list-item');
-      assert.equal(elementItems.length, 5);
-      assert.isFalse(elementItems[0].hasAttribute('needs-review'));
-      assert.isTrue(elementItems[1].hasAttribute('needs-review'));
-      assert.isFalse(elementItems[2].hasAttribute('needs-review'));
-      assert.isTrue(elementItems[3].hasAttribute('needs-review'));
-      assert.isFalse(elementItems[4].hasAttribute('needs-review'));
-
-      element.account = {_account_id: 42};
-      elementItems = Polymer.dom(element.root).querySelectorAll(
-          'gr-change-list-item');
-      assert.equal(elementItems.length, 5);
+      assert.equal(elementItems.length, 4);
       assert.isFalse(elementItems[0].hasAttribute('needs-review'));
       assert.isTrue(elementItems[1].hasAttribute('needs-review'));
       assert.isFalse(elementItems[2].hasAttribute('needs-review'));
       assert.isFalse(elementItems[3].hasAttribute('needs-review'));
-      assert.isFalse(elementItems[4].hasAttribute('needs-review'));
+
+      element.account = {_account_id: 42};
+      elementItems = Polymer.dom(element.root).querySelectorAll(
+          'gr-change-list-item');
+      assert.equal(elementItems.length, 4);
+      assert.isFalse(elementItems[0].hasAttribute('needs-review'));
+      assert.isTrue(elementItems[1].hasAttribute('needs-review'));
+      assert.isFalse(elementItems[2].hasAttribute('needs-review'));
+      assert.isFalse(elementItems[3].hasAttribute('needs-review'));
     });
 
     test('no changes', () => {
@@ -464,11 +457,6 @@
         },
         {
           _number: 1,
-          status: 'DRAFT',
-          owner: {_account_id: 42},
-        },
-        {
-          _number: 2,
           status: 'ABANDONED',
           owner: {_account_id: 0},
         },
@@ -476,7 +464,7 @@
       element.account = {_account_id: 42};
       flushAsynchronousOperations();
       const items = element._getListItems();
-      assert.equal(items.length, 3);
+      assert.equal(items.length, 2);
       for (let i = 0; i < items.length; i++) {
         assert.equal(items[i].hasAttribute('assigned'),
             items[i]._account_id === element.account._account_id);
diff --git a/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.js b/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.js
index 5657cbe..f69e393 100644
--- a/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.js
+++ b/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.js
@@ -69,8 +69,6 @@
   // TODO(andybons): Add the rest of the revision actions.
   const RevisionActions = {
     CHERRYPICK: 'cherrypick',
-    DELETE: '/',
-    PUBLISH: 'publish',
     REBASE: 'rebase',
     SUBMIT: 'submit',
     DOWNLOAD: 'download',
@@ -81,7 +79,6 @@
     cherrypick: 'Cherry-Picking...',
     delete: 'Deleting...',
     move: 'Moving..',
-    publish: 'Publishing...',
     rebase: 'Rebasing...',
     restore: 'Restoring...',
     revert: 'Reverting...',
@@ -186,7 +183,6 @@
         type: Array,
         value() {
           return [
-            RevisionActions.PUBLISH,
             RevisionActions.SUBMIT,
           ];
         },
@@ -251,10 +247,6 @@
             },
             {
               type: ActionType.REVISION,
-              key: RevisionActions.DELETE,
-            },
-            {
-              type: ActionType.REVISION,
               key: RevisionActions.CHERRYPICK,
             },
             {
@@ -623,8 +615,6 @@
           // more explicit to the user.
           if (type === ActionType.CHANGE) {
             actions[a].label += ' Change';
-          } else if (type === ActionType.REVISION) {
-            actions[a].label += ' Revision';
           }
         }
         // Triggers a re-render by ensuring object inequality.
@@ -747,9 +737,6 @@
         case RevisionActions.REBASE:
           this._showActionDialog(this.$.confirmRebase);
           break;
-        case RevisionActions.DELETE:
-          this._handleDeleteConfirm();
-          break;
         case RevisionActions.CHERRYPICK:
           this._handleCherrypickTap();
           break;
@@ -953,11 +940,8 @@
             });
             break;
           case ChangeActions.DELETE:
-          case RevisionActions.DELETE:
             if (action.__type === ActionType.CHANGE) {
               page.show('/');
-            } else {
-              page.show(this.changePath(this.changeNum));
             }
             break;
           case ChangeActions.WIP:
diff --git a/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions_test.html b/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions_test.html
index 2c252eb..e099170 100644
--- a/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions_test.html
+++ b/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions_test.html
@@ -42,25 +42,19 @@
       stub('gr-rest-api-interface', {
         getChangeRevisionActions() {
           return Promise.resolve({
-            '/': {
-              method: 'DELETE',
-              label: 'Delete',
-              title: 'Delete draft revision 2',
-              enabled: true,
-            },
-            'cherrypick': {
+            cherrypick: {
               method: 'POST',
               label: 'Cherry Pick',
               title: 'Cherry pick change to a different branch',
               enabled: true,
             },
-            'rebase': {
+            rebase: {
               method: 'POST',
               label: 'Rebase',
               title: 'Rebase onto tip of branch or parent change',
               enabled: true,
             },
-            'submit': {
+            submit: {
               method: 'POST',
               label: 'Submit',
               title: 'Submit patch set 2 into master',
@@ -94,8 +88,8 @@
       element.actions = {
         '/': {
           method: 'DELETE',
-          label: 'Delete',
-          title: 'Delete draft change 42',
+          label: 'Delete Change',
+          title: 'Delete change X_X',
           enabled: true,
         },
       };
@@ -141,42 +135,13 @@
       });
     });
 
-    test('hide menu action', done => {
-      flush(() => {
-        const buttonEl =
-            element.$.moreActions.$$('span[data-id="delete-revision"]');
-        assert.isOk(buttonEl);
-        assert.throws(element.setActionHidden.bind(element, 'invalid type'));
-        element.setActionHidden(element.ActionType.CHANGE,
-            element.ChangeActions.DELETE, true);
-        assert.lengthOf(element._hiddenActions, 1);
-        element.setActionHidden(element.ActionType.CHANGE,
-            element.ChangeActions.DELETE, true);
-        assert.lengthOf(element._hiddenActions, 1);
-        flush(() => {
-          const buttonEl =
-              element.$.moreActions.$$('span[data-id="delete-revision"]');
-          assert.isNotOk(buttonEl);
-
-          element.setActionHidden(element.ActionType.CHANGE,
-              element.RevisionActions.DELETE, false);
-          flush(() => {
-            const buttonEl =
-                element.$.moreActions.$$('span[data-id="delete-revision"]');
-            assert.isOk(buttonEl);
-            done();
-          });
-        });
-      });
-    });
-
     test('buttons exist', done => {
       element._loading = false;
       flush(() => {
         const buttonEls = Polymer.dom(element.root)
             .querySelectorAll('gr-button');
         const menuItems = element.$.moreActions.items;
-        assert.equal(buttonEls.length + menuItems.length, 7);
+        assert.equal(buttonEls.length + menuItems.length, 6);
         assert.isFalse(element.hidden);
         done();
       });
@@ -187,16 +152,11 @@
         const deleteItems = element.$.moreActions.items.filter(item => {
           return item.id.startsWith('delete');
         });
-        assert.equal(deleteItems.length, 2);
-        assert.notEqual(deleteItems[0].name, deleteItems[1].name);
+        assert.equal(deleteItems.length, 1);
+        assert.notEqual(deleteItems[0].name);
         assert.isTrue(
-            deleteItems[0].name === 'Delete Revision' ||
             deleteItems[0].name === 'Delete Change'
         );
-        assert.isTrue(
-            deleteItems[1].name === 'Delete Revision' ||
-            deleteItems[1].name === 'Delete Change'
-        );
         done();
       });
     });
@@ -1181,7 +1141,7 @@
         flushAsynchronousOperations();
         assert.isNotOk(element.$$('[data-action-key="submit"]'));
         assert.strictEqual(
-            element.$.moreActions.items[4].id, 'submit-revision');
+            element.$.moreActions.items[3].id, 'submit-revision');
       });
 
       suite('_waitForChangeReachable', () => {
diff --git a/polygerrit-ui/app/elements/change/gr-change-metadata/gr-change-metadata_test.html b/polygerrit-ui/app/elements/change/gr-change-metadata/gr-change-metadata_test.html
index 634e21c..28e38d1 100644
--- a/polygerrit-ui/app/elements/change/gr-change-metadata/gr-change-metadata_test.html
+++ b/polygerrit-ui/app/elements/change/gr-change-metadata/gr-change-metadata_test.html
@@ -52,7 +52,6 @@
 
     test('computed fields', () => {
       assert.isFalse(element._computeHideStrategy({status: 'NEW'}));
-      assert.isFalse(element._computeHideStrategy({status: 'DRAFT'}));
       assert.isTrue(element._computeHideStrategy({status: 'MERGED'}));
       assert.isTrue(element._computeHideStrategy({status: 'ABANDONED'}));
       assert.equal(element._computeStrategy({submit_type: 'CHERRY_PICK'}),
diff --git a/polygerrit-ui/app/elements/change/gr-related-changes-list/gr-related-changes-list.js b/polygerrit-ui/app/elements/change/gr-related-changes-list/gr-related-changes-list.js
index 39c736d..780dca2 100644
--- a/polygerrit-ui/app/elements/change/gr-related-changes-list/gr-related-changes-list.js
+++ b/polygerrit-ui/app/elements/change/gr-related-changes-list/gr-related-changes-list.js
@@ -212,8 +212,6 @@
           return 'Merged';
         case this.ChangeStatus.ABANDONED:
           return 'Abandoned';
-        case this.ChangeStatus.DRAFT:
-          return 'Draft';
       }
       if (change._revision_number != change._current_revision_number) {
         return 'Not current';
diff --git a/polygerrit-ui/app/elements/core/gr-main-header/gr-main-header_test.html b/polygerrit-ui/app/elements/core/gr-main-header/gr-main-header_test.html
index 3f45bbf..5da8382 100644
--- a/polygerrit-ui/app/elements/core/gr-main-header/gr-main-header_test.html
+++ b/polygerrit-ui/app/elements/core/gr-main-header/gr-main-header_test.html
@@ -54,11 +54,9 @@
 
     test('fix my menu item', () => {
       assert.deepEqual([
-        {url: '#/q/owner:self+is:draft'},
         {url: 'https://awesometown.com/#hashyhash'},
         {url: 'url', target: '_blank'},
       ].map(element._fixMyMenuItem), [
-        {url: '/q/owner:self+is:draft', external: true},
         {url: 'https://awesometown.com/#hashyhash', external: true},
         {url: 'url', external: true},
       ]);
@@ -66,12 +64,10 @@
 
     test('filter unsupported urls', () => {
       assert.deepEqual([
-        {url: '/q/owner:self+is:draft'},
         {url: '/c/331788/'},
         {url: '/groups/self'},
         {url: 'https://awesometown.com/#hashyhash'},
       ].filter(element._isSupportedLink), [
-        {url: '/q/owner:self+is:draft'},
         {url: '/c/331788/'},
         {url: 'https://awesometown.com/#hashyhash'},
       ]);
diff --git a/polygerrit-ui/app/elements/core/gr-search-bar/gr-search-bar.js b/polygerrit-ui/app/elements/core/gr-search-bar/gr-search-bar.js
index 41241a4..3605e1d 100644
--- a/polygerrit-ui/app/elements/core/gr-search-bar/gr-search-bar.js
+++ b/polygerrit-ui/app/elements/core/gr-search-bar/gr-search-bar.js
@@ -45,7 +45,6 @@
     'is:',
     'is:abandoned',
     'is:closed',
-    'is:draft',
     'is:ignored',
     'is:mergeable',
     'is:merged',
@@ -75,7 +74,6 @@
     'status:',
     'status:abandoned',
     'status:closed',
-    'status:draft',
     'status:merged',
     'status:open',
     'status:pending',