in asdoc/library/closure/goog/html/sanitizer/htmlsanitizer.js [698:766]
function() {
if (this.policiesInstalled_) {
throw new Error('HtmlSanitizer.Builder.build() can only be used once.');
}
var installPolicy = goog.html.sanitizer.HtmlSanitizer.installDefaultPolicy_;
// Binding all the non-trivial attribute sanitizers to the appropriate,
// potentially customizable, handling functions at build().
installPolicy(
this.attributeWhitelist_, this.attributeOverrideList_, '* USEMAP',
/** @type {!goog.html.sanitizer.HtmlSanitizerPolicy} */ (
goog.html.sanitizer.HtmlSanitizer.sanitizeUrlFragment_));
var urlAttributes = ['* ACTION', '* CITE', '* HREF'];
var urlPolicy =
goog.html.sanitizer.HtmlSanitizer.wrapUrlPolicy_(this.urlPolicy_);
goog.array.forEach(urlAttributes, function(attribute) {
installPolicy(
this.attributeWhitelist_, this.attributeOverrideList_, attribute,
urlPolicy);
}, this);
var networkUrlAttributes = [
// LONGDESC can result in a network request. See b/23381636.
'* LONGDESC', '* SRC', 'LINK HREF'
];
var networkRequestUrlPolicy =
goog.html.sanitizer.HtmlSanitizer.wrapUrlPolicy_(
this.networkRequestUrlPolicy_);
goog.array.forEach(networkUrlAttributes, function(attribute) {
installPolicy(
this.attributeWhitelist_, this.attributeOverrideList_, attribute,
networkRequestUrlPolicy);
}, this);
var nameAttributes = ['* FOR', '* HEADERS', '* NAME'];
goog.array.forEach(nameAttributes, function(attribute) {
installPolicy(
this.attributeWhitelist_, this.attributeOverrideList_, attribute,
/** @type {!goog.html.sanitizer.HtmlSanitizerPolicy} */ (goog.partial(
goog.html.sanitizer.HtmlSanitizer.sanitizeName_,
this.namePolicy_)));
}, this);
installPolicy(
this.attributeWhitelist_, this.attributeOverrideList_, 'A TARGET',
/** @type {!goog.html.sanitizer.HtmlSanitizerPolicy} */ (goog.partial(
goog.html.sanitizer.HtmlSanitizer.allowedAttributeValues_,
['_blank', '_self'])));
installPolicy(
this.attributeWhitelist_, this.attributeOverrideList_, '* CLASS',
/** @type {!goog.html.sanitizer.HtmlSanitizerPolicy} */ (goog.partial(
goog.html.sanitizer.HtmlSanitizer.sanitizeClasses_,
this.tokenPolicy_)));
installPolicy(
this.attributeWhitelist_, this.attributeOverrideList_, '* ID',
/** @type {!goog.html.sanitizer.HtmlSanitizerPolicy} */ (goog.partial(
goog.html.sanitizer.HtmlSanitizer.sanitizeId_, this.tokenPolicy_)));
installPolicy(
this.attributeWhitelist_, this.attributeOverrideList_, '* STYLE',
/** @type {!goog.html.sanitizer.HtmlSanitizerPolicy} */
(goog.partial(this.sanitizeInlineCssPolicy_, networkRequestUrlPolicy)));
this.policiesInstalled_ = true;
};