in java/com/google/gitiles/doc/html/HtmlBuilder.java [144:182]
public HtmlBuilder attribute(String att, String val) {
if (Strings.isNullOrEmpty(val)) {
return this;
} else if ("href".equals(att) && "a".equals(tag)) {
val = anchorHref(val);
} else if ("src".equals(att) && "img".equals(tag)) {
val = imgSrc(val);
} else if ("src".equals(att) && "iframe".equals(tag)) {
if (!isValidHttpUri(val)) {
return this;
}
val = URI.escape(val);
} else if (("height".equals(att) || "width".equals(att)) && "iframe".equals(tag)) {
val = isValidCssDimension(val) ? val : "250px";
} else if ("alt".equals(att) && "img".equals(tag)) {
// allow
} else if ("title".equals(att) && ("img".equals(tag) || "a".equals(tag))) {
// allow
} else if ("name".equals(att) && "a".equals(tag)) {
// allow
} else if ("start".equals(att) && "ol".equals(tag)) {
// allow
} else if (("colspan".equals(att) || "align".equals(att))
&& ("td".equals(tag) || "th".equals(tag))) {
// allow
} else {
checkState(tag != null, "tag must be pending");
checkArgument(ALLOWED_ATTRIBUTES.contains(att), "invalid attribute %s", att);
}
try {
htmlBuf.append(' ').append(att).append("=\"");
textBuf.append(val);
htmlBuf.append('"');
return this;
} catch (IOException e) {
throw new RuntimeIOException(e);
}
}