in lib/prepare.js [1204:1243]
function processAccessAndAllowNavigationEntries (config) {
const accesses = config.getAccesses();
const allow_navigations = config.getAllowNavigations();
return allow_navigations
// we concat allow_navigations and accesses, after processing accesses
.concat(accesses.map(obj => {
// map accesses to a common key interface using 'href', not origin
obj.href = obj.origin;
delete obj.origin;
return obj;
}))
// we reduce the array to an object with all the entries processed (key is Hostname)
.reduce((previousReturn, currentElement) => {
const options = {
minimum_tls_version: currentElement.minimum_tls_version,
requires_forward_secrecy: currentElement.requires_forward_secrecy,
requires_certificate_transparency: currentElement.requires_certificate_transparency,
allows_arbitrary_loads_for_media: currentElement.allows_arbitrary_loads_in_media || currentElement.allows_arbitrary_loads_for_media,
allows_arbitrary_loads_in_web_content: currentElement.allows_arbitrary_loads_in_web_content,
allows_local_networking: currentElement.allows_local_networking
};
const obj = parseAllowlistUrlForATS(currentElement.href, options);
if (obj) {
// we 'union' duplicate entries
let item = previousReturn[obj.Hostname];
if (!item) {
item = {};
}
for (const o in obj) {
if (Object.prototype.hasOwnProperty.call(obj, o)) {
item[o] = obj[o];
}
}
previousReturn[obj.Hostname] = item;
}
return previousReturn;
}, {});
}