Add ability to hide actions via the experimental plugin API The use case for this is that some projects may not want to have the submit or cherry-pick buttons visible since they cause confusion with users. Change-Id: Id823cd2711ace9a4e7473a791521132b56d8f034
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 bbd51e2..e091651 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
@@ -97,6 +97,64 @@ return element.reload(); }); + test('hide revision action', function(done) { + flush(function() { + var buttonEl = element.$$('[data-action-key="submit"]'); + assert.isOk(buttonEl); + assert.isFalse(buttonEl.hasAttribute('hidden')); + assert.throws(element.setActionHidden.bind(element, 'invalid type')); + element.setActionHidden(element.ActionType.REVISION, + element.RevisionActions.SUBMIT, true); + assert.lengthOf(element._hiddenRevisionActions, 1); + element.setActionHidden(element.ActionType.REVISION, + element.RevisionActions.SUBMIT, true); + assert.lengthOf(element._hiddenRevisionActions, 1); + flush(function() { + var buttonEl = element.$$('[data-action-key="submit"]'); + assert.isOk(buttonEl); + assert.isTrue(buttonEl.hasAttribute('hidden')); + + element.setActionHidden(element.ActionType.REVISION, + element.RevisionActions.SUBMIT, false); + flush(function() { + var buttonEl = element.$$('[data-action-key="submit"]'); + assert.isOk(buttonEl); + assert.isFalse(buttonEl.hasAttribute('hidden')); + done(); + }); + }); + }); + }); + + test('hide change action', function(done) { + flush(function() { + var buttonEl = element.$$('[data-action-key="/"]'); + assert.isOk(buttonEl); + assert.isFalse(buttonEl.hasAttribute('hidden')); + assert.throws(element.setActionHidden.bind(element, 'invalid type')); + element.setActionHidden(element.ActionType.CHANGE, + element.ChangeActions.DELETE, true); + assert.lengthOf(element._hiddenChangeActions, 1); + element.setActionHidden(element.ActionType.CHANGE, + element.ChangeActions.DELETE, true); + assert.lengthOf(element._hiddenChangeActions, 1); + flush(function() { + var buttonEl = element.$$('[data-action-key="/"]'); + assert.isOk(buttonEl); + assert.isTrue(buttonEl.hasAttribute('hidden')); + + element.setActionHidden(element.ActionType.CHANGE, + element.RevisionActions.DELETE, false); + flush(function() { + var buttonEl = element.$$('[data-action-key="/"]'); + assert.isOk(buttonEl); + assert.isFalse(buttonEl.hasAttribute('hidden')); + done(); + }); + }); + }); + }); + test('buttons show', function(done) { flush(function() { var buttonEls = Polymer.dom(element.root).querySelectorAll('gr-button');