diff --git a/src/htmlminifier.js b/src/htmlminifier.js
index 30d9054e..bff3574d 100644
--- a/src/htmlminifier.js
+++ b/src/htmlminifier.js
@@ -311,6 +311,9 @@ function cleanAttributeValue(tag, attrName, attrValue, options, attrs) {
return (+numString).toString();
});
}
+ else if (isContentSecurityPolicy(tag, attrs) && attrName.toLowerCase() === 'content') {
+ return collapseWhitespaceAll(attrValue);
+ }
else if (options.customAttrCollapse && options.customAttrCollapse.test(attrName)) {
attrValue = attrValue.replace(/\n+|\r+|\s{2,}/g, '');
}
@@ -335,6 +338,17 @@ function isMetaViewport(tag, attrs) {
}
}
+function isContentSecurityPolicy(tag, attrs) {
+ if (tag !== 'meta') {
+ return false;
+ }
+ for (var i = 0, len = attrs.length; i < len; i++) {
+ if (attrs[i].name.toLowerCase() === 'http-equiv' && attrs[i].value.toLowerCase() === 'content-security-policy') {
+ return true;
+ }
+ }
+}
+
function ignoreCSS(id) {
return '/* clean-css ignore:start */' + id + '/* clean-css ignore:end */';
}
diff --git a/tests/minifier.js b/tests/minifier.js
index 07897d1e..c2fa4f11 100644
--- a/tests/minifier.js
+++ b/tests/minifier.js
@@ -3549,3 +3549,18 @@ QUnit.test('canCollapseWhitespace and canTrimWhitespace hooks', function(assert)
canCollapseWhitespace: canCollapseAndTrimWhitespace
}), output);
});
+
+QUnit.test('minify Content-Security-Policy', function(assert) {
+ var input, output;
+
+ input = '';
+ output = '';
+ assert.equal(minify(input), output);
+
+ input = '';
+ output = '';
+ assert.equal(minify(input), output);
+
+ input = '';
+ assert.equal(minify(input), input);
+});