Bug 1299184 - Switch translation trigger to MozBeforeLayout. r?stas draft
authorZibi Braniecki <gandalf@mozilla.com>
Tue, 30 Aug 2016 12:34:55 +0200
changeset 407509 dfef88241d407c8d1ee3c1cfef1d2cc3f0fdbb8e
parent 407508 bc60cb47882ac16cd4bade1e2d0e2623130f2e9b
child 529894 7dc9a3837d2455af76c7a7ec36559ebdf623f86f
push id27986
push userzbraniecki@mozilla.com
push dateTue, 30 Aug 2016 15:33:13 +0000
reviewersstas
bugs1299184
milestone51.0a1
Bug 1299184 - Switch translation trigger to MozBeforeLayout. r?stas MozReview-Commit-ID: 1BlZdNUsHvj
toolkit/content/l20n-chrome-xul.js
--- 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
     });
   }
 }
 
 }