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
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 7bfec00..42fb567 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 @@
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 @@
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 @@
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 @@
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 9ec2b29..191d1d2 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 @@
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 @@
}}];
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 @@
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 b848ed3..d47a61d 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 7466ade..d27a0e5 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 @@
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 @@
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 @@
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 40a7abe..d7e193c 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 42f098b..762028a 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 @@
() => {
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 e28142b..3c1f45f 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},
}));
}