Bug 1381853 - teach Talos how to correctly wait for the end of delayed startup, r=Mossop.
authorFlorian Quèze <florian@queze.net>
Sun, 23 Jul 2017 00:16:09 +0200
changeset 419135 e323bc846da065850b8b755fcced8c6da9b3669e
parent 419134 d01c528a9f96bddc8a25ff83340c7a17842770a8
child 419136 86169e904b4d3e5cc86c9802b73475ee702f902c
push id7566
push usermtabara@mozilla.com
push dateWed, 02 Aug 2017 08:25:16 +0000
treeherdermozilla-beta@86913f512c3c [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersMossop
bugs1381853
milestone56.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 1381853 - teach Talos how to correctly wait for the end of delayed startup, r=Mossop.
testing/talos/talos/startup_test/sessionrestore/addon/SessionRestoreTalosTest.js
testing/talos/talos/startup_test/sessionrestore/addon/install.rdf
testing/talos/talos/startup_test/sessionrestore/addon/sessionrestore-signed.xpi
--- a/testing/talos/talos/startup_test/sessionrestore/addon/SessionRestoreTalosTest.js
+++ b/testing/talos/talos/startup_test/sessionrestore/addon/SessionRestoreTalosTest.js
@@ -85,17 +85,17 @@ nsSessionRestoreTalosTest.prototype = {
   onReady(hasRestoredTabs) {
     if (hasRestoredTabs) {
       Services.obs.removeObserver(this, StartupPerformance.RESTORED_TOPIC);
     }
 
     // onReady might fire before the browser window has finished initializing
     // or sometimes soon after. We handle both cases here.
     let win = Services.wm.getMostRecentWindow("navigator:browser");
-    if (!win || !win.gBrowser) {
+    if (!win || !win.gBrowserInit || !win.gBrowserInit.delayedStartupFinished) {
       // We didn't have a window around yet, so we'll wait until one becomes
       // available before opening the result tab.
       Services.obs.addObserver(this, WINDOW_READY_TOPIC);
     } else {
       // We have a window, so we can open the result tab in it right away.
       this.onWindow(win);
     }
 
--- a/testing/talos/talos/startup_test/sessionrestore/addon/install.rdf
+++ b/testing/talos/talos/startup_test/sessionrestore/addon/install.rdf
@@ -1,14 +1,14 @@
 <?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">
 
 <!-- Required Items -->
 <em:id>session-restore-test-2@mozilla.org</em:id>
 <em:name>Session Restore Startup Performance Test</em:name>
-<em:version>2.0.10</em:version>
+<em:version>2.0.11</em:version>
 
 <em:targetApplication>
     <Description>
         <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
         <em:minVersion>1.5</em:minVersion>
         <em:maxVersion>*</em:maxVersion>
     </Description>
 </em:targetApplication>
index 9ed9924cacc541d06355ea25e2e5a8551f25fd07..725b1273078607372b5bab3533afafb1576c2913
GIT binary patch
literal 8905
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