Bug 521766 - about:privatebrowsing onload handler needlessly delays work. r=ehsan
authorDão Gottwald <dao@mozilla.com>
Sat, 17 Oct 2009 08:36:37 +0200
changeset 33977 31096afe0b971d5f2bad6eea8566868324feae45
parent 33976 f24a033bdca1491d8d6d7eddf2c7341fcacc2d04
child 33978 8ed6fd9b927a57f8bc757ca3042338fcfbacc8e5
push id9790
push userdgottwald@mozilla.com
push dateSat, 17 Oct 2009 06:38:48 +0000
treeherdermozilla-central@8ed6fd9b927a [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersehsan
bugs521766
milestone1.9.3a1pre
Bug 521766 - about:privatebrowsing onload handler needlessly delays work. r=ehsan
browser/components/privatebrowsing/content/aboutPrivateBrowsing.xhtml
--- a/browser/components/privatebrowsing/content/aboutPrivateBrowsing.xhtml
+++ b/browser/components/privatebrowsing/content/aboutPrivateBrowsing.xhtml
@@ -46,90 +46,88 @@
   <!ENTITY % browserDTD SYSTEM "chrome://browser/locale/browser.dtd">
   %browserDTD;
   <!ENTITY % privatebrowsingpageDTD SYSTEM "chrome://browser/locale/aboutPrivateBrowsing.dtd">
   %privatebrowsingpageDTD;
 ]>
 
 <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
-#ifdef XP_MACOSX
-    <title></title>
-#else
-    <title>&privatebrowsingpage.title;</title>
-#endif
     <link rel="stylesheet" href="chrome://global/skin/netError.css" type="text/css" media="all"/>
     <link rel="stylesheet" href="chrome://browser/skin/aboutPrivateBrowsing.css" type="text/css" media="all"/>
     <script type="application/x-javascript;version=1.7"><![CDATA[
       const Cc = Components.classes;
       const Ci = Components.interfaces;
 
-      window.__defineGetter__("mainWindow", function() {
-        delete window.mainWindow;
-        return window.mainWindow = window.QueryInterface(Ci.nsIInterfaceRequestor)
-                                         .getInterface(Ci.nsIWebNavigation)
-                                         .QueryInterface(Ci.nsIDocShellTreeItem)
-                                         .rootTreeItem
-                                         .QueryInterface(Ci.nsIInterfaceRequestor)
-                                         .getInterface(Ci.nsIDOMWindow);
-      });
+      var pb = Cc["@mozilla.org/privatebrowsing;1"].
+               getService(Ci.nsIPrivateBrowsingService);
+
+      if (!pb.privateBrowsingEnabled) {
+        document.title = "]]>&privatebrowsingpage.title.normal;<![CDATA[";
+        setFavIcon("chrome://global/skin/icons/question-16.png");
+      } else {
+#ifndef XP_MACOSX
+        document.title = "]]>&privatebrowsingpage.title;<![CDATA[";
+#endif
+        setFavIcon("chrome://browser/skin/Privacy-16.png");
+      }
+
+      var mainWindow = window.QueryInterface(Ci.nsIInterfaceRequestor)
+                             .getInterface(Ci.nsIWebNavigation)
+                             .QueryInterface(Ci.nsIDocShellTreeItem)
+                             .rootTreeItem
+                             .QueryInterface(Ci.nsIInterfaceRequestor)
+                             .getInterface(Ci.nsIDOMWindow);
+
+      // Focus the location bar
+      mainWindow.focusAndSelectUrlBar();
 
       function openSanitizeDialog() {
         let browserGlue = Cc["@mozilla.org/browser/browserglue;1"].
                           getService(Ci.nsIBrowserGlue);
         browserGlue.sanitize(mainWindow);
       }
 
       function setFavIcon(url) {
         var icon = document.createElement("link");
         icon.setAttribute("rel", "icon");
         icon.setAttribute("type", "image/png");
         icon.setAttribute("href", url);
-        document.getElementsByTagName("head")[0].appendChild(icon);
+        var head = document.getElementsByTagName("head")[0];
+        head.insertBefore(icon, head.firstChild);
       }
 
-      function onLoad() {
+      document.addEventListener("DOMContentLoaded", function () {
         let selector;
-        let pb = Cc["@mozilla.org/privatebrowsing;1"].
-                 getService(Ci.nsIPrivateBrowsingService);
         if (!pb.privateBrowsingEnabled) {
           document.body.setAttribute("class", "normal");
-          document.title = document.body.getAttribute("normaltitle");
-          setFavIcon("chrome://global/skin/icons/question-16.png");
           selector = ".showPrivate";
         }
         else {
-          setFavIcon("chrome://browser/skin/Privacy-16.png");
           selector = ".showNormal";
         }
 
         // Remove hidden elements to avoid bug 39098
         let elements = document.body.querySelectorAll(selector);
         for (let i = 0; i < elements.length; ++ i)
           elements[i].parentNode.removeChild(elements[i]);
 
         // Set up the help link
         let moreInfoURL = Cc["@mozilla.org/toolkit/URLFormatterService;1"].
                           getService(Ci.nsIURLFormatter).
                           formatURLPref("app.support.baseURL");
         let moreInfoLink = document.getElementById("moreInfoLink");
         if (moreInfoLink)
           moreInfoLink.setAttribute("href", moreInfoURL + "private-browsing");
-
-        // Focus the location bar
-        if (mainWindow.gURLBar)
-          mainWindow.gURLBar.focus();
-      }
+      }, false);
     ]]></script>
   </head>
 
   <body dir="&locale.dir;"
-        class="private"
-        onload="onLoad();"
-        normaltitle="&privatebrowsingpage.title.normal;">
+        class="private">
 
     <!-- PAGE CONTAINER (for styling purposes only) -->
     <div id="errorPageContainer">
 
       <!-- Error Title -->
       <div id="errorTitle">
         <h1 id="errorTitleText" class="showPrivate">&privatebrowsingpage.title;</h1>
         <h1 id="errorTitleTextNormal" class="showNormal">&privatebrowsingpage.title.normal;</h1>