Browse Source

Issue #1898 - Make sure that the sanity test stops running if necessary

As part of telemetry removal, d60103257eb83db103f9acab54b1755486b7e9c1 removed the `reportResult` function which also handles the stopping of the sanity test. This also removes unused histogram enumeration values and revises/adds some comments.
tracking
FranklinDM 1 month ago committed by roytam1
parent
commit
d42af42d26
  1. 45
      toolkit/components/gfx/SanityTest.js

45
toolkit/components/gfx/SanityTest.js

@ -22,27 +22,6 @@ const DISABLE_VIDEO_PREF="media.hardware-video-decoding.failed";
const RUNNING_PREF="sanity-test.running";
const TIMEOUT_SEC=20;
// GRAPHICS_SANITY_TEST histogram enumeration values
const TEST_PASSED=0;
const TEST_FAILED_RENDER=1;
const TEST_FAILED_VIDEO=2;
const TEST_CRASHED=3;
const TEST_TIMEOUT=4;
// GRAPHICS_SANITY_TEST_REASON enumeration values.
const REASON_FIRST_RUN=0;
const REASON_FIREFOX_CHANGED=1;
const REASON_DEVICE_CHANGED=2;
const REASON_DRIVER_CHANGED=3;
// GRAPHICS_SANITY_TEST_OS_SNAPSHOT histogram enumeration values
const SNAPSHOT_VIDEO_OK=0;
const SNAPSHOT_VIDEO_FAIL=1;
const SNAPSHOT_ERROR=2;
const SNAPSHOT_TIMEOUT=3;
const SNAPSHOT_LAYERS_OK=4;
const SNAPSHOT_LAYERS_FAIL=5;
function testPixel(ctx, x, y, r, g, b, a, fuzz) {
var data = ctx.getImageData(x, y, 1, 1);
@ -55,6 +34,11 @@ function testPixel(ctx, x, y, r, g, b, a, fuzz) {
return false;
}
function stopRunning() {
Preferences.set(RUNNING_PREF, false);
Services.prefs.savePrefFile(null);
}
function setTimeout(aMs, aCallback) {
var timer = Cc['@mozilla.org/timer;1'].
createInstance(Ci.nsITimer);
@ -100,15 +84,18 @@ function testCompositor(win, ctx) {
var testPassed = true;
if (!verifyVideoRendering(ctx)) {
stopRunning();
Preferences.set(DISABLE_VIDEO_PREF, true);
testPassed = false;
}
if (!verifyLayersRendering(ctx)) {
stopRunning();
testPassed = false;
}
if (testPassed) {
stopRunning();
}
return testPassed;
@ -130,8 +117,10 @@ var listener = {
this.win.onload = this.onWindowLoaded.bind(this);
this.utils = this.win.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIDOMWindowUtils);
// Stop running the test if it timed out.
setTimeout(TIMEOUT_SEC * 1000, () => {
if (this.win) {
stopRunning();
this.endTest();
}
});
@ -208,17 +197,19 @@ SanityTest.prototype = {
Ci.nsISupportsWeakReference]),
shouldRunTest: function() {
// Only test gfx features if firefox has updated, or if the user has a new
// gpu or drivers.
// Only test GFX features if the application was updated, or if the user
// has a new GPU or drivers.
var buildId = Services.appinfo.platformBuildID;
var gfxinfo = Cc["@mozilla.org/gfx/info;1"].getService(Ci.nsIGfxInfo);
// Stop the test and disable hardware video decoding if we crashed.
if (Preferences.get(RUNNING_PREF, false)) {
Preferences.set(DISABLE_VIDEO_PREF, true);
stopRunning();
return false;
}
function checkPref(pref, value, reason) {
function checkPref(pref, value) {
var prefValue = Preferences.get(pref, undefined);
if (prefValue == value) {
return true;
@ -227,9 +218,9 @@ SanityTest.prototype = {
}
// TODO: Handle dual GPU setups
if (checkPref(DRIVER_PREF, gfxinfo.adapterDriverVersion, REASON_DRIVER_CHANGED) &&
checkPref(DEVICE_PREF, gfxinfo.adapterDeviceID, REASON_DEVICE_CHANGED) &&
checkPref(VERSION_PREF, buildId, REASON_FIREFOX_CHANGED))
if (checkPref(DRIVER_PREF, gfxinfo.adapterDriverVersion) &&
checkPref(DEVICE_PREF, gfxinfo.adapterDeviceID) &&
checkPref(VERSION_PREF, buildId))
{
return false;
}

Loading…
Cancel
Save