Bug 1463750 - Move RemoteSettings to services/settings/ r=mgoodwin
MozReview-Commit-ID: 7IwUysPBHZu
--- a/browser/installer/package-manifest.in
+++ b/browser/installer/package-manifest.in
@@ -294,16 +294,17 @@
@RESPATH@/components/nsPrompter.js
@RESPATH@/components/SyncComponents.manifest
@RESPATH@/components/Weave.js
@RESPATH@/components/FxAccountsComponents.manifest
@RESPATH@/components/FxAccountsPush.js
@RESPATH@/components/CaptivePortalDetectComponents.manifest
@RESPATH@/components/captivedetect.js
@RESPATH@/components/servicesComponents.manifest
+@RESPATH@/components/servicesSettings.manifest
@RESPATH@/components/cryptoComponents.manifest
@RESPATH@/components/TelemetryStartup.js
@RESPATH@/components/TelemetryStartup.manifest
@RESPATH@/components/XULStore.js
@RESPATH@/components/XULStore.manifest
@RESPATH@/components/recording-cmdline.js
@RESPATH@/components/recording-cmdline.manifest
@RESPATH@/components/htmlMenuBuilder.js
--- a/mobile/android/installer/package-manifest.in
+++ b/mobile/android/installer/package-manifest.in
@@ -179,16 +179,17 @@
@BINPATH@/components/nsFormAutoComplete.js
@BINPATH@/components/FormHistoryStartup.js
@BINPATH@/components/nsInputListAutoComplete.js
@BINPATH@/components/contentAreaDropListener.manifest
@BINPATH@/components/contentAreaDropListener.js
@BINPATH@/components/nsINIProcessor.manifest
@BINPATH@/components/nsINIProcessor.js
@BINPATH@/components/servicesComponents.manifest
+@BINPATH@/components/servicesSettings.manifest
#ifndef MOZ_GECKOVIEW_JAR
@BINPATH@/components/TelemetryStartup.js
@BINPATH@/components/TelemetryStartup.manifest
#endif
@BINPATH@/components/XULStore.js
@BINPATH@/components/XULStore.manifest
--- a/services/common/blocklist-clients.js
+++ b/services/common/blocklist-clients.js
@@ -6,18 +6,18 @@
var EXPORTED_SYMBOLS = [
"initialize",
];
ChromeUtils.import("resource://gre/modules/Services.jsm");
const { OS } = ChromeUtils.import("resource://gre/modules/osfile.jsm", {});
-ChromeUtils.defineModuleGetter(this, "RemoteSettings", "resource://services-common/remote-settings.js");
-ChromeUtils.defineModuleGetter(this, "jexlFilterFunc", "resource://services-common/remote-settings.js");
+ChromeUtils.defineModuleGetter(this, "RemoteSettings", "resource://services-settings/remote-settings.js");
+ChromeUtils.defineModuleGetter(this, "jexlFilterFunc", "resource://services-settings/remote-settings.js");
const PREF_BLOCKLIST_BUCKET = "services.blocklist.bucket";
const PREF_BLOCKLIST_ONECRL_COLLECTION = "services.blocklist.onecrl.collection";
const PREF_BLOCKLIST_ONECRL_CHECKED_SECONDS = "services.blocklist.onecrl.checked";
const PREF_BLOCKLIST_ONECRL_SIGNER = "services.blocklist.onecrl.signer";
const PREF_BLOCKLIST_ADDONS_COLLECTION = "services.blocklist.addons.collection";
const PREF_BLOCKLIST_ADDONS_CHECKED_SECONDS = "services.blocklist.addons.checked";
const PREF_BLOCKLIST_ADDONS_SIGNER = "services.blocklist.addons.signer";
--- a/services/common/docs/RemoteSettings.rst
+++ b/services/common/docs/RemoteSettings.rst
@@ -1,25 +1,25 @@
.. _services/remotesettings:
===============
Remote Settings
===============
-The `remote-settings.js <https://dxr.mozilla.org/mozilla-central/source/services/common/remote-settings.js>`_ module offers the ability to fetch remote settings that are kept in sync with Mozilla servers.
+The `remote-settings.js <https://dxr.mozilla.org/mozilla-central/source/services/settings/remote-settings.js>`_ module offers the ability to fetch remote settings that are kept in sync with Mozilla servers.
Usage
=====
The ``get()`` method returns the list of entries for a specific key. Each entry can have arbitrary attributes, and can only be modified on the server.
.. code-block:: js
- const { RemoteSettings } = ChromeUtils.import("resource://services-common/remote-settings.js", {});
+ const { RemoteSettings } = ChromeUtils.import("resource://services-settings/remote-settings.js", {});
const data = await RemoteSettings("a-key").get();
/*
data == [
{label: "Yahoo", enabled: true, weight: 10, id: "d0782d8d", last_modified: 1522764475905},
{label: "Google", enabled: true, weight: 20, id: "8883955f", last_modified: 1521539068414},
{label: "Ecosia", enabled: false, weight: 5, id: "337c865d", last_modified: 1520527480321},
--- a/services/common/moz.build
+++ b/services/common/moz.build
@@ -16,17 +16,16 @@ EXTRA_COMPONENTS += [
EXTRA_JS_MODULES['services-common'] += [
'async.js',
'blocklist-clients.js',
'kinto-http-client.js',
'kinto-offline-client.js',
'kinto-storage-adapter.js',
'logmanager.js',
'observers.js',
- 'remote-settings.js',
'rest.js',
'uptake-telemetry.js',
'utils.js',
]
if CONFIG['MOZ_WIDGET_TOOLKIT'] != 'android':
EXTRA_JS_MODULES['services-common'] += [
'hawkclient.js',
--- a/services/common/tests/unit/head_global.js
+++ b/services/common/tests/unit/head_global.js
@@ -15,15 +15,15 @@ updateAppInfo({
platformVersion: "",
});
function addResourceAlias() {
ChromeUtils.import("resource://gre/modules/Services.jsm");
const handler = Services.io.getProtocolHandler("resource")
.QueryInterface(Ci.nsIResProtocolHandler);
- let modules = ["common", "crypto"];
+ let modules = ["common", "crypto", "settings"];
for (let module of modules) {
let uri = Services.io.newURI("resource://gre/modules/services-" + module + "/");
handler.setSubstitution("services-" + module, uri);
}
}
addResourceAlias();
--- a/services/common/tests/unit/test_blocklist_targetapp_filter.js
+++ b/services/common/tests/unit/test_blocklist_targetapp_filter.js
@@ -1,10 +1,10 @@
const BlocklistClients = ChromeUtils.import("resource://services-common/blocklist-clients.js", {});
-const { RemoteSettings } = ChromeUtils.import("resource://services-common/remote-settings.js", {});
+const { RemoteSettings } = ChromeUtils.import("resource://services-settings/remote-settings.js", {});
const APP_ID = "xpcshell@tests.mozilla.org";
const TOOLKIT_ID = "toolkit@mozilla.org";
let client;
async function clear_state() {
// Clear local DB.
--- a/services/common/tests/unit/xpcshell.ini
+++ b/services/common/tests/unit/xpcshell.ini
@@ -13,22 +13,16 @@ support-files =
skip-if = appname == "thunderbird"
tags = blocklist
[test_blocklist_clients.js]
tags = blocklist
[test_blocklist_targetapp_filter.js]
tags = blocklist
[test_blocklist_pinning.js]
tags = blocklist
-[test_remote_settings.js]
-tags = remote-settings blocklist
-[test_remote_settings_poll.js]
-tags = remote-settings blocklist
-[test_remote_settings_jexl_filters.js]
-tags = remote-settings
[test_kinto.js]
tags = blocklist
[test_blocklist_signatures.js]
tags = remote-settings blocklist
[test_storage_adapter.js]
tags = remote-settingsblocklist
[test_storage_adapter_shutdown.js]
--- a/services/settings/moz.build
+++ b/services/settings/moz.build
@@ -3,8 +3,18 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
with Files('**'):
BUG_COMPONENT = ('Firefox', 'Remote Settings Client')
DIRS += [
'dumps',
]
+
+EXTRA_COMPONENTS += [
+ 'servicesSettings.manifest',
+]
+
+EXTRA_JS_MODULES['services-settings'] += [
+ 'remote-settings.js',
+]
+
+XPCSHELL_TESTS_MANIFESTS += ['test/unit/xpcshell.ini']
rename from services/common/remote-settings.js
rename to services/settings/remote-settings.js
--- a/services/common/remote-settings.js
+++ b/services/settings/remote-settings.js
@@ -270,18 +270,18 @@ class RemoteSettingsClient {
const { filters = {}, order } = options;
const c = await this.openCollection();
const timestamp = await c.db.getLastModified();
// If the local database was never synchronized, then we attempt to load
// a packaged JSON dump.
if (timestamp == null) {
try {
- const { data } = await this._loadDumpFile();
- await c.loadDump(data);
+ const { data } = await this._loadDumpFile();
+ await c.loadDump(data);
} catch (e) {
// Report but return an empty list since there will be no data anyway.
Cu.reportError(e);
return [];
}
}
const { data } = await c.list({ filters, order });
new file mode 100644
--- /dev/null
+++ b/services/settings/servicesSettings.manifest
@@ -0,0 +1,2 @@
+# Register resource aliases
+resource services-settings resource://gre/modules/services-settings/
new file mode 100644
--- /dev/null
+++ b/services/settings/test/unit/.eslintrc.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = {
+ "extends": [
+ "plugin:mozilla/xpcshell-test"
+ ]
+};
rename from services/common/tests/unit/test_remote_settings.js
rename to services/settings/test/unit/test_remote_settings.js
--- a/services/common/tests/unit/test_remote_settings.js
+++ b/services/settings/test/unit/test_remote_settings.js
@@ -1,14 +1,16 @@
+/* import-globals-from ../../../common/tests/unit/head_helpers.js */
+
const { Constructor: CC } = Components;
ChromeUtils.import("resource://gre/modules/Services.jsm");
ChromeUtils.import("resource://testing-common/httpd.js");
-const { RemoteSettings } = ChromeUtils.import("resource://services-common/remote-settings.js", {});
+const { RemoteSettings } = ChromeUtils.import("resource://services-settings/remote-settings.js", {});
const { UptakeTelemetry } = ChromeUtils.import("resource://services-common/uptake-telemetry.js", {});
const BinaryInputStream = CC("@mozilla.org/binaryinputstream;1",
"nsIBinaryInputStream", "setInputStream");
let server;
let client;
rename from services/common/tests/unit/test_remote_settings_jexl_filters.js
rename to services/settings/test/unit/test_remote_settings_jexl_filters.js
--- a/services/common/tests/unit/test_remote_settings_jexl_filters.js
+++ b/services/settings/test/unit/test_remote_settings_jexl_filters.js
@@ -1,9 +1,10 @@
-const { RemoteSettings } = ChromeUtils.import("resource://services-common/remote-settings.js", {});
+ChromeUtils.import("resource://gre/modules/Services.jsm");
+const { RemoteSettings } = ChromeUtils.import("resource://services-settings/remote-settings.js", {});
let client;
async function createRecords(records) {
const collection = await client.openCollection();
await collection.clear();
for (const record of records) {
await collection.create(record);
rename from services/common/tests/unit/test_remote_settings_poll.js
rename to services/settings/test/unit/test_remote_settings_poll.js
--- a/services/common/tests/unit/test_remote_settings_poll.js
+++ b/services/settings/test/unit/test_remote_settings_poll.js
@@ -1,11 +1,15 @@
+/* import-globals-from ../../../common/tests/unit/head_helpers.js */
+
+ChromeUtils.import("resource://gre/modules/Services.jsm");
ChromeUtils.import("resource://testing-common/httpd.js");
+
const { UptakeTelemetry } = ChromeUtils.import("resource://services-common/uptake-telemetry.js", {});
-const { RemoteSettings } = ChromeUtils.import("resource://services-common/remote-settings.js", {});
+const { RemoteSettings } = ChromeUtils.import("resource://services-settings/remote-settings.js", {});
var server;
const PREF_SETTINGS_SERVER = "services.settings.server";
const PREF_SETTINGS_SERVER_BACKOFF = "services.settings.server.backoff";
const PREF_LAST_UPDATE = "services.settings.last_update_seconds";
const PREF_LAST_ETAG = "services.settings.last_etag";
const PREF_CLOCK_SKEW_SECONDS = "services.settings.clock_skew_seconds";
new file mode 100644
--- /dev/null
+++ b/services/settings/test/unit/xpcshell.ini
@@ -0,0 +1,8 @@
+[DEFAULT]
+head = ../../../common/tests/unit/head_global.js ../../../common/tests/unit/head_helpers.js
+firefox-appdir = browser
+tags = remote-settings
+
+[test_remote_settings.js]
+[test_remote_settings_poll.js]
+[test_remote_settings_jexl_filters.js]
--- a/toolkit/mozapps/extensions/Blocklist.jsm
+++ b/toolkit/mozapps/extensions/Blocklist.jsm
@@ -35,17 +35,17 @@ ChromeUtils.defineModuleGetter(this, "Se
// See Bug 1257565 and Bug 1252456.
const BlocklistClients = {};
ChromeUtils.defineModuleGetter(BlocklistClients, "initialize",
"resource://services-common/blocklist-clients.js");
XPCOMUtils.defineLazyGetter(this, "RemoteSettings", function() {
// Instantiate blocklist clients.
BlocklistClients.initialize();
// Import RemoteSettings for ``pollChanges()``
- const { RemoteSettings } = ChromeUtils.import("resource://services-common/remote-settings.js", {});
+ const { RemoteSettings } = ChromeUtils.import("resource://services-settings/remote-settings.js", {});
return RemoteSettings;
});
const TOOLKIT_ID = "toolkit@mozilla.org";
const KEY_PROFILEDIR = "ProfD";
const KEY_APPDIR = "XCurProcD";
const FILE_BLOCKLIST = "blocklist.xml";
const PREF_BLOCKLIST_LASTUPDATETIME = "app.update.lastUpdateTime.blocklist-background-update-timer";