Bug 1295352 - Check that there is no active gUM after each runTest test. r=pehrsons

MozReview-Commit-ID: 4VVb2ZJWiCL

--HG--
extra : rebase_source : e1de9c80ff6047673d3dbf77ce49ef5bcf34568a
extra : intermediate-source : 1a7948aa1a31238d94321fd70c9f89e8e3aa6a6d
extra : source : dd574e92185152653dbf070d55bf93fb3e28edd6
This commit is contained in:
Jan-Ivar Bruaroey 2016-08-05 00:46:25 -04:00
parent f0f40ee684
commit c305ba7667

View File

@ -254,6 +254,23 @@ function createHTML(options) {
return scriptsReady.then(() => realCreateHTML(options));
}
var pushPrefs = (...p) => new Promise(r => SpecialPowers.pushPrefEnv({set: p}, r));
// noGum - Helper to detect whether active guM tracks still exist.
//
// It relies on the fact that, by spec, device labels from enumerateDevices are
// only visible during active gum calls. They're also visible when persistent
// permissions are granted, so turn off media.navigator.permission.disabled
// (which is normally on otherwise in our tests). Lastly, we must turn on
// media.navigator.permission.fake otherwise fake devices don't count as active.
var noGum = () => pushPrefs(["media.navigator.permission.disabled", false],
["media.navigator.permission.fake", true])
.then(() => navigator.mediaDevices.enumerateDevices())
.then(([device]) => device &&
is(device.label, "", "Test must leave no active gUM streams behind."));
var runTest = testFunction => scriptsReady
.then(() => runTestWhenReady(testFunction))
.then(() => noGum())
.then(() => finish());