Bug 1287938 - Make ts_paint use the parent process start time and first paint info in calculations. r=jmaher
authorMike Conley <mconley@mozilla.com>
Wed, 20 Jul 2016 11:00:25 -0400
changeset 348581 bc767d7a30ddb701a9b2bd62670fdbe14780f81f
parent 348394 d69f9992ba40934b68bbe01a8c30dd786373ec84
child 348582 fcf088f6097c1f657c29d2d5a1255cf0e5495702
push id1230
push userjlund@mozilla.com
push dateMon, 31 Oct 2016 18:13:35 +0000
treeherdermozilla-release@5e06e3766db2 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjmaher
bugs1287938
milestone50.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1287938 - Make ts_paint use the parent process start time and first paint info in calculations. r=jmaher Instead of checking for the paint time of the tspaint_test.html content, we're now measuring the delta between process start and first paint as reported by the parent process's startup info. MozReview-Commit-ID: 868mf2vazwL
testing/talos/talos/startup_test/tspaint_test.html
testing/talos/talos/talos-powers/chrome/talos-powers-content.js
testing/talos/talos/talos-powers/components/TalosPowersService.js
testing/talos/talos/talos-powers/content/TalosPowersContent.js
testing/talos/talos/talos-powers/install.rdf
testing/talos/talos/talos-powers/talos-powers-signed.xpi
--- a/testing/talos/talos/startup_test/tspaint_test.html
+++ b/testing/talos/talos/startup_test/tspaint_test.html
@@ -1,47 +1,38 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this file,
    - You can obtain one at http://mozilla.org/MPL/2.0/.  -->
 <html>
 <meta charset="utf-8">
 <!-- Pick off begin time as a cgi argument and print it out -->
 <!-- call this with an arg, e.g. file://foo/startup-test.html?begin=12345678 -->
 <!-- In-line this to avoid compilation. -->
+<script language="Javascript" type="text/javascript" src="chrome://talos-powers-content/content/TalosPowersContent.js"></script>
 <script language="Javascript" type="text/javascript" src="../scripts/MozillaFileLogger.js"></script>
 <script language="Javascript" type="text/javascript" src="../scripts/Profiler.js"></script>
 <script language="JavaScript" type="text/javascript" src="../tests/quit.js"></script>
 <script language="javascript" type="text/javascript">
 
 function painted() {
-  var now = Date.now();
   Profiler.pause();
   Profiler.initFromURLQueryParams(location.search);
   Profiler.finishStartupProfiling();
 
   window.removeEventListener("MozAfterPaint", painted, true);
 
-  var startupTime = -1;
+  TalosPowersContent.getStartupInfo().then(function(startupInfo) {
+    let startupTime = startupInfo['firstPaint'] - startupInfo['process'];
 
-  try {
-    netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
-    var startupInfo = Components.classes['@mozilla.org/toolkit/app-startup;1'].
-                                   getService(Ci.nsIAppStartup).getStartupInfo();
-    startupTime = now - startupInfo['process'];
-  } catch(ex) {
-    dumpLog(ex + '\n');
-  }
-
-  Profiler.pause();
-
-  document.body.textContent = 'Startup time = ' + startupTime + ' ms';
-  if (window.dump) {
-    dumpLog('__start_report' + startupTime + '__end_report\n\n');
-  }
-  dumpConsoleAndQuit();
+    document.body.textContent = 'Startup time = ' + startupTime + ' ms';
+    if (window.dump) {
+      dumpLog('__start_report' + startupTime + '__end_report\n\n');
+    }
+    dumpConsoleAndQuit();
+  });
 }
 
 function failed() {
   if (window.dump) {
     dumpLog('BROWSER FAILED TO GENERATE MOZAFTERPAINT IN 5 SECONDS');
   }
   dumpConsoleAndQuit();
 }
@@ -71,9 +62,8 @@ function dumpConsoleAndQuit() {
 }
 
 window.addEventListener("MozAfterPaint", painted, true);
 setTimeout(failed, 5000);
 
 </script>
 <body></body>
 </html>
-
--- a/testing/talos/talos/talos-powers/chrome/talos-powers-content.js
+++ b/testing/talos/talos/talos-powers/chrome/talos-powers-content.js
@@ -58,8 +58,25 @@ addEventListener("TalosPowersContentFocu
     throw new Error("TalosPowersContentFocus may only be used with local content");
   }
   content.focus();
   let contentEvent = Cu.cloneInto({
     bubbles: true,
   }, content);
   content.dispatchEvent(new content.CustomEvent("TalosPowersContentFocused", contentEvent));
 }, true, true);
+
+addEventListener("TalosPowersContentGetStartupInfo", (e) => {
+  sendAsyncMessage("TalosPowersContent:GetStartupInfo");
+  addMessageListener("TalosPowersContent:GetStartupInfo:Result",
+                     function onResult(msg) {
+    removeMessageListener("TalosPowersContent:GetStartupInfo:Result",
+                          onResult);
+    let event = Cu.cloneInto({
+      bubbles: true,
+      detail: msg.data,
+    }, content);
+
+    content.dispatchEvent(
+      new content.CustomEvent("TalosPowersContentGetStartupInfoResult",
+                              event));
+  });
+});
--- a/testing/talos/talos/talos-powers/components/TalosPowersService.js
+++ b/testing/talos/talos/talos-powers/components/TalosPowersService.js
@@ -35,16 +35,17 @@ TalosPowersService.prototype = {
     }
   },
 
   init() {
     Services.mm.loadFrameScript(FRAME_SCRIPT, true);
     Services.mm.addMessageListener("Talos:ForceQuit", this);
     Services.mm.addMessageListener("TalosContentProfiler:Command", this);
     Services.mm.addMessageListener("TalosPowersContent:ForceCCAndGC", this);
+    Services.mm.addMessageListener("TalosPowersContent:GetStartupInfo", this);
     Services.obs.addObserver(this, "xpcom-shutdown", false);
   },
 
   uninit() {
     Services.obs.removeObserver(this, "xpcom-shutdown", false);
   },
 
   receiveMessage(message) {
@@ -58,16 +59,19 @@ TalosPowersService.prototype = {
         break;
       }
       case "TalosPowersContent:ForceCCAndGC": {
         Cu.forceGC();
         Cu.forceCC();
         Cu.forceShrinkingGC();
         break;
       }
+      case "TalosPowersContent:GetStartupInfo": {
+        this.receiveGetStartupInfo(message);
+      }
     }
   },
 
   /**
    * Enable the SPS profiler with some settings and then pause
    * immediately.
    *
    * @param data (object)
@@ -225,11 +229,33 @@ TalosPowersService.prototype = {
     }
 
     try {
       Services.startup.quit(Services.startup.eForceQuit);
     } catch(e) {
       dump('Force Quit failed: ' + e);
     }
   },
+
+  receiveGetStartupInfo(message) {
+    let mm = message.target.messageManager;
+    let startupInfo = Services.startup.getStartupInfo();
+
+    if (!startupInfo["firstPaint"]) {
+      // It's possible that we were called early enough that
+      // the firstPaint measurement hasn't been set yet. In
+      // that case, we set up an observer for the next time
+      // a window is painted and re-retrieve the startup info.
+      let obs = function(subject, topic) {
+        Services.obs.removeObserver(this, topic);
+        startupInfo = Services.startup.getStartupInfo();
+        mm.sendAsyncMessage("TalosPowersContent:GetStartupInfo:Result",
+                            startupInfo);
+      };
+      Services.obs.addObserver(obs, "widget-first-paint", false);
+    } else {
+      mm.sendAsyncMessage("TalosPowersContent:GetStartupInfo:Result",
+                          startupInfo);
+    }
+  },
 };
 
 this.NSGetFactory = XPCOMUtils.generateNSGetFactory([TalosPowersService]);
--- a/testing/talos/talos/talos-powers/content/TalosPowersContent.js
+++ b/testing/talos/talos/talos-powers/content/TalosPowersContent.js
@@ -24,10 +24,25 @@ var TalosPowersContent;
           callback();
         });
       };
       document.dispatchEvent(new CustomEvent("TalosPowersContentFocus", {
         bubbles: true,
       }));
     },
 
+    getStartupInfo() {
+      return new Promise((resolve) => {
+        var event = new CustomEvent("TalosPowersContentGetStartupInfo", {
+          bubbles: true,
+        });
+        document.dispatchEvent(event);
+
+        addEventListener("TalosPowersContentGetStartupInfoResult",
+                         function onResult(e) {
+          removeEventListener("TalosPowersContentGetStartupInfoResult",
+                              onResult);
+          resolve(e.detail);
+        });
+      });
+    },
   };
 })();
--- a/testing/talos/talos/talos-powers/install.rdf
+++ b/testing/talos/talos/talos-powers/install.rdf
@@ -1,15 +1,15 @@
 <?xml version="1.0"?>
 
 <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
      xmlns:em="http://www.mozilla.org/2004/em-rdf#">
   <Description about="urn:mozilla:install-manifest">
     <em:id>talos-powers@mozilla.org</em:id>
-    <em:version>1.0.8</em:version>
+    <em:version>1.0.10</em:version>
     <em:targetApplication>
       <Description>
         <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
         <em:minVersion>44.0</em:minVersion>
         <em:maxVersion>*</em:maxVersion>
       </Description>
     </em:targetApplication>
     <!-- Front End MetaData -->
index 2963458372fe80850c654fd6d30f0d191673ffc0..642a2332eadcd9a243ce4258e919da710295e163
GIT binary patch
literal 25707
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
YFV`w%Ias*gI$-^{#D3JU4S#F>4?z+d&;S4c