Bug 827976 - Test that the hidden window is not loaded before first paint. r=florian

Differential Revision: https://phabricator.services.mozilla.com/D21087

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Felipe Gomes 2019-03-01 21:07:28 +00:00
parent b9f00633df
commit 190932ad70
3 changed files with 44 additions and 0 deletions

View File

@ -23,6 +23,8 @@ skip-if = !debug
[browser_startup.js]
[browser_startup_content.js]
skip-if = !e10s
[browser_startup_hiddenwindow.js]
skip-if = os == 'mac'
[browser_startup_flicker.js]
run-if = debug || devedition || nightly_build # Requires startupRecorder.js, which isn't shipped everywhere by default
[browser_tabclose_grow.js]

View File

@ -0,0 +1,38 @@
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
add_task(async function() {
if (!AppConstants.NIGHTLY_BUILD && !AppConstants.MOZ_DEV_EDITION && !AppConstants.DEBUG) {
ok(!("@mozilla.org/test/startuprecorder;1" in Cc),
"the startup recorder component shouldn't exist in this non-nightly/non-devedition/" +
"non-debug build.");
return;
}
let startupRecorder = Cc["@mozilla.org/test/startuprecorder;1"].getService().wrappedJSObject;
await startupRecorder.done;
let extras = Cu.cloneInto(startupRecorder.data.extras, {});
let phasesExpectations = {
"before profile selection": false,
"before opening first browser window": false,
"before first paint": !Services.prefs.getBoolPref("toolkit.lazyHiddenWindow"),
// Bug 1531854
"before handling user events": true,
"before becoming idle": true,
};
for (let phase in extras) {
if (!(phase in phasesExpectations)) {
ok(false, `Startup phase '${phase}' should be specified.`);
continue;
}
is(extras[phase].hiddenWindowLoaded, phasesExpectations[phase],
`Hidden window loaded at '${phase}': ${phasesExpectations[phase]}`);
}
});

View File

@ -49,6 +49,7 @@ function startupRecorder() {
"image-loading": new Set(),
},
code: {},
extras: {},
prefStats: {},
};
this.done = new Promise(resolve => { this._resolve = resolve; });
@ -73,6 +74,9 @@ startupRecorder.prototype = {
}
}),
};
this.data.extras[name] = {
hiddenWindowLoaded: Services.appShell.hasHiddenWindow,
};
},
observe(subject, topic, data) {