/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
// Bug 1799977: Using workaround to test telemetry in plain mochitests.
// Also see Bug 1940064.
var GleanTest;
(
function () {
async
function testResetFOG() {
return SpecialPowers.spawnChrome([], async () => {
await Services.fog.testFlushAllChildren();
Services.fog.testResetFOG();
});
}
async
function flush() {
return SpecialPowers.spawnChrome([], async () => {
await Services.fog.testFlushAllChildren();
});
}
async
function testGetValue(chain) {
return SpecialPowers.spawnChrome([chain], async chain => {
await Services.fog.testFlushAllChildren();
const window =
this.browsingContext.topChromeWindow;
let glean = window.Glean;
while (chain.length) {
glean = glean[chain.shift()];
}
return glean.testGetValue();
});
}
function recurse(chain = []) {
return new Proxy(
{},
{
get(_, prop) {
if (chain.length === 0) {
if (prop ===
"testResetFOG") {
return testResetFOG;
}
else if (prop ===
"flush") {
return flush;
}
}
if (chain.length >= 2 && prop ===
"testGetValue") {
return () => testGetValue(chain);
}
return recurse(chain.concat(prop));
},
}
);
}
window.GleanTest = recurse();
})();