Bug 1299184 - Switch translation trigger to MozBeforeLayout. r?stas
MozReview-Commit-ID: 1BlZdNUsHvj
--- a/toolkit/content/l20n-chrome-xul.js
+++ b/toolkit/content/l20n-chrome-xul.js
@@ -659,29 +659,16 @@ function getResourceLinks(head) {
head.querySelectorAll('link[rel="localization"]'),
el => [el.getAttribute('href'), el.getAttribute('name') || 'main']
).reduce(
(seq, [href, name]) => seq.set(name, (seq.get(name) || []).concat(href)),
new Map()
);
}
-function XULDocumentReady() {
- if (document.readyState !== 'uninitialized') {
- return Promise.resolve();
- }
-
- return new Promise(resolve => {
- document.addEventListener('readystatechange', function onrsc() {
- document.removeEventListener('readystatechange', onrsc);
- resolve();
- });
- });
-}
-
// create nsIObserver's observe method bound to a LocalizationObserver obs
function createObserve(obs) {
return function observe(subject, topic, data) {
switch (topic) {
case 'language-registry-update': {
const { requestBundles, createContext } = properties.get(this);
this.interactive = requestBundles().then(
bundles => fetchFirstBundle(bundles, createContext)
@@ -762,17 +749,20 @@ function createLocalization(name, resIds
window.addEventListener('unload', () => {
Services.obs.removeObserver(l10n, 'language-registry-update');
Services.obs.removeObserver(l10n, 'language-registry-incremental');
});
document.l10n.set(name, l10n);
if (name === 'main') {
- XULDocumentReady().then(() => {
+ document.addEventListener('MozBeforeLayout', function() {
const rootElem = document.documentElement;
document.l10n.observeRoot(rootElem, l10n);
document.l10n.translateRoot(rootElem, l10n);
+ }, {
+ once: true,
+ passive: true
});
}
}
}