51 lines
1.5 KiB
JavaScript
51 lines
1.5 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
const { AppConstants } = ChromeUtils.importESModule(
|
|
"resource://gre/modules/AppConstants.sys.mjs"
|
|
);
|
|
|
|
const { ContentTaskUtils } = ChromeUtils.importESModule(
|
|
"resource://testing-common/ContentTaskUtils.sys.mjs"
|
|
);
|
|
|
|
add_setup(
|
|
/* on Android FOG is set up through head.js */
|
|
{ skip_if: () => !runningInParent || AppConstants.platform == "android" },
|
|
function test_setup() {
|
|
// Give FOG a temp profile to init within.
|
|
do_get_profile();
|
|
|
|
// We need to initialize it once, otherwise operations will be stuck in the pre-init queue.
|
|
Services.fog.initializeFOG();
|
|
}
|
|
);
|
|
|
|
// Keep in sync with ipc.rs.
|
|
// "Why no -1?" Because the limit's 100k. The -1 is because of atomic ops.
|
|
const FOG_IPC_PAYLOAD_ACCESS_LIMIT = 100000;
|
|
|
|
add_task({ skip_if: () => runningInParent }, async function run_child_stuff() {
|
|
for (let i = 0; i < FOG_IPC_PAYLOAD_ACCESS_LIMIT + 1; i++) {
|
|
Glean.testOnly.badCode.add(1);
|
|
}
|
|
});
|
|
|
|
add_task(
|
|
{ skip_if: () => !runningInParent },
|
|
async function test_fog_ipc_limit() {
|
|
await run_test_in_child("test_FOGIPCLimit.js");
|
|
|
|
await ContentTaskUtils.waitForCondition(() => {
|
|
return !!Glean.testOnly.badCode.testGetValue();
|
|
}, "Waiting for IPC.");
|
|
|
|
// The child exceeded the number of accesses to trigger an IPC flush.
|
|
Assert.greater(
|
|
Glean.testOnly.badCode.testGetValue(),
|
|
FOG_IPC_PAYLOAD_ACCESS_LIMIT
|
|
);
|
|
}
|
|
);
|