summaryrefslogtreecommitdiffstats
path: root/toolkit/mozapps/extensions/test/xpcshell/head_amremotesettings.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/mozapps/extensions/test/xpcshell/head_amremotesettings.js')
-rw-r--r--toolkit/mozapps/extensions/test/xpcshell/head_amremotesettings.js31
1 files changed, 31 insertions, 0 deletions
diff --git a/toolkit/mozapps/extensions/test/xpcshell/head_amremotesettings.js b/toolkit/mozapps/extensions/test/xpcshell/head_amremotesettings.js
new file mode 100644
index 0000000000..36741736fa
--- /dev/null
+++ b/toolkit/mozapps/extensions/test/xpcshell/head_amremotesettings.js
@@ -0,0 +1,31 @@
+/* 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: {} });
+}