fune/browser/base/content/test/performance/browser_startup_images.js
Edouard Oger 5aca028c2c Bug 1392280 - Backout bug 1380377. r=mconley
MozReview-Commit-ID: AOD2ol0yzaC

--HG--
extra : rebase_source : f55cf56275ceb4dc5872e05dd2819dc46ed7f8bb
2017-08-22 11:07:47 -04:00

138 lines
4.5 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
/* A whitelist of images that are loaded at startup but not shown.
* List items support the following attributes:
* - file: The location of the loaded image file.
* - hidpi: An alternative hidpi file location for retina screens, if one exists.
* May be the magic string <not loaded> in strange cases where
* only the low-resolution image is loaded but not shown.
* - platforms: An array of the platforms where the issue is occurring.
* Possible values are linux, win, macosx.
* - intermittentNotLoaded: an array of platforms where this image is
* intermittently not loaded, e.g. because it is
* loaded during the time we stop recording.
* - intermittentShown: An array of platforms where this image is
* intermittently shown, contrary to what our
* whitelist says.
* - photon: If true, this entry only applies for builds with the Photon theme.
* If false, this entry only applies for builds without the Photon theme.
* If undefined, this entry applies for both Photon and non-Photon builds.
*
* Please don't add items to this list. Please remove items from this list.
*/
const whitelist = [
// Photon-only entries
{
file: "chrome://browser/skin/stop.svg",
platforms: ["linux", "win", "macosx"],
},
{
file: "chrome://browser/skin/bookmark-hollow.svg",
platforms: ["linux", "win", "macosx"],
},
{
file: "chrome://browser/skin/page-action.svg",
platforms: ["linux", "win", "macosx"],
},
{
file: "chrome://pocket-shared/skin/pocket.svg",
platforms: ["linux", "win", "macosx"],
},
// Shared entries
{
file: "chrome://browser/skin/arrow-left.svg",
platforms: ["linux", "win", "macosx"],
},
{
file: "chrome://browser/skin/fxa/sync-illustration.svg",
platforms: ["linux", "win", "macosx"],
},
{
file: "chrome://browser/skin/tabbrowser/tab-overflow-indicator.png",
platforms: ["linux", "win", "macosx"],
},
{
file: "chrome://browser/skin/places/toolbarDropMarker.png",
platforms: ["linux", "win", "macosx"],
},
{
file: "chrome://browser/skin/tracking-protection-16.svg#enabled",
platforms: ["linux", "win", "macosx"],
},
{
file: "chrome://browser/skin/tabbrowser/tabDragIndicator.png",
hidpi: "chrome://browser/skin/tabbrowser/tabDragIndicator@2x.png",
platforms: ["linux", "win", "macosx"],
},
{
file: "resource://gre-resources/loading-image.png",
platforms: ["win", "macosx"],
intermittentNotLoaded: ["win", "macosx"],
},
{
file: "resource://gre-resources/broken-image.png",
platforms: ["win", "macosx"],
intermittentNotLoaded: ["win", "macosx"],
},
{
file: "chrome://browser/skin/chevron.svg",
platforms: ["win", "linux", "macosx"],
},
{
file: "chrome://global/skin/icons/resizer.png",
platforms: ["win"],
},
];
add_task(async function() {
let startupRecorder = Cc["@mozilla.org/test/startuprecorder;1"].getService().wrappedJSObject;
await startupRecorder.done;
let data = startupRecorder.data.images;
let filteredWhitelist = whitelist.filter(el => {
return el.platforms.includes(AppConstants.platform);
});
let loadedImages = data["image-loading"];
let shownImages = data["image-drawing"];
for (let loaded of loadedImages.values()) {
let whitelistItem = filteredWhitelist.find(el => {
if (window.devicePixelRatio >= 2 && el.hidpi && el.hidpi == loaded) {
return true;
}
return el.file == loaded;
});
if (whitelistItem) {
if (!whitelistItem.intermittentShown ||
!whitelistItem.intermittentShown.includes(AppConstants.platform)) {
todo(shownImages.has(loaded), `Whitelisted image ${loaded} should not have been shown.`);
}
continue;
}
ok(shownImages.has(loaded), `Loaded image ${loaded} should have been shown.`);
}
// Check for unneeded whitelist entries.
for (let item of filteredWhitelist) {
if (!item.intermittentNotLoaded ||
!item.intermittentNotLoaded.includes(AppConstants.platform)) {
if (window.devicePixelRatio >= 2 && item.hidpi) {
if (item.hidpi != "<not loaded>") {
ok(loadedImages.has(item.hidpi), `Whitelisted image ${item.hidpi} should have been loaded.`);
}
} else {
ok(loadedImages.has(item.file), `Whitelisted image ${item.file} should have been loaded.`);
}
}
}
});