documentfeatures.js
exports.availableDocumentFeatures = [
'FetchExternalResources',
'ProcessExternalResources',
'MutationEvents',
'QuerySelector'
];
exports.defaultDocumentFeatures = {
"FetchExternalResources" : ['script'],
"ProcessExternalResources" : ['script'],
"MutationEvents" : '2.0',
"QuerySelector" : false
};
exports.applyDocumentFeatures = function(doc, features) {
var i, maxFeatures = exports.availableDocumentFeatures.length,
defaultFeatures = exports.defaultDocumentFeatures,
j,
k,
featureName,
featureSource;
features = features || {};
for (i=0; i<maxFeatures; i++) {
featureName = exports.availableDocumentFeatures[i];
if (typeof features[featureName] !== 'undefined') {
featureSource = features[featureName];
} else if (typeof features[featureName.toLowerCase()] !== 'undefined') {
featureSource = features[featureName.toLowerCase()];
} else if (defaultFeatures[featureName]) {
featureSource = defaultFeatures[featureName];
} else {
continue;
}
doc.implementation.removeFeature(featureName);
if (typeof featureSource !== 'undefined') {
if (featureSource instanceof Array) {
k = featureSource.length;
for (j=0; j<k; j++) {
doc.implementation.addFeature(featureName, featureSource[j]);
}
} else {
doc.implementation.addFeature(featureName, featureSource);
}
}
}
};