lms of this `formOrigin` using the related realms collection * * @param {string} formOrigin A form origin * @return {string[]} filteredRealms An array of domains related to the `formOrigin` * @async * @memberof LoginRelatedRealmsParent */ async findRelatedRealms(formOrigin) { try { let formOriginURI = Services.io.newURI(formOrigin); let originDomain = formOriginURI.host; let [{ relatedRealms } = {}] = await this.getSharedCredentialsCollection(); if (!relatedRealms) { return []; } let filterOriginIndex; let shouldInclude = false; let filteredRealms = relatedRealms.filter(_realms => { for (let relatedOrigin of _realms) { // We can't have an origin that matches multiple entries in our related realms collection // so we exit the loop early if (shouldInclude) { return false; } if (Services.eTLD.hasRootDomain(originDomain, relatedOrigin)) { shouldInclude = true; break; } } return shouldInclude; }); // * Filtered realms is a nested array due to its structure in Remote Settings filteredRealms = filteredRealms.flat(); filterOriginIndex = filteredRealms.indexOf(originDomain); // Removing the current formOrigin match if it exists in the related realms // so that we don't return duplicates when we search for logins if (filterOriginIndex !== -1) { filteredRealms.splice(filterOriginIndex, 1); } return filteredRealms; } catch (e) { lazy.log.error(e); return []; } } } PK