Merge branch 'stable-2.15' into stable-2.16
* stable-2.15:
Fix base url in addHTML to correctly match
Add base url to addHTML
Change-Id: I5aa62e6832349a7ff232d46dccb652255de5bc8e
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 7cc3493..e644806 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
@@ -67,6 +67,10 @@
match: 'hash:(.+)',
html: '<a href="#/awesomesauce">$1</a>',
},
+ baseurl: {
+ match: 'test (.+)',
+ html: '<a href="/r/awesomesauce">$1</a>',
+ },
disabledconfig: {
match: 'foo:(.+)',
link: 'https://google.com/search?q=$1',
@@ -201,6 +205,24 @@
assert.equal(linkEl.textContent, 'foo');
});
+ test('html with base url', () => {
+ window.CANONICAL_PATH = '/r';
+
+ element.content = 'test foo';
+ const linkEl = element.$.output.childNodes[0];
+ assert.isTrue(linkEl.href.endsWith('/r/awesomesauce'));
+ assert.equal(linkEl.textContent, 'foo');
+ });
+
+ test('hash html with base url', () => {
+ window.CANONICAL_PATH = '/r';
+
+ element.content = 'hash:foo';
+ const linkEl = element.$.output.childNodes[0];
+ assert.isTrue(linkEl.href.endsWith('/r/awesomesauce'));
+ assert.equal(linkEl.textContent, 'foo');
+ });
+
test('disabled config', () => {
element.content = 'foo:baz';
assert.equal(element.$.output.innerHTML, 'foo:baz');
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 0330ee9..42011b2 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
@@ -50,6 +50,7 @@
this.linkConfig = linkConfig;
this.callback = callback;
this.removeZeroWidthSpace = opt_removeZeroWidthSpace;
+ this.baseUrl = Gerrit.BaseUrlBehavior.getBaseUrl();
Object.preventExtensions(this);
}
@@ -172,9 +173,9 @@
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;
+ if (!!this.baseUrl && href.startsWith('/') &&
+ !href.startsWith(this.baseUrl)) {
+ href = this.baseUrl + href;
}
this.addItem(text, href, null, position, length, outputArray);
};
@@ -193,6 +194,10 @@
GrLinkTextParser.prototype.addHTML =
function(html, position, length, outputArray) {
if (this.hasOverlap(position, length, outputArray)) { return; }
+ if (!!this.baseUrl && html.match(/<a href=\"\//g) &&
+ !new RegExp(`^<a href="${this.baseUrl}`, 'g').test(html)) {
+ html = html.replace(/<a href=\"\//g, `<a href=\"${this.baseUrl}\/`);
+ }
this.addItem(null, null, html, position, length, outputArray);
};