blob: 2e562cb4ceea85661c4d583ae7b2f2b93be95641 [file] [log] [blame]
exports.availableDocumentFeatures = [
'FetchExternalResources',
'ProcessExternalResources',
'MutationEvents',
'SkipExternalResources'
];
exports.defaultDocumentFeatures = {
"FetchExternalResources": ['script', 'link'/*, 'img', 'css', 'frame'*/],
"ProcessExternalResources": ['script'/*, 'frame', 'iframe'*/],
"MutationEvents": '2.0',
"SkipExternalResources": 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];
// We have to check the lowercase version also because the Document feature
// methods convert everything to lowercase.
} 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);
}
}
}
};