31 lines
1 KiB
JavaScript
31 lines
1 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
ChromeUtils.defineESModuleGetters(this, {
|
|
RemoteSettings: "resource://services-settings/remote-settings.sys.mjs",
|
|
});
|
|
|
|
async function setAndEmitFakeRemoteSettingsData(
|
|
data,
|
|
expectClientInitialized = true
|
|
) {
|
|
const { AMRemoteSettings } = ChromeUtils.importESModule(
|
|
"resource://gre/modules/AddonManager.sys.mjs"
|
|
);
|
|
let client;
|
|
if (expectClientInitialized) {
|
|
ok(AMRemoteSettings.client, "Got a remote settings client");
|
|
ok(AMRemoteSettings.onSync, "Got a remote settings 'sync' event handler");
|
|
client = AMRemoteSettings.client;
|
|
} else {
|
|
// No client is expected to exist, and so we create one to inject the expected data
|
|
// into the RemoteSettings db.
|
|
client = new RemoteSettings(AMRemoteSettings.RS_COLLECTION);
|
|
}
|
|
|
|
await client.db.clear();
|
|
if (data.length) {
|
|
await client.db.importChanges({}, Date.now(), data);
|
|
}
|
|
await client.emit("sync", { data: {} });
|
|
}
|