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 a0d9233603..0bd6e6d343 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
@@ -15,7 +15,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 52a7de01de..0bf752ee94 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
@@ -122,6 +122,24 @@ limitations under the License.
assert.equal(linkEl.textContent, changeID);
});
+ test('Change-Id pattern was parsed and linked with base url', function() {
+ 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', function() {
element.content = 'Issue 3650\nIssue 3450';
var 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 8a489f44fd..526032ee0d 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
@@ -96,6 +96,10 @@ GrLinkTextParser.prototype.addLink =
return;
}
if (!this.hasOverlap(position, length, outputArray)) {
+ const baseUrl = Gerrit.BaseUrlBehavior.getBaseUrl();
+ if (!!baseUrl && href.startsWith('/') && !href.startsWith(baseUrl)) {
+ href = baseUrl + href;
+ }
this.addItem(text, href, null, position, length, outputArray);
}
};