From c82baba7344d78d390f82f1e135c56453a51477f Mon Sep 17 00:00:00 2001 From: Ole Rehmsen Date: Thu, 16 May 2019 14:43:01 +0200 Subject: [PATCH] Set `composed: true` on all bubbled events In Polymer 2, and when using native shadow DOM, events that do not have `composed: true` set do not cross shadow DOM boundaries. I cross checked and all these events seem to be handled outside of the component that fires them, so they need this. Change-Id: Iee8d2d545f3b1ea0bfb624648637fd190b952feb --- .../gr-access-section/gr-access-section.js | 10 +++--- .../gr-group-members/gr-group-members.js | 1 + .../admin/gr-permission/gr-permission.js | 13 +++++--- .../admin/gr-repo-access/gr-repo-access.js | 7 ++-- .../admin/gr-repo-command/gr-repo-command.js | 3 +- .../gr-repo-commands/gr-repo-commands.js | 10 +++--- .../gr-repo-plugin-config.js | 4 +-- .../gr-repo-plugin-config_test.html | 3 +- .../admin/gr-rule-editor/gr-rule-editor.js | 10 +++--- .../gr-change-list-item.js | 1 + .../gr-create-change-help.js | 3 +- .../gr-account-entry/gr-account-entry.js | 4 +-- .../change/gr-account-list/gr-account-list.js | 7 ++-- .../gr-change-metadata/gr-change-metadata.js | 10 +++--- .../gr-change-view/gr-change-view_test.html | 28 +++++++++++----- .../gr-label-score-row/gr-label-score-row.js | 3 +- .../elements/change/gr-message/gr-message.js | 1 + .../gr-reply-dialog-it_test.html | 3 +- .../change/gr-reply-dialog/gr-reply-dialog.js | 5 ++- .../gr-reply-dialog/gr-reply-dialog_test.html | 2 +- .../diff/gr-diff-builder/gr-diff-builder.html | 11 ++++--- .../gr-diff-highlight_test.html | 12 +++---- .../diff/gr-diff-host/gr-diff-host.js | 21 ++++++++---- .../diff/gr-diff-host/gr-diff-host_test.html | 6 ++-- .../app/elements/diff/gr-diff/gr-diff.js | 17 ++++++---- .../elements/diff/gr-diff/gr-diff_test.html | 2 +- .../gr-ranged-comment-layer.js | 1 + .../gr-default-editor/gr-default-editor.js | 5 +-- .../gr-default-editor_test.html | 2 +- .../gr-edit-file-controls.js | 5 +-- .../edit/gr-editor-view/gr-editor-view.js | 24 ++++++++++---- .../gr-editor-view/gr-editor-view_test.html | 2 +- .../settings/gr-cla-view/gr-cla-view.js | 16 ++++++--- .../gr-settings-view/gr-settings-view.js | 1 + .../shared/gr-change-star/gr-change-star.js | 1 + .../elements/shared/gr-comment/gr-comment.js | 33 ++++++++++++++----- .../gr-editable-content.js | 7 ++-- 37 files changed, 192 insertions(+), 102 deletions(-) diff --git a/polygerrit-ui/app/elements/admin/gr-access-section/gr-access-section.js b/polygerrit-ui/app/elements/admin/gr-access-section/gr-access-section.js index 6adf127f79..41ce201e29 100644 --- a/polygerrit-ui/app/elements/admin/gr-access-section/gr-access-section.js +++ b/polygerrit-ui/app/elements/admin/gr-access-section/gr-access-section.js @@ -95,7 +95,8 @@ // For a new section, this is not fired because new permissions and // rules have to be added in order to save, modifying the ref is not // enough. - this.dispatchEvent(new CustomEvent('access-modified', {bubbles: true})); + this.dispatchEvent(new CustomEvent( + 'access-modified', {bubbles: true, composed: true})); } this.section.value.updatedId = this.section.id; }, @@ -199,12 +200,13 @@ _handleRemoveReference() { if (this.section.value.added) { - this.dispatchEvent(new CustomEvent('added-section-removed', - {bubbles: true})); + this.dispatchEvent(new CustomEvent( + 'added-section-removed', {bubbles: true, composed: true})); } this._deleted = true; this.section.value.deleted = true; - this.dispatchEvent(new CustomEvent('access-modified', {bubbles: true})); + this.dispatchEvent( + new CustomEvent('access-modified', {bubbles: true, composed: true})); }, _handleUndoRemove() { diff --git a/polygerrit-ui/app/elements/admin/gr-group-members/gr-group-members.js b/polygerrit-ui/app/elements/admin/gr-group-members/gr-group-members.js index 76bd55817b..8a262b8f3e 100644 --- a/polygerrit-ui/app/elements/admin/gr-group-members/gr-group-members.js +++ b/polygerrit-ui/app/elements/admin/gr-group-members/gr-group-members.js @@ -205,6 +205,7 @@ this.dispatchEvent(new CustomEvent('show-alert', { detail: {message: SAVING_ERROR_TEXT}, bubbles: true, + composed: true, })); return err; } diff --git a/polygerrit-ui/app/elements/admin/gr-permission/gr-permission.js b/polygerrit-ui/app/elements/admin/gr-permission/gr-permission.js index a131f4f997..1c408df4c4 100644 --- a/polygerrit-ui/app/elements/admin/gr-permission/gr-permission.js +++ b/polygerrit-ui/app/elements/admin/gr-permission/gr-permission.js @@ -137,17 +137,19 @@ _handleValueChange() { this.permission.value.modified = true; // Allows overall access page to know a change has been made. - this.dispatchEvent(new CustomEvent('access-modified', {bubbles: true})); + this.dispatchEvent( + new CustomEvent('access-modified', {bubbles: true, composed: true})); }, _handleRemovePermission() { if (this.permission.value.added) { - this.dispatchEvent(new CustomEvent('added-permission-removed', - {bubbles: true})); + this.dispatchEvent(new CustomEvent( + 'added-permission-removed', {bubbles: true, composed: true})); } this._deleted = true; this.permission.value.deleted = true; - this.dispatchEvent(new CustomEvent('access-modified', {bubbles: true})); + this.dispatchEvent( + new CustomEvent('access-modified', {bubbles: true, composed: true})); }, _handleRulesChanged(changeRecord) { @@ -273,7 +275,8 @@ const value = this._rules[this._rules.length - 1].value; value.added = true; this.set(['permission', 'value', 'rules', groupId], value); - this.dispatchEvent(new CustomEvent('access-modified', {bubbles: true})); + this.dispatchEvent( + new CustomEvent('access-modified', {bubbles: true, composed: true})); }, _computeHasRange(name) { diff --git a/polygerrit-ui/app/elements/admin/gr-repo-access/gr-repo-access.js b/polygerrit-ui/app/elements/admin/gr-repo-access/gr-repo-access.js index 713bf02796..7d2890adad 100644 --- a/polygerrit-ui/app/elements/admin/gr-repo-access/gr-repo-access.js +++ b/polygerrit-ui/app/elements/admin/gr-repo-access/gr-repo-access.js @@ -406,8 +406,11 @@ if (!Object.keys(addRemoveObj.add).length && !Object.keys(addRemoveObj.remove).length && !addRemoveObj.parent) { - this.dispatchEvent(new CustomEvent('show-alert', - {detail: {message: NOTHING_TO_SAVE}, bubbles: true})); + this.dispatchEvent(new CustomEvent('show-alert', { + detail: {message: NOTHING_TO_SAVE}, + bubbles: true, + composed: true, + })); return; } const obj = { diff --git a/polygerrit-ui/app/elements/admin/gr-repo-command/gr-repo-command.js b/polygerrit-ui/app/elements/admin/gr-repo-command/gr-repo-command.js index e0becaf68c..04d97810ae 100644 --- a/polygerrit-ui/app/elements/admin/gr-repo-command/gr-repo-command.js +++ b/polygerrit-ui/app/elements/admin/gr-repo-command/gr-repo-command.js @@ -34,7 +34,8 @@ */ _onCommandTap() { - this.dispatchEvent(new CustomEvent('command-tap', {bubbles: true})); + this.dispatchEvent( + new CustomEvent('command-tap', {bubbles: true, composed: true})); }, }); })(); diff --git a/polygerrit-ui/app/elements/admin/gr-repo-commands/gr-repo-commands.js b/polygerrit-ui/app/elements/admin/gr-repo-commands/gr-repo-commands.js index 92b11fc5ca..169672aa0a 100644 --- a/polygerrit-ui/app/elements/admin/gr-repo-commands/gr-repo-commands.js +++ b/polygerrit-ui/app/elements/admin/gr-repo-commands/gr-repo-commands.js @@ -75,8 +75,9 @@ _handleRunningGC() { return this.$.restAPI.runRepoGC(this.repo).then(response => { if (response.status === 200) { - this.dispatchEvent(new CustomEvent('show-alert', - {detail: {message: GC_MESSAGE}, bubbles: true})); + this.dispatchEvent(new CustomEvent( + 'show-alert', + {detail: {message: GC_MESSAGE}, bubbles: true, composed: true})); } }); }, @@ -100,8 +101,9 @@ const message = change ? CREATE_CHANGE_SUCCEEDED_MESSAGE : CREATE_CHANGE_FAILED_MESSAGE; - this.dispatchEvent(new CustomEvent('show-alert', - {detail: {message}, bubbles: true})); + this.dispatchEvent(new CustomEvent( + 'show-alert', + {detail: {message}, bubbles: true, composed: true})); if (!change) { return; } Gerrit.Nav.navigateToRelativeUrl(Gerrit.Nav.getEditUrlForDiff( diff --git a/polygerrit-ui/app/elements/admin/gr-repo-plugin-config/gr-repo-plugin-config.js b/polygerrit-ui/app/elements/admin/gr-repo-plugin-config/gr-repo-plugin-config.js index 6d7677e4bf..883a4e1ef7 100644 --- a/polygerrit-ui/app/elements/admin/gr-repo-plugin-config/gr-repo-plugin-config.js +++ b/polygerrit-ui/app/elements/admin/gr-repo-plugin-config/gr-repo-plugin-config.js @@ -123,8 +123,8 @@ notifyPath: `${name}.${notifyPath}`, }; - this.dispatchEvent(new CustomEvent(this.PLUGIN_CONFIG_CHANGED, - {detail, bubbles: true})); + this.dispatchEvent(new CustomEvent( + this.PLUGIN_CONFIG_CHANGED, {detail, bubbles: true, composed: true})); }, }); })(); diff --git a/polygerrit-ui/app/elements/admin/gr-repo-plugin-config/gr-repo-plugin-config_test.html b/polygerrit-ui/app/elements/admin/gr-repo-plugin-config/gr-repo-plugin-config_test.html index 2af20437f6..37f43f47a1 100644 --- a/polygerrit-ui/app/elements/admin/gr-repo-plugin-config/gr-repo-plugin-config_test.html +++ b/polygerrit-ui/app/elements/admin/gr-repo-plugin-config/gr-repo-plugin-config_test.html @@ -151,7 +151,8 @@ limitations under the License. const select = element.$$('select'); assert.ok(select); select.value = 'newTest'; - select.dispatchEvent(new Event('change', {bubbles: true})); + select.dispatchEvent(new Event( + 'change', {bubbles: true, composed: true})); flushAsynchronousOperations(); assert.isTrue(buildStub.called); diff --git a/polygerrit-ui/app/elements/admin/gr-rule-editor/gr-rule-editor.js b/polygerrit-ui/app/elements/admin/gr-rule-editor/gr-rule-editor.js index a45b391cfb..41027475b0 100644 --- a/polygerrit-ui/app/elements/admin/gr-rule-editor/gr-rule-editor.js +++ b/polygerrit-ui/app/elements/admin/gr-rule-editor/gr-rule-editor.js @@ -210,12 +210,13 @@ _handleRemoveRule() { if (this.rule.value.added) { - this.dispatchEvent(new CustomEvent('added-rule-removed', - {bubbles: true})); + this.dispatchEvent(new CustomEvent( + 'added-rule-removed', {bubbles: true, composed: true})); } this._deleted = true; this.rule.value.deleted = true; - this.dispatchEvent(new CustomEvent('access-modified', {bubbles: true})); + this.dispatchEvent( + new CustomEvent('access-modified', {bubbles: true, composed: true})); }, _handleUndoRemove() { @@ -237,7 +238,8 @@ if (!this._originalRuleValues) { return; } this.rule.value.modified = true; // Allows overall access page to know a change has been made. - this.dispatchEvent(new CustomEvent('access-modified', {bubbles: true})); + this.dispatchEvent( + new CustomEvent('access-modified', {bubbles: true, composed: true})); }, _setOriginalRuleValues(value) { diff --git a/polygerrit-ui/app/elements/change-list/gr-change-list-item/gr-change-list-item.js b/polygerrit-ui/app/elements/change-list/gr-change-list-item/gr-change-list-item.js index ecc7532a89..5d15d603c0 100644 --- a/polygerrit-ui/app/elements/change-list/gr-change-list-item/gr-change-list-item.js +++ b/polygerrit-ui/app/elements/change-list/gr-change-list-item/gr-change-list-item.js @@ -214,6 +214,7 @@ this.set('change.reviewed', newVal); this.dispatchEvent(new CustomEvent('toggle-reviewed', { bubbles: true, + composed: true, detail: {change: this.change, reviewed: newVal}, })); }, diff --git a/polygerrit-ui/app/elements/change-list/gr-create-change-help/gr-create-change-help.js b/polygerrit-ui/app/elements/change-list/gr-create-change-help/gr-create-change-help.js index 42d7bd768d..b9df583bff 100644 --- a/polygerrit-ui/app/elements/change-list/gr-create-change-help/gr-create-change-help.js +++ b/polygerrit-ui/app/elements/change-list/gr-create-change-help/gr-create-change-help.js @@ -29,7 +29,8 @@ _handleCreateTap(e) { e.preventDefault(); - this.dispatchEvent(new CustomEvent('create-tap', {bubbles: true})); + this.dispatchEvent( + new CustomEvent('create-tap', {bubbles: true, composed: true})); }, }); })(); diff --git a/polygerrit-ui/app/elements/change/gr-account-entry/gr-account-entry.js b/polygerrit-ui/app/elements/change/gr-account-entry/gr-account-entry.js index fc0b6333f7..147d1f2d07 100644 --- a/polygerrit-ui/app/elements/change/gr-account-entry/gr-account-entry.js +++ b/polygerrit-ui/app/elements/change/gr-account-entry/gr-account-entry.js @@ -118,8 +118,8 @@ _inputTextChanged(text) { if (text.length && this.allowAnyInput) { - this.dispatchEvent(new CustomEvent('account-text-changed', - {bubbles: true})); + this.dispatchEvent(new CustomEvent( + 'account-text-changed', {bubbles: true, composed: true})); } }, diff --git a/polygerrit-ui/app/elements/change/gr-account-list/gr-account-list.js b/polygerrit-ui/app/elements/change/gr-account-list/gr-account-list.js index 533ae0979e..c10f3d5ad7 100644 --- a/polygerrit-ui/app/elements/change/gr-account-list/gr-account-list.js +++ b/polygerrit-ui/app/elements/change/gr-account-list/gr-account-list.js @@ -123,8 +123,11 @@ // Repopulate the input with what the user tried to enter and have // a toast tell them why they can't enter it. this.$.entry.setText(reviewer); - this.dispatchEvent(new CustomEvent('show-alert', - {detail: {message: VALID_EMAIL_ALERT}, bubbles: true})); + this.dispatchEvent(new CustomEvent('show-alert', { + detail: {message: VALID_EMAIL_ALERT}, + bubbles: true, + composed: true, + })); return false; } else { const account = {email: reviewer, _pendingAdd: true}; diff --git a/polygerrit-ui/app/elements/change/gr-change-metadata/gr-change-metadata.js b/polygerrit-ui/app/elements/change/gr-change-metadata/gr-change-metadata.js index 8ca81469fe..60f0dc29f4 100644 --- a/polygerrit-ui/app/elements/change/gr-change-metadata/gr-change-metadata.js +++ b/polygerrit-ui/app/elements/change/gr-change-metadata/gr-change-metadata.js @@ -221,8 +221,8 @@ this._settingTopic = false; this.set(['change', 'topic'], newTopic); if (newTopic !== lastTopic) { - this.dispatchEvent( - new CustomEvent('topic-changed', {bubbles: true})); + this.dispatchEvent(new CustomEvent( + 'topic-changed', {bubbles: true, composed: true})); } }); }, @@ -246,8 +246,8 @@ this.change._number, {add: [newHashtag]}).then(newHashtag => { this.set(['change', 'hashtags'], newHashtag); if (newHashtag !== lastHashtag) { - this.dispatchEvent( - new CustomEvent('hashtag-changed', {bubbles: true})); + this.dispatchEvent(new CustomEvent( + 'hashtag-changed', {bubbles: true, composed: true})); } }); }, @@ -378,7 +378,7 @@ target.disabled = false; this.set(['change', 'topic'], ''); this.dispatchEvent( - new CustomEvent('topic-changed', {bubbles: true})); + new CustomEvent('topic-changed', {bubbles: true, composed: true})); }).catch(err => { target.disabled = false; return; diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.html b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.html index a5adba7339..89d799b387 100644 --- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.html +++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.html @@ -1599,32 +1599,44 @@ limitations under the License. sandbox.stub(Gerrit.Nav, 'navigateToRelativeUrl'); // Delete - fileList.dispatchEvent(new CustomEvent('file-action-tap', - {detail: {action: Actions.DELETE.id, path: 'foo'}, bubbles: true})); + fileList.dispatchEvent(new CustomEvent('file-action-tap', { + detail: {action: Actions.DELETE.id, path: 'foo'}, + bubbles: true, + composed: true, + })); flushAsynchronousOperations(); assert.isTrue(controls.openDeleteDialog.called); assert.equal(controls.openDeleteDialog.lastCall.args[0], 'foo'); // Restore - fileList.dispatchEvent(new CustomEvent('file-action-tap', - {detail: {action: Actions.RESTORE.id, path: 'foo'}, bubbles: true})); + fileList.dispatchEvent(new CustomEvent('file-action-tap', { + detail: {action: Actions.RESTORE.id, path: 'foo'}, + bubbles: true, + composed: true, + })); flushAsynchronousOperations(); assert.isTrue(controls.openRestoreDialog.called); assert.equal(controls.openRestoreDialog.lastCall.args[0], 'foo'); // Rename - fileList.dispatchEvent(new CustomEvent('file-action-tap', - {detail: {action: Actions.RENAME.id, path: 'foo'}, bubbles: true})); + fileList.dispatchEvent(new CustomEvent('file-action-tap', { + detail: {action: Actions.RENAME.id, path: 'foo'}, + bubbles: true, + composed: true, + })); flushAsynchronousOperations(); assert.isTrue(controls.openRenameDialog.called); assert.equal(controls.openRenameDialog.lastCall.args[0], 'foo'); // Open - fileList.dispatchEvent(new CustomEvent('file-action-tap', - {detail: {action: Actions.OPEN.id, path: 'foo'}, bubbles: true})); + fileList.dispatchEvent(new CustomEvent('file-action-tap', { + detail: {action: Actions.OPEN.id, path: 'foo'}, + bubbles: true, + composed: true, + })); flushAsynchronousOperations(); assert.isTrue(Gerrit.Nav.getEditUrlForDiff.called); diff --git a/polygerrit-ui/app/elements/change/gr-label-score-row/gr-label-score-row.js b/polygerrit-ui/app/elements/change/gr-label-score-row/gr-label-score-row.js index d9b961fd98..fe28a1d1cc 100644 --- a/polygerrit-ui/app/elements/change/gr-label-score-row/gr-label-score-row.js +++ b/polygerrit-ui/app/elements/change/gr-label-score-row/gr-label-score-row.js @@ -133,7 +133,8 @@ const name = e.target.selectedItem.name; const value = e.target.selectedItem.getAttribute('value'); this.dispatchEvent(new CustomEvent( - 'labels-changed', {detail: {name, value}, bubbles: true})); + 'labels-changed', + {detail: {name, value}, bubbles: true, composed: true})); }, _computeAnyPermittedLabelValues(permittedLabels, label) { diff --git a/polygerrit-ui/app/elements/change/gr-message/gr-message.js b/polygerrit-ui/app/elements/change/gr-message/gr-message.js index 837ffe0d49..a2ec28c8b2 100644 --- a/polygerrit-ui/app/elements/change/gr-message/gr-message.js +++ b/polygerrit-ui/app/elements/change/gr-message/gr-message.js @@ -228,6 +228,7 @@ e.preventDefault(); this.dispatchEvent(new CustomEvent('message-anchor-tap', { bubbles: true, + composed: true, detail: {id: this.message.id}, })); }, diff --git a/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog-it_test.html b/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog-it_test.html index eb06b0f681..71012494ab 100644 --- a/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog-it_test.html +++ b/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog-it_test.html @@ -150,7 +150,8 @@ limitations under the License. flush(() => { const textarea = element.$.textarea.getNativeTextarea(); textarea.value = 'LGTM'; - textarea.dispatchEvent(new CustomEvent('input', {bubbles: true})); + textarea.dispatchEvent(new CustomEvent( + 'input', {bubbles: true, composed: true})); const labelScoreRows = Polymer.dom(element.$.labelScores.root) .querySelector('gr-label-score-row[name="Code-Review"]'); const selectedBtn = Polymer.dom(labelScoreRows.root) 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 84c8ceede9..f775e1cef2 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 @@ -749,6 +749,7 @@ if (this._sendDisabled) { this.dispatchEvent(new CustomEvent('show-alert', { bubbles: true, + composed: true, detail: {message: EMPTY_REPLY_MESSAGE}, })); return; @@ -756,9 +757,11 @@ return this.send(this._includeComments, this.canBeStarted) .then(keepReviewers => { this._purgeReviewersPendingRemove(false, keepReviewers); - }).catch(err => { + }) + .catch(err => { this.dispatchEvent(new CustomEvent('show-error', { bubbles: true, + composed: true, detail: {message: `Error submitting review ${err}`}, })); }); 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 f9108c75fd..aec3491898 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 @@ -415,7 +415,7 @@ limitations under the License. assert.isTrue(element.$$('#ccs').allowAnyInput); assert.isFalse(element.$$('#reviewers').allowAnyInput); element.$$('#ccs').dispatchEvent(new CustomEvent('account-text-changed', - {bubbles: true})); + {bubbles: true, composed: true})); assert.isTrue(element._reviewersMutated); }); diff --git a/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder.html b/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder.html index 7bfec005db..42fb567628 100644 --- a/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder.html +++ b/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder.html @@ -179,7 +179,8 @@ limitations under the License. const isBinary = !!(this.isImageDiff || this.diff.binary); - this.dispatchEvent(new CustomEvent('render-start', {bubbles: true})); + this.dispatchEvent(new CustomEvent( + 'render-start', {bubbles: true, composed: true})); this._cancelableRenderPromise = util.makeCancelable( this.$.processor.process(this.diff.content, isBinary) .then(() => { @@ -187,7 +188,7 @@ limitations under the License. this._builder.renderDiff(); } this.dispatchEvent(new CustomEvent('render-content', - {bubbles: true})); + {bubbles: true, composed: true})); if (this._diffTooLargeForSyntax()) { this.$.syntaxLayer.enabled = false; @@ -196,8 +197,8 @@ limitations under the License. return this.$.syntaxLayer.process(); }) .then(() => { - this.dispatchEvent( - new CustomEvent('render-syntax', {bubbles: true})); + this.dispatchEvent(new CustomEvent( + 'render-syntax', {bubbles: true, composed: true})); })); return this._cancelableRenderPromise .finally(() => { this._cancelableRenderPromise = null; }) @@ -313,7 +314,7 @@ limitations under the License. this.dispatchEvent(new CustomEvent('show-alert', { detail: { message, - }, bubbles: true})); + }, bubbles: true, composed: true})); throw Error(`Invalid preference value: ${pref}`); }, diff --git a/polygerrit-ui/app/elements/diff/gr-diff-highlight/gr-diff-highlight_test.html b/polygerrit-ui/app/elements/diff/gr-diff-highlight/gr-diff-highlight_test.html index 9ec2b2906a..191d1d29eb 100644 --- a/polygerrit-ui/app/elements/diff/gr-diff-highlight/gr-diff-highlight_test.html +++ b/polygerrit-ui/app/elements/diff/gr-diff-highlight/gr-diff-highlight_test.html @@ -179,8 +179,8 @@ limitations under the License. element.commentRanges = [{side: 'right'}]; sandbox.stub(element, 'set'); - threadEl.dispatchEvent( - new CustomEvent('comment-thread-mouseenter', {bubbles: true})); + threadEl.dispatchEvent(new CustomEvent( + 'comment-thread-mouseenter', {bubbles: true, composed: true})); assert.isFalse(element.set.called); }); @@ -204,8 +204,8 @@ limitations under the License. }}]; sandbox.stub(element, 'set'); - threadEl.dispatchEvent( - new CustomEvent('comment-thread-mouseenter', {bubbles: true})); + threadEl.dispatchEvent(new CustomEvent( + 'comment-thread-mouseenter', {bubbles: true, composed: true})); assert.isTrue(element.set.called); const args = element.set.lastCall.args; assert.deepEqual(args[0], ['commentRanges', 0, 'hovering']); @@ -221,8 +221,8 @@ limitations under the License. element.commentRanges = [{side: 'right'}]; sandbox.stub(element, 'set'); - threadEl.dispatchEvent( - new CustomEvent('comment-thread-mouseleave', {bubbles: true})); + threadEl.dispatchEvent(new CustomEvent( + 'comment-thread-mouseleave', {bubbles: true, composed: true})); assert.isFalse(element.set.called); }); diff --git a/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host.js b/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host.js index b848ed38ac..d47a61d170 100644 --- a/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host.js +++ b/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host.js @@ -110,7 +110,9 @@ commitRange: Object, filesWeblinks: { type: Object, - value() { return {}; }, + value() { + return {}; + }, notify: true, }, hidden: { @@ -309,7 +311,9 @@ }, _getFilesWeblinks(diff) { - if (!this.commitRange) { return {}; } + if (!this.commitRange) { + return {}; + } return { meta_a: Gerrit.Nav.getFileWebLinks( this.projectName, this.commitRange.baseCommit, this.path, @@ -435,7 +439,9 @@ * Report info about the diff response. */ _reportDiff(diff) { - if (!diff || !diff.content) { return; } + if (!diff || !diff.content) { + return; + } // Count the delta lines stemming from normal deltas, and from // due_to_rebase deltas. @@ -663,7 +669,7 @@ * @param {!Gerrit.Range=} range * @return {?Node} */ - _getThreadEl(lineNum, commentSide, range=undefined) { + _getThreadEl(lineNum, commentSide, range = undefined) { let line; if (commentSide === GrDiffBuilder.Side.LEFT) { line = {beforeNumber: lineNum}; @@ -778,7 +784,8 @@ return this.prefs.ignore_whitespace; }, - _whitespaceChanged(preferredWhitespaceLevel, loadedWhitespaceLevel, + _whitespaceChanged( + preferredWhitespaceLevel, loadedWhitespaceLevel, noRenderOnPrefsChange) { if (preferredWhitespaceLevel !== loadedWhitespaceLevel && !noRenderOnPrefsChange) { @@ -831,8 +838,8 @@ }, _handleCommentSaveOrDiscard() { - this.dispatchEvent(new CustomEvent('diff-comments-modified', - {bubbles: true})); + this.dispatchEvent(new CustomEvent( + 'diff-comments-modified', {bubbles: true, composed: true})); }, _removeComment(comment) { diff --git a/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host_test.html b/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host_test.html index 7466ade993..d27a0e5c19 100644 --- a/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host_test.html +++ b/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host_test.html @@ -269,7 +269,7 @@ limitations under the License. suite('render reporting', () => { test('starts total and content timer on render-start', done => { element.dispatchEvent( - new CustomEvent('render-start', {bubbles: true})); + new CustomEvent('render-start', {bubbles: true, composed: true})); assert.isTrue(element.$.reporting.time.calledWithExactly( 'Diff Total Render')); assert.isTrue(element.$.reporting.time.calledWithExactly( @@ -279,7 +279,7 @@ limitations under the License. test('ends content and starts syntax timer on render-content', done => { element.dispatchEvent( - new CustomEvent('render-content', {bubbles: true})); + new CustomEvent('render-content', {bubbles: true, composed: true})); assert.isTrue(element.$.reporting.time.calledWithExactly( 'Diff Syntax Render')); assert.isTrue(element.$.reporting.timeEnd.calledWithExactly( @@ -289,7 +289,7 @@ limitations under the License. test('ends total and syntax timer on render-syntax', done => { element.dispatchEvent( - new CustomEvent('render-syntax', {bubbles: true})); + new CustomEvent('render-syntax', {bubbles: true, composed: true})); assert.isTrue(element.$.reporting.timeEnd.calledWithExactly( 'Diff Total Render')); assert.isTrue(element.$.reporting.timeEnd.calledWithExactly( diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.js b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.js index 40a7abe18e..d7e193c750 100644 --- a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.js +++ b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.js @@ -390,12 +390,12 @@ _redispatchHoverEvents(addedThreadEls) { for (const threadEl of addedThreadEls) { threadEl.addEventListener('mouseenter', () => { - threadEl.dispatchEvent( - new CustomEvent('comment-thread-mouseenter', {bubbles: true})); + threadEl.dispatchEvent(new CustomEvent( + 'comment-thread-mouseenter', {bubbles: true, composed: true})); }); threadEl.addEventListener('mouseleave', () => { - threadEl.dispatchEvent( - new CustomEvent('comment-thread-mouseleave', {bubbles: true})); + threadEl.dispatchEvent(new CustomEvent( + 'comment-thread-mouseleave', {bubbles: true, composed: true})); }); } }, @@ -551,6 +551,7 @@ this._getIsParentCommentByLineAndContent(lineEl, contentEl); this.dispatchEvent(new CustomEvent('create-comment', { bubbles: true, + composed: true, detail: { lineNum, side, @@ -727,14 +728,16 @@ _renderDiffTable() { this._unobserveIncrementalNodes(); if (!this.prefs) { - this.dispatchEvent(new CustomEvent('render', {bubbles: true})); + this.dispatchEvent( + new CustomEvent('render', {bubbles: true, composed: true})); return; } if (this.prefs.context === -1 && this._diffLength >= LARGE_DIFF_THRESHOLD_LINES && this._safetyBypass === null) { this._showWarning = true; - this.dispatchEvent(new CustomEvent('render', {bubbles: true})); + this.dispatchEvent( + new CustomEvent('render', {bubbles: true, composed: true})); return; } @@ -744,7 +747,7 @@ this.$.diffBuilder.render(keyLocations, this._getBypassPrefs()) .then(() => { this.dispatchEvent( - new CustomEvent('render', {bubbles: true})); + new CustomEvent('render', {bubbles: true, composed: true})); }); }, diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.html b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.html index 42f098bd7e..762028a14b 100644 --- a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.html +++ b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.html @@ -762,7 +762,7 @@ limitations under the License. () => { Promise.resolve(); element.$.diffBuilder.dispatchEvent( - new CustomEvent('render', {bubbles: true})); + new CustomEvent('render', {bubbles: true, composed: true})); }); const mock = document.createElement('mock-diff-response'); sandbox.stub(element.$.diffBuilder, 'getDiffLength').returns(10000); diff --git a/polygerrit-ui/app/elements/diff/gr-ranged-comment-layer/gr-ranged-comment-layer.js b/polygerrit-ui/app/elements/diff/gr-ranged-comment-layer/gr-ranged-comment-layer.js index e28142b427..3c1f45fd02 100644 --- a/polygerrit-ui/app/elements/diff/gr-ranged-comment-layer/gr-ranged-comment-layer.js +++ b/polygerrit-ui/app/elements/diff/gr-ranged-comment-layer/gr-ranged-comment-layer.js @@ -188,6 +188,7 @@ range.end = line.text.length; this.dispatchEvent(new CustomEvent('normalize-range', { bubbles: true, + composed: true, detail: {lineNum, side}, })); } diff --git a/polygerrit-ui/app/elements/edit/gr-default-editor/gr-default-editor.js b/polygerrit-ui/app/elements/edit/gr-default-editor/gr-default-editor.js index 01cd9df808..bae838ef98 100644 --- a/polygerrit-ui/app/elements/edit/gr-default-editor/gr-default-editor.js +++ b/polygerrit-ui/app/elements/edit/gr-default-editor/gr-default-editor.js @@ -32,8 +32,9 @@ }, _handleTextareaInput(e) { - this.dispatchEvent(new CustomEvent('content-change', - {detail: {value: e.target.value}, bubbles: true})); + this.dispatchEvent(new CustomEvent( + 'content-change', + {detail: {value: e.target.value}, bubbles: true, composed: true})); }, }); })(); diff --git a/polygerrit-ui/app/elements/edit/gr-default-editor/gr-default-editor_test.html b/polygerrit-ui/app/elements/edit/gr-default-editor/gr-default-editor_test.html index b79cd9d66b..423c493c06 100644 --- a/polygerrit-ui/app/elements/edit/gr-default-editor/gr-default-editor_test.html +++ b/polygerrit-ui/app/elements/edit/gr-default-editor/gr-default-editor_test.html @@ -50,7 +50,7 @@ limitations under the License. element.addEventListener('content-change', contentChangedHandler); textarea.value = 'test'; textarea.dispatchEvent(new CustomEvent('input', - {target: textarea, bubbles: true})); + {target: textarea, bubbles: true, composed: true})); }); }); diff --git a/polygerrit-ui/app/elements/edit/gr-edit-file-controls/gr-edit-file-controls.js b/polygerrit-ui/app/elements/edit/gr-edit-file-controls/gr-edit-file-controls.js index 9407f18ca6..9c59a9a8da 100644 --- a/polygerrit-ui/app/elements/edit/gr-edit-file-controls/gr-edit-file-controls.js +++ b/polygerrit-ui/app/elements/edit/gr-edit-file-controls/gr-edit-file-controls.js @@ -46,8 +46,9 @@ }, _dispatchFileAction(action, path) { - this.dispatchEvent(new CustomEvent('file-action-tap', - {detail: {action, path}, bubbles: true})); + this.dispatchEvent(new CustomEvent( + 'file-action-tap', + {detail: {action, path}, bubbles: true, composed: true})); }, _computeFileActions(actions) { diff --git a/polygerrit-ui/app/elements/edit/gr-editor-view/gr-editor-view.js b/polygerrit-ui/app/elements/edit/gr-editor-view/gr-editor-view.js index 8e108bb03c..ec6f110ab8 100644 --- a/polygerrit-ui/app/elements/edit/gr-editor-view/gr-editor-view.js +++ b/polygerrit-ui/app/elements/edit/gr-editor-view/gr-editor-view.js @@ -104,7 +104,9 @@ }, _paramsChanged(value) { - if (value.view !== Gerrit.Nav.View.EDIT) { return; } + if (value.view !== Gerrit.Nav.View.EDIT) { + return; + } this._changeNum = value.changeNum; this._path = value.path; @@ -134,7 +136,9 @@ _handlePathChanged(e) { const path = e.detail; - if (path === this._path) { return Promise.resolve(); } + if (path === this._path) { + return Promise.resolve(); + } return this.$.restAPI.renameFileInChangeEdit(this._changeNum, this._path, path).then(res => { if (!res.ok) { return; } @@ -158,8 +162,11 @@ .then(res => { if (storedContent && storedContent.message && storedContent.message !== res.content) { - this.dispatchEvent(new CustomEvent('show-alert', - {detail: {message: RESTORED_MESSAGE}, bubbles: true})); + this.dispatchEvent(new CustomEvent('show-alert', { + detail: {message: RESTORED_MESSAGE}, + bubbles: true, + composed: true, + })); this._newContent = storedContent.message; } else { @@ -197,11 +204,14 @@ this.dispatchEvent(new CustomEvent('show-alert', { detail: {message}, bubbles: true, + composed: true, })); }, _computeSaveDisabled(content, newContent, saving) { - if (saving) { return true; } + if (saving) { + return true; + } return content === newContent; }, @@ -224,7 +234,9 @@ _handleSaveShortcut(e) { e.preventDefault(); - if (!this._saveDisabled) { this._saveEdit(); } + if (!this._saveDisabled) { + this._saveEdit(); + } }, }); })(); diff --git a/polygerrit-ui/app/elements/edit/gr-editor-view/gr-editor-view_test.html b/polygerrit-ui/app/elements/edit/gr-editor-view/gr-editor-view_test.html index 2f5332dd1d..63f4314d11 100644 --- a/polygerrit-ui/app/elements/edit/gr-editor-view/gr-editor-view_test.html +++ b/polygerrit-ui/app/elements/edit/gr-editor-view/gr-editor-view_test.html @@ -121,7 +121,7 @@ suite('gr-editor-view tests', () => { const storeStub = sandbox.spy(element.$.storage, 'setEditableContentItem'); element._newContent = 'test'; element.$.editorEndpoint.dispatchEvent(new CustomEvent('content-change', { - bubbles: true, + bubbles: true, composed: true, detail: {value: 'new content value'}, })); element.flushDebouncer('store'); diff --git a/polygerrit-ui/app/elements/settings/gr-cla-view/gr-cla-view.js b/polygerrit-ui/app/elements/settings/gr-cla-view/gr-cla-view.js index a59b88626a..62bec12eee 100644 --- a/polygerrit-ui/app/elements/settings/gr-cla-view/gr-cla-view.js +++ b/polygerrit-ui/app/elements/settings/gr-cla-view/gr-cla-view.js @@ -66,7 +66,9 @@ _getAgreementsUrl(configUrl) { let url; - if (!configUrl) { return ''; } + if (!configUrl) { + return ''; + } if (configUrl.startsWith('http:') || configUrl.startsWith('https:')) { url = configUrl; } else { @@ -100,8 +102,8 @@ }, _createToast(message) { - this.dispatchEvent(new CustomEvent('show-alert', - {detail: {message}, bubbles: true})); + this.dispatchEvent(new CustomEvent( + 'show-alert', {detail: {message}, bubbles: true, composed: true})); }, _computeShowAgreementsClass(agreements) { @@ -133,9 +135,13 @@ // then hides the text box and submit button. _computeHideAgreementClass(name, config) { for (const key in config) { - if (!config.hasOwnProperty(key)) { continue; } + if (!config.hasOwnProperty(key)) { + continue; + } for (const prop in config[key]) { - if (!config[key].hasOwnProperty(prop)) { continue; } + if (!config[key].hasOwnProperty(prop)) { + continue; + } if (name === config[key].name && !config[key].auto_verify_group) { return 'hideAgreementsTextBox'; diff --git a/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view.js b/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view.js index 1f76a689bf..d776b54432 100644 --- a/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view.js +++ b/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view.js @@ -414,6 +414,7 @@ this.dispatchEvent(new CustomEvent('show-alert', { detail: {message: RELOAD_MESSAGE}, bubbles: true, + composed: true, })); this.async(() => { window.location.reload(); diff --git a/polygerrit-ui/app/elements/shared/gr-change-star/gr-change-star.js b/polygerrit-ui/app/elements/shared/gr-change-star/gr-change-star.js index 44f8c00dbe..98fd94a2bc 100644 --- a/polygerrit-ui/app/elements/shared/gr-change-star/gr-change-star.js +++ b/polygerrit-ui/app/elements/shared/gr-change-star/gr-change-star.js @@ -49,6 +49,7 @@ this.set('change.starred', newVal); this.dispatchEvent(new CustomEvent('toggle-star', { bubbles: true, + composed: true, detail: {change: this.change, starred: newVal}, })); }, diff --git a/polygerrit-ui/app/elements/shared/gr-comment/gr-comment.js b/polygerrit-ui/app/elements/shared/gr-comment/gr-comment.js index b5481a99a8..bf7df71b9d 100644 --- a/polygerrit-ui/app/elements/shared/gr-comment/gr-comment.js +++ b/polygerrit-ui/app/elements/shared/gr-comment/gr-comment.js @@ -128,7 +128,8 @@ _numPendingDraftRequests: { type: Object, - value: {number: 0}, // Intentional to share the object across instances. + value: + {number: 0}, // Intentional to share the object across instances. }, _enableOverlay: { @@ -230,7 +231,9 @@ */ save(opt_comment) { let comment = opt_comment; - if (!comment) { comment = this.comment; } + if (!comment) { + comment = this.comment; + } this.set('comment.message', this._messageText); this.editing = false; @@ -340,7 +343,9 @@ _computeSaveDisabled(draft, comment, resolved) { // If resolved state has changed and a msg exists, save should be enabled. - if (comment.unresolved === resolved && draft) { return false; } + if (comment.unresolved === resolved && draft) { + return false; + } return !draft || draft.trim() === ''; }, @@ -376,7 +381,9 @@ }, _messageTextChanged(newValue, oldValue) { - if (!this.comment || (this.comment && this.comment.id)) { return; } + if (!this.comment || (this.comment && this.comment.id)) { + return; + } this.debounce('store', () => { const message = this._messageText; @@ -400,9 +407,12 @@ _handleAnchorTap(e) { e.preventDefault(); - if (!this.comment.line) { return; } + if (!this.comment.line) { + return; + } this.dispatchEvent(new CustomEvent('comment-anchor-tap', { bubbles: true, + composed: true, detail: { number: this.comment.line || FILE, side: this.side, @@ -421,7 +431,9 @@ e.preventDefault(); // Ignore saves started while already saving. - if (this.disabled) { return; } + if (this.disabled) { + return; + } const timingLabel = this.comment.id ? REPORT_UPDATE_DRAFT : REPORT_CREATE_DRAFT; const timer = this.$.reporting.getTimer(timingLabel); @@ -450,6 +462,7 @@ _handleFix() { this.dispatchEvent(new CustomEvent('create-fix-comment', { bubbles: true, + composed: true, detail: this._getEventPayload(), })); }, @@ -512,7 +525,9 @@ }, _getSavingMessage(numPending) { - if (numPending === 0) { return SAVED_MESSAGE; } + if (numPending === 0) { + return SAVED_MESSAGE; + } return [ SAVING_MESSAGE, numPending, @@ -544,8 +559,8 @@ // Note: the event is fired on the body rather than this element because // this element may not be attached by the time this executes, in which // case the event would not bubble. - document.body.dispatchEvent(new CustomEvent('show-alert', - {detail: {message}, bubbles: true})); + document.body.dispatchEvent(new CustomEvent( + 'show-alert', {detail: {message}, bubbles: true, composed: true})); }, TOAST_DEBOUNCE_INTERVAL); }, diff --git a/polygerrit-ui/app/elements/shared/gr-editable-content/gr-editable-content.js b/polygerrit-ui/app/elements/shared/gr-editable-content/gr-editable-content.js index 827bb7115f..dc945a2cbe 100644 --- a/polygerrit-ui/app/elements/shared/gr-editable-content/gr-editable-content.js +++ b/polygerrit-ui/app/elements/shared/gr-editable-content/gr-editable-content.js @@ -96,8 +96,11 @@ this.$.storage.getEditableContentItem(this.storageKey); if (storedContent && storedContent.message) { content = storedContent.message; - this.dispatchEvent(new CustomEvent('show-alert', - {detail: {message: RESTORED_MESSAGE}, bubbles: true})); + this.dispatchEvent(new CustomEvent('show-alert', { + detail: {message: RESTORED_MESSAGE}, + bubbles: true, + composed: true, + })); } } if (!content) {