зеркало из https://github.com/mozilla/gecko-dev.git
When the sanity test fails, report its snapshot via Telemetry. (bug 1194505, r=mattwoodrow,vladan)
This commit is contained in:
Родитель
2b6cbec11a
Коммит
b0b3d88c1e
|
@ -74,6 +74,16 @@ function reportTestReason(val) {
|
|||
histogram.add(val);
|
||||
}
|
||||
|
||||
function reportSnapshotContents(canvas) {
|
||||
try {
|
||||
var data = canvas.toDataURL();
|
||||
Cc['@mozilla.org/observer-service;1'].
|
||||
getService(Ci.nsIObserverService).
|
||||
notifyObservers(null, "graphics-sanity-test-failed", data);
|
||||
} catch (e) {
|
||||
}
|
||||
}
|
||||
|
||||
function annotateCrashReport(value) {
|
||||
try {
|
||||
// "1" if we're annotating the crash report, "" to remove the annotation.
|
||||
|
@ -167,7 +177,9 @@ let listener = {
|
|||
|
||||
// Perform the compositor backbuffer test, which currently we use for
|
||||
// actually deciding whether to enable hardware media decoding.
|
||||
testCompositor(this.win, this.ctx);
|
||||
if (!testCompositor(this.win, this.ctx)) {
|
||||
reportSnapshotContents(this.canvas);
|
||||
}
|
||||
|
||||
this.endTest();
|
||||
},
|
||||
|
|
|
@ -161,6 +161,7 @@ const EXPERIMENTS_CHANGED_TOPIC = "experiments-changed";
|
|||
const SEARCH_ENGINE_MODIFIED_TOPIC = "browser-search-engine-modified";
|
||||
const SEARCH_SERVICE_TOPIC = "browser-search-service";
|
||||
const COMPOSITOR_CREATED_TOPIC = "compositor:created";
|
||||
const SANITY_TEST_FAILED_TOPIC = "graphics-sanity-test-failed";
|
||||
|
||||
/**
|
||||
* Get the current browser.
|
||||
|
@ -814,6 +815,7 @@ EnvironmentCache.prototype = {
|
|||
Services.obs.addObserver(this, SEARCH_ENGINE_MODIFIED_TOPIC, false);
|
||||
Services.obs.addObserver(this, SEARCH_SERVICE_TOPIC, false);
|
||||
Services.obs.addObserver(this, COMPOSITOR_CREATED_TOPIC, false);
|
||||
Services.obs.addObserver(this, SANITY_TEST_FAILED_TOPIC, false);
|
||||
},
|
||||
|
||||
_removeObservers: function () {
|
||||
|
@ -821,6 +823,7 @@ EnvironmentCache.prototype = {
|
|||
Services.obs.removeObserver(this, SEARCH_ENGINE_MODIFIED_TOPIC);
|
||||
Services.obs.removeObserver(this, SEARCH_SERVICE_TOPIC);
|
||||
Services.obs.removeObserver(this, COMPOSITOR_CREATED_TOPIC);
|
||||
Services.obs.removeObserver(this, SANITY_TEST_FAILED_TOPIC);
|
||||
},
|
||||
|
||||
observe: function (aSubject, aTopic, aData) {
|
||||
|
@ -846,6 +849,9 @@ EnvironmentCache.prototype = {
|
|||
// first compositor to be created and then query nsIGfxInfo again.
|
||||
this._onCompositorCreated();
|
||||
break;
|
||||
case SANITY_TEST_FAILED_TOPIC:
|
||||
this._onGraphicsSanityTestFailed(aData);
|
||||
break;
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -925,6 +931,11 @@ EnvironmentCache.prototype = {
|
|||
}
|
||||
},
|
||||
|
||||
_onGraphicsSanityTestFailed: function (aData) {
|
||||
let gfxData = this._currentEnvironment.system.gfx;
|
||||
gfxData.sanityTestSnapshot = aData;
|
||||
},
|
||||
|
||||
/**
|
||||
* Get the build data in object form.
|
||||
* @return Object containing the build data.
|
||||
|
|
Загрузка…
Ссылка в новой задаче