Open all links in new tabs in comments and checks
Google-Bug-Id: b/249083604
Release-Notes: skip
Change-Id: I8491cb6b3e4a9f970f04bc30caf82e468bd6da15
diff --git a/polygerrit-ui/app/elements/shared/gr-formatted-text/gr-formatted-text.ts b/polygerrit-ui/app/elements/shared/gr-formatted-text/gr-formatted-text.ts
index da90b17..6ab0ec4 100644
--- a/polygerrit-ui/app/elements/shared/gr-formatted-text/gr-formatted-text.ts
+++ b/polygerrit-ui/app/elements/shared/gr-formatted-text/gr-formatted-text.ts
@@ -154,7 +154,17 @@
// for this.
// 4. Rewrite plain text ("text") to apply linking and other config-based
// rewrites. Text within code blocks is not passed here.
+ // 5. Open links in a new tab by rendering with target="_blank" attribute.
function customRenderer(renderer: {[type: string]: Function}) {
+ renderer['link'] = (href: string, title: string, text: string) =>
+ /* HTML */
+ `<a
+ href="${href}"
+ target="_blank"
+ ${title ? `title="${title}"` : ''}
+ rel="noopener"
+ >${text}</a
+ >`;
renderer['image'] = (href: string, _title: string, text: string) =>
`![${text}](${href})`;
renderer['codespan'] = (text: string) =>
diff --git a/polygerrit-ui/app/elements/shared/gr-formatted-text/gr-formatted-text_test.ts b/polygerrit-ui/app/elements/shared/gr-formatted-text/gr-formatted-text_test.ts
index b405e6b..6391347 100644
--- a/polygerrit-ui/app/elements/shared/gr-formatted-text/gr-formatted-text_test.ts
+++ b/polygerrit-ui/app/elements/shared/gr-formatted-text/gr-formatted-text_test.ts
@@ -332,7 +332,13 @@
<div slot="markdown-html">
<p>
@
- <a href="mailto:someone@google.com"> someone@google.com </a>
+ <a
+ href="mailto:someone@google.com"
+ rel="noopener"
+ target="_blank"
+ >
+ someone@google.com
+ </a>
</p>
</div>
</marked-element>
@@ -383,7 +389,13 @@
<div slot="markdown-html">
<p>
<code>@</code>
- <a href="mailto:someone@google.com"> someone@google.com </a>
+ <a
+ href="mailto:someone@google.com"
+ rel="noopener"
+ target="_blank"
+ >
+ someone@google.com
+ </a>
</p>
</div>
</marked-element>
@@ -401,7 +413,9 @@
<marked-element>
<div slot="markdown-html">
<p>
- <a href="https://www.google.com">myLink</a>
+ <a href="https://www.google.com" rel="noopener" target="_blank"
+ >myLink</a
+ >
</p>
</div>
</marked-element>
@@ -482,7 +496,9 @@
<p>block quote ${escapedDiv}</p>
</blockquote>
<p>
- <a href="http://google.com">inline link ${escapedDiv}</a>
+ <a href="http://google.com" rel="noopener" target="_blank"
+ >inline link ${escapedDiv}</a
+ >
</p>
</div>
</marked-element>