Merge "Support mailto: references"
diff --git a/java/com/google/gitiles/doc/MarkdownToHtml.java b/java/com/google/gitiles/doc/MarkdownToHtml.java
index 8bcb919..ec10d47 100644
--- a/java/com/google/gitiles/doc/MarkdownToHtml.java
+++ b/java/com/google/gitiles/doc/MarkdownToHtml.java
@@ -394,7 +394,7 @@
 
   @VisibleForTesting
   String href(String target) {
-    if (target.startsWith("#") || HtmlBuilder.isValidHttpUri(target)) {
+    if (target.startsWith("#") || HtmlBuilder.isValidHttpUri(target) || HtmlBuilder.isValidMailtoUri(target)) {
       return target;
     } else if (target.startsWith("git:")) {
       if (HtmlBuilder.isValidGitUri(target)) {
diff --git a/java/com/google/gitiles/doc/html/HtmlBuilder.java b/java/com/google/gitiles/doc/html/HtmlBuilder.java
index 8235161..bf46bf1 100644
--- a/java/com/google/gitiles/doc/html/HtmlBuilder.java
+++ b/java/com/google/gitiles/doc/html/HtmlBuilder.java
@@ -105,6 +105,10 @@
         && URI.getValueFilter().matcher(val).find();
   }
 
+  public static boolean isValidMailtoUri(String val) {
+    return val.startsWith("mailto:") && URI.getValueFilter().matcher(val).find();
+  }
+
   /** Check if URL is valid for {@code <img src="data:image/*;base64,...">}. */
   public static boolean isImageDataUri(String url) {
     return IMAGE_DATA.getValueFilter().matcher(url).find();