"use strict"; exports.availableDocumentFeatures = [ "FetchExternalResources", "ProcessExternalResources", "SkipExternalResources" ]; exports.defaultDocumentFeatures = { FetchExternalResources: ["script", "link"], // omitted by default: "frame" ProcessExternalResources: ["script"], // omitted by default: "frame", "iframe" SkipExternalResources: false }; exports.applyDocumentFeatures = (documentImpl, features) => { features = features || {}; for (let i = 0; i < exports.availableDocumentFeatures.length; ++i) { const featureName = exports.availableDocumentFeatures[i]; let featureSource; if (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 (exports.defaultDocumentFeatures[featureName]) { featureSource = exports.defaultDocumentFeatures[featureName]; } else { continue; } const implImpl = documentImpl._implementation; implImpl._removeFeature(featureName); if (featureSource !== undefined) { if (Array.isArray(featureSource)) { for (let j = 0; j < featureSource.length; ++j) { implImpl._addFeature(featureName, featureSource[j]); } } else { implImpl._addFeature(featureName, featureSource); } } } };