Bug 1287938 - Make ts_paint use the parent process start time and first paint info in calculations. r?jmaher draft
authorMike Conley <mconley@mozilla.com>
Wed, 20 Jul 2016 11:00:25 -0400
changeset 390743 7338f2faaeb0a9e0d455c99904b88322dc199e6d
parent 390029 d224fc999cb6accb208af0a105f14433375e2e77
child 526060 4d92f8b16cd6a6cac57bec7d251fde3c831346ac
push id23737
push usermconley@mozilla.com
push dateThu, 21 Jul 2016 17:08:42 +0000
reviewersjmaher
bugs1287938
milestone50.0a1
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