Open relative commentlinks in same tab
Bug: Issue 4616
Change-Id: I8de67f9c1ef098e008dc65f0bc2436507a03f901
diff --git a/polygerrit-ui/app/elements/shared/gr-linked-text/gr-linked-text.js b/polygerrit-ui/app/elements/shared/gr-linked-text/gr-linked-text.js
index 09f7bbf..69d1570 100644
--- a/polygerrit-ui/app/elements/shared/gr-linked-text/gr-linked-text.js
+++ b/polygerrit-ui/app/elements/shared/gr-linked-text/gr-linked-text.js
@@ -68,10 +68,16 @@
this._handleParseResult.bind(this), this.removeZeroWidthSpace);
parser.parse(content);
- // Ensure that links originating from HTML commentlink configs open in a
- // new tab. @see Issue 5567
+ // Ensure that external links originating from HTML commentlink configs
+ // open in a new tab. @see Issue 5567
+ // Ensure links to the same host originating from commentlink configs
+ // open in the same tab. @see Issue 4616
output.querySelectorAll('a').forEach(anchor => {
- anchor.setAttribute('target', '_blank');
+ if (anchor.hostname === window.location.hostname) {
+ anchor.setAttribute('target', '_self');
+ } else {
+ anchor.setAttribute('target', '_blank');
+ }
anchor.setAttribute('rel', 'noopener');
});
},
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 19839a8..9084947 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
@@ -142,7 +142,7 @@
const linkEl = element.$.output.childNodes[1];
assert.equal(textNode.textContent, prefix);
const url = '/q/' + changeID;
- assert.equal(linkEl.target, '_blank');
+ assert.equal(linkEl.target, '_self');
// Since url is a path, the host is added automatically.
assert.isTrue(linkEl.href.endsWith(url));
assert.equal(linkEl.textContent, changeID);
@@ -160,7 +160,7 @@
const linkEl = element.$.output.childNodes[1];
assert.equal(textNode.textContent, prefix);
const url = '/r/q/' + changeID;
- assert.equal(linkEl.target, '_blank');
+ assert.equal(linkEl.target, '_self');
// Since url is a path, the host is added automatically.
assert.isTrue(linkEl.href.endsWith(url));
assert.equal(linkEl.textContent, changeID);
@@ -201,7 +201,7 @@
assert.equal(textNode.textContent, prefix);
- assert.equal(changeLinkEl.target, '_blank');
+ assert.equal(changeLinkEl.target, '_self');
assert.isTrue(changeLinkEl.href.endsWith(changeUrl));
assert.equal(changeLinkEl.textContent, changeID);