restore gr-linked-text and link-text-parser There have been several reports since my rewrite does not match the old semantics. Release-Notes: skip Change-Id: I5fe93ff9caf54bbdd0b9e56b7004b84138dccb0a
diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts index 76ec316..f2977dc 100644 --- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts +++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts
@@ -15,7 +15,7 @@ import '../../shared/gr-change-star/gr-change-star'; import '../../shared/gr-change-status/gr-change-status'; import '../../shared/gr-editable-content/gr-editable-content'; -import '../../shared/gr-formatted-text/gr-formatted-text'; +import '../../shared/gr-linked-text/gr-linked-text'; import '../../shared/gr-overlay/gr-overlay'; import '../../shared/gr-tooltip-content/gr-tooltip-content'; import '../gr-change-actions/gr-change-actions'; @@ -191,6 +191,7 @@ const MIN_LINES_FOR_COMMIT_COLLAPSE = 18; +const REVIEWERS_REGEX = /^(R|CC)=/gm; const MIN_CHECK_INTERVAL_SECS = 0; const REPLY_REFIT_DEBOUNCE_INTERVAL_MS = 500; @@ -958,7 +959,7 @@ /* Account for border and padding and rounding errors. */ max-width: calc(72ch + 2px + 2 * var(--spacing-m) + 0.4px); } - .commitMessage gr-formatted-text { + .commitMessage gr-linked-text { word-break: break-word; } #commitMessageEditor { @@ -1459,10 +1460,12 @@ .commitCollapsible=${this.computeCommitCollapsible()} remove-zero-width-space="" > - <gr-formatted-text - .markdown=${false} - .content=${this.latestCommitMessage ?? ''} - ></gr-formatted-text> + <gr-linked-text + pre="" + .content=${this.latestCommitMessage} + .config=${this.projectConfig?.commentlinks} + remove-zero-width-space="" + ></gr-linked-text> </gr-editable-content> </div> <h3 class="assistive-tech-only">Comments and Checks Summary</h3> @@ -1821,7 +1824,7 @@ return; } - this.latestCommitMessage = message; + this.latestCommitMessage = this.prepareCommitMsgForLinkify(message); this.editingCommitMessage = false; this.reloadWindow(); }) @@ -2671,6 +2674,14 @@ this.changeViewAriaHidden = true; } + // Private but used in tests. + prepareCommitMsgForLinkify(msg: string) { + // TODO(wyatta) switch linkify sequence, see issue 5526. + // This is a zero-with space. It is added to prevent the linkify library + // from including R= or CC= as part of the email address. + return msg.replace(REVIEWERS_REGEX, '$1=\u200B'); + } + /** * Utility function to make the necessary modifications to a change in the * case an edit exists. @@ -2800,7 +2811,9 @@ throw new Error('Could not find latest Revision Sha'); const currentRevision = this.change.revisions[latestRevisionSha]; if (currentRevision.commit && currentRevision.commit.message) { - this.latestCommitMessage = currentRevision.commit.message; + this.latestCommitMessage = this.prepareCommitMsgForLinkify( + currentRevision.commit.message + ); } else { this.latestCommitMessage = null; } @@ -2853,7 +2866,9 @@ .getChangeCommitInfo(this.changeNum, lastpatchNum) .then(commitInfo => { if (!commitInfo) return; - this.latestCommitMessage = commitInfo.message; + this.latestCommitMessage = this.prepareCommitMsgForLinkify( + commitInfo.message + ); }); }
diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.ts b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.ts index e0c09e2..ad84fb0 100644 --- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.ts +++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.ts
@@ -433,7 +433,9 @@ id="commitMessageEditor" remove-zero-width-space="" > - <gr-formatted-text></gr-formatted-text> + <gr-linked-text pre="" remove-zero-width-space=""> + <span id="output" slot="insert"></span> + </gr-linked-text> </gr-editable-content> </div> <h3 class="assistive-tech-only"> @@ -1407,6 +1409,20 @@ assert.isTrue(overlayOpenStub.called); }); + test('prepareCommitMsgForLinkify', () => { + let commitMessage = 'R=test@google.com'; + let result = element.prepareCommitMsgForLinkify(commitMessage); + assert.equal(result, 'R=\u200Btest@google.com'); + + commitMessage = 'R=test@google.com\nR=test@google.com'; + result = element.prepareCommitMsgForLinkify(commitMessage); + assert.equal(result, 'R=\u200Btest@google.com\nR=\u200Btest@google.com'); + + commitMessage = 'CC=test@google.com'; + result = element.prepareCommitMsgForLinkify(commitMessage); + assert.equal(result, 'CC=\u200Btest@google.com'); + }); + test('_isSubmitEnabled', () => { assert.isFalse(element.isSubmitEnabled()); element.currentRevisionActions = {submit: {}};