Source code

Revision control

Copy as Markdown

Other Tools

"use strict";
/* exported asyncElementRendered, importDependencies */
/**
* A helper to await on while waiting for an asynchronous rendering of a Custom
* Element.
* @returns {Promise}
*/
function asyncElementRendered() {
return Promise.resolve();
}
/**
* Import the templates from the real page to avoid duplication in the tests.
* @param {HTMLIFrameElement} templateFrame - Frame to copy the resources from
* @param {HTMLElement} destinationEl - Where to append the copied resources
*/
function importDependencies(templateFrame, destinationEl) {
let promises = [];
for (let template of templateFrame.contentDocument.querySelectorAll(
"template"
)) {
let imported = document.importNode(template, true);
destinationEl.appendChild(imported);
// Preload the styles in the actual page, to ensure they're loaded on time.
for (let element of imported.content.querySelectorAll(
"link[rel='stylesheet']"
)) {
let clone = element.cloneNode(true);
promises.push(
new Promise(resolve => {
clone.onload = function () {
resolve();
clone.remove();
};
})
);
destinationEl.appendChild(clone);
}
}
return Promise.all(promises);
}
Object.defineProperty(document, "l10n", {
configurable: true,
writable: true,
value: {
connectRoot() {},
disconnectRoot() {},
translateElements() {
return Promise.resolve();
},
getAttributes(element) {
return {
id: element.getAttribute("data-l10n-id"),
args: element.getAttribute("data-l10n-args")
? JSON.parse(element.getAttribute("data-l10n-args"))
: {},
};
},
setAttributes(element, id, args) {
element.setAttribute("data-l10n-id", id);
if (args) {
element.setAttribute("data-l10n-args", JSON.stringify(args));
} else {
element.removeAttribute("data-l10n-args");
}
},
},
});
Object.defineProperty(window, "AboutLoginsUtils", {
configurable: true,
writable: true,
value: {
getLoginOrigin(uriString) {
return uriString;
},
setFocus(element) {
return element.focus();
},
async promptForPrimaryPassword(resolve, _messageId) {
resolve(true);
},
doLoginsMatch(login1, login2) {
return (
login1.origin == login2.origin &&
login1.username == login2.username &&
login1.password == login2.password
);
},
fileImportEnabled: SpecialPowers.getBoolPref(
"signon.management.page.fileImport.enabled"
),
primaryPasswordEnabled: false,
},
});