59 lines
1.5 KiB
JavaScript
59 lines
1.5 KiB
JavaScript
/* 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();
|
|
})();
|