From 8e7bde0da1878cd5f9f62ace8319eb9fb44602c9 Mon Sep 17 00:00:00 2001 From: Paladox none Date: Sun, 25 Aug 2019 15:24:18 +0000 Subject: [PATCH] Use base url for commentlink Bug: Issue 11344 Change-Id: I68aa21f81e88441f01b9386fdbf77fbb93810ec3 --- .../shared/gr-linked-text/gr-linked-text.html | 3 ++- .../gr-linked-text/gr-linked-text_test.html | 18 ++++++++++++++++++ .../shared/gr-linked-text/link-text-parser.js | 4 ++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/polygerrit-ui/app/elements/shared/gr-linked-text/gr-linked-text.html b/polygerrit-ui/app/elements/shared/gr-linked-text/gr-linked-text.html index 5697e77cc8..61facc042e 100644 --- a/polygerrit-ui/app/elements/shared/gr-linked-text/gr-linked-text.html +++ b/polygerrit-ui/app/elements/shared/gr-linked-text/gr-linked-text.html @@ -16,8 +16,9 @@ limitations under the License. --> - + + diff --git a/polygerrit-ui/app/elements/shared/gr-linked-text/gr-linked-text_test.html b/polygerrit-ui/app/elements/shared/gr-linked-text/gr-linked-text_test.html index 73295b198c..c4b8739cb0 100644 --- a/polygerrit-ui/app/elements/shared/gr-linked-text/gr-linked-text_test.html +++ b/polygerrit-ui/app/elements/shared/gr-linked-text/gr-linked-text_test.html @@ -126,6 +126,24 @@ limitations under the License. assert.equal(linkEl.textContent, changeID); }); + test('Change-Id pattern was parsed and linked with base url', () => { + window.CANONICAL_PATH = '/r'; + + // "Change-Id:" pattern. + const changeID = 'I11d6a37f5e9b5df0486f6c922d8836dfa780e03e'; + const prefix = 'Change-Id: '; + element.content = prefix + changeID; + + const textNode = element.$.output.childNodes[0]; + const linkEl = element.$.output.childNodes[1]; + assert.equal(textNode.textContent, prefix); + const url = '/r/q/' + changeID; + assert.equal(linkEl.target, '_blank'); + // Since url is a path, the host is added automatically. + assert.isTrue(linkEl.href.endsWith(url)); + assert.equal(linkEl.textContent, changeID); + }); + test('Multiple matches', () => { element.content = 'Issue 3650\nIssue 3450'; const linkEl1 = element.$.output.childNodes[0]; diff --git a/polygerrit-ui/app/elements/shared/gr-linked-text/link-text-parser.js b/polygerrit-ui/app/elements/shared/gr-linked-text/link-text-parser.js index 8526c3e209..d848aa5f74 100644 --- a/polygerrit-ui/app/elements/shared/gr-linked-text/link-text-parser.js +++ b/polygerrit-ui/app/elements/shared/gr-linked-text/link-text-parser.js @@ -172,6 +172,10 @@ GrLinkTextParser.prototype.addLink = function(text, href, position, length, outputArray) { if (!text || this.hasOverlap(position, length, outputArray)) { return; } + const baseUrl = Gerrit.BaseUrlBehavior.getBaseUrl(); + if (!!baseUrl && href.startsWith('/') && !href.startsWith(baseUrl)) { + href = baseUrl + href; + } this.addItem(text, href, null, position, length, outputArray); };