Loading browser/components/BrowserGlue.sys.mjs +5 −0 Original line number Diff line number Diff line Loading @@ -3497,6 +3497,11 @@ BrowserGlue.prototype = { lazy.RemoteSecuritySettings.init(); }, function RemoteSettingsPollChanges() { // Support clients that use the "sync" event or "remote-settings:changes-poll-end". lazy.RemoteSettings.pollChanges({ trigger: "timer" }); }, function BrowserUsageTelemetryReportProfileCount() { lazy.BrowserUsageTelemetry.reportProfileCount(); }, Loading mobile/shared/chrome/geckoview/geckoview.js +5 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ ChromeUtils.defineESModuleGetters(this, { InitializationTracker: "resource://gre/modules/GeckoViewTelemetry.sys.mjs", RemoteSecuritySettings: "resource://gre/modules/psm/RemoteSecuritySettings.sys.mjs", RemoteSettings: "resource://services-settings/remote-settings.sys.mjs", SafeBrowsing: "resource://gre/modules/SafeBrowsing.sys.mjs", }); Loading Loading @@ -922,6 +923,10 @@ function startup() { Blocklist.loadBlocklistAsync(); }); InitLater(() => { RemoteSettings.pollChanges({ trigger: "timer" }); }); // This should always go last, since the idle tasks (except for the ones with // timeouts) should execute in order. Note that this observer notification is // not guaranteed to fire, since the window could close before we get here. Loading services/settings/Attachments.sys.mjs +6 −0 Original line number Diff line number Diff line Loading @@ -223,6 +223,10 @@ export class Downloader { fallbackToDump = false; } avoidDownload = true; fallbackToCache = true; fallbackToDump = true; const dumpInfo = new LazyRecordAndBuffer(() => this._readAttachmentDump(attachmentId) ); Loading Loading @@ -444,6 +448,8 @@ export class Downloader { attachment: { location, hash, size }, } = record; return (await this.#fetchAttachment(record)).buffer; // eslint-disable-next-line no-unreachable const remoteFileUrl = (await this._baseAttachmentsURL()) + location; const { retries = 3, checkHash = true } = options; Loading services/settings/RemoteSettingsClient.sys.mjs +24 −22 Original line number Diff line number Diff line Loading @@ -424,11 +424,19 @@ export class RemoteSettingsClient extends EventEmitter { order = "", // not sorted by default. dumpFallback = true, emptyListFallback = true, forceSync = false, loadDumpIfNewer = true, syncIfEmpty = true, } = options; let { verifySignature = false } = options; const hasLocalDump = await lazy.Utils.hasLocalDump( this.bucketName, this.collectionName ); if (!hasLocalDump) { return []; } const forceSync = false; const syncIfEmpty = true; let verifySignature = false; const hasParallelCall = !!this._importingPromise; let data; Loading Loading @@ -598,6 +606,10 @@ export class RemoteSettingsClient extends EventEmitter { * @param {Object} options See #maybeSync() options. */ async sync(options) { if (AppConstants.BASE_BROWSER_VERSION) { return; } if (lazy.Utils.shouldSkipRemoteActivityDueToTests) { return; } Loading Loading @@ -664,7 +676,7 @@ export class RemoteSettingsClient extends EventEmitter { let thrownError = null; try { // If network is offline, we can't synchronize. if (lazy.Utils.isOffline) { if (!AppConstants.BASE_BROWSER_VERSION && lazy.Utils.isOffline) { throw new RemoteSettingsClient.NetworkOfflineError(); } Loading Loading @@ -1046,14 +1058,8 @@ export class RemoteSettingsClient extends EventEmitter { options = {} ) { const { retry = false } = options; const since = retry || !localTimestamp ? undefined : `"${localTimestamp}"`; // Fetch collection metadata and list of changes from server. lazy.console.debug( `${this.identifier} Fetch changes from server (expected=${expectedTimestamp}, since=${since})` ); const { metadata, remoteTimestamp, remoteRecords } = await this._fetchChangeset(expectedTimestamp, since); let metadata, remoteTimestamp; // We build a sync result, based on remote changes. const syncResult = { Loading @@ -1062,24 +1068,20 @@ export class RemoteSettingsClient extends EventEmitter { updated: [], deleted: [], }; // If data wasn't changed, return empty sync result. // This can happen when we update the signature but not the data. lazy.console.debug( `${this.identifier} local timestamp: ${localTimestamp}, remote: ${remoteTimestamp}` ); if (localTimestamp && remoteTimestamp < localTimestamp) { try { await this._importJSONDump(); } catch (e) { return syncResult; } await this.db.importChanges(metadata, remoteTimestamp, remoteRecords, { clear: retry, }); // Read the new local data, after updating. const newLocal = await this.db.list(); const newRecords = newLocal.map(r => this._cleanLocalFields(r)); // And verify the signature on what is now stored. if (this.verifySignature) { if (metadata === undefined) { // When working only with dumps, we do not have signatures. } else if (this.verifySignature) { try { await this._validateCollectionSignature( newRecords, Loading services/settings/dumps/gen_last_modified.py +2 −0 Original line number Diff line number Diff line Loading @@ -63,8 +63,10 @@ def main(output): dumps_locations = [] if buildconfig.substs["MOZ_BUILD_APP"] == "browser": dumps_locations += ["services/settings/dumps/"] dumps_locations += ["services/settings/static-dumps/"] elif buildconfig.substs["MOZ_BUILD_APP"] == "mobile/android": dumps_locations += ["services/settings/dumps/"] dumps_locations += ["services/settings/static-dumps/"] elif buildconfig.substs["MOZ_BUILD_APP"] == "mobile/ios": dumps_locations += ["services/settings/dumps/"] elif buildconfig.substs["MOZ_BUILD_APP"] == "comm/mail": Loading Loading
browser/components/BrowserGlue.sys.mjs +5 −0 Original line number Diff line number Diff line Loading @@ -3497,6 +3497,11 @@ BrowserGlue.prototype = { lazy.RemoteSecuritySettings.init(); }, function RemoteSettingsPollChanges() { // Support clients that use the "sync" event or "remote-settings:changes-poll-end". lazy.RemoteSettings.pollChanges({ trigger: "timer" }); }, function BrowserUsageTelemetryReportProfileCount() { lazy.BrowserUsageTelemetry.reportProfileCount(); }, Loading
mobile/shared/chrome/geckoview/geckoview.js +5 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ ChromeUtils.defineESModuleGetters(this, { InitializationTracker: "resource://gre/modules/GeckoViewTelemetry.sys.mjs", RemoteSecuritySettings: "resource://gre/modules/psm/RemoteSecuritySettings.sys.mjs", RemoteSettings: "resource://services-settings/remote-settings.sys.mjs", SafeBrowsing: "resource://gre/modules/SafeBrowsing.sys.mjs", }); Loading Loading @@ -922,6 +923,10 @@ function startup() { Blocklist.loadBlocklistAsync(); }); InitLater(() => { RemoteSettings.pollChanges({ trigger: "timer" }); }); // This should always go last, since the idle tasks (except for the ones with // timeouts) should execute in order. Note that this observer notification is // not guaranteed to fire, since the window could close before we get here. Loading
services/settings/Attachments.sys.mjs +6 −0 Original line number Diff line number Diff line Loading @@ -223,6 +223,10 @@ export class Downloader { fallbackToDump = false; } avoidDownload = true; fallbackToCache = true; fallbackToDump = true; const dumpInfo = new LazyRecordAndBuffer(() => this._readAttachmentDump(attachmentId) ); Loading Loading @@ -444,6 +448,8 @@ export class Downloader { attachment: { location, hash, size }, } = record; return (await this.#fetchAttachment(record)).buffer; // eslint-disable-next-line no-unreachable const remoteFileUrl = (await this._baseAttachmentsURL()) + location; const { retries = 3, checkHash = true } = options; Loading
services/settings/RemoteSettingsClient.sys.mjs +24 −22 Original line number Diff line number Diff line Loading @@ -424,11 +424,19 @@ export class RemoteSettingsClient extends EventEmitter { order = "", // not sorted by default. dumpFallback = true, emptyListFallback = true, forceSync = false, loadDumpIfNewer = true, syncIfEmpty = true, } = options; let { verifySignature = false } = options; const hasLocalDump = await lazy.Utils.hasLocalDump( this.bucketName, this.collectionName ); if (!hasLocalDump) { return []; } const forceSync = false; const syncIfEmpty = true; let verifySignature = false; const hasParallelCall = !!this._importingPromise; let data; Loading Loading @@ -598,6 +606,10 @@ export class RemoteSettingsClient extends EventEmitter { * @param {Object} options See #maybeSync() options. */ async sync(options) { if (AppConstants.BASE_BROWSER_VERSION) { return; } if (lazy.Utils.shouldSkipRemoteActivityDueToTests) { return; } Loading Loading @@ -664,7 +676,7 @@ export class RemoteSettingsClient extends EventEmitter { let thrownError = null; try { // If network is offline, we can't synchronize. if (lazy.Utils.isOffline) { if (!AppConstants.BASE_BROWSER_VERSION && lazy.Utils.isOffline) { throw new RemoteSettingsClient.NetworkOfflineError(); } Loading Loading @@ -1046,14 +1058,8 @@ export class RemoteSettingsClient extends EventEmitter { options = {} ) { const { retry = false } = options; const since = retry || !localTimestamp ? undefined : `"${localTimestamp}"`; // Fetch collection metadata and list of changes from server. lazy.console.debug( `${this.identifier} Fetch changes from server (expected=${expectedTimestamp}, since=${since})` ); const { metadata, remoteTimestamp, remoteRecords } = await this._fetchChangeset(expectedTimestamp, since); let metadata, remoteTimestamp; // We build a sync result, based on remote changes. const syncResult = { Loading @@ -1062,24 +1068,20 @@ export class RemoteSettingsClient extends EventEmitter { updated: [], deleted: [], }; // If data wasn't changed, return empty sync result. // This can happen when we update the signature but not the data. lazy.console.debug( `${this.identifier} local timestamp: ${localTimestamp}, remote: ${remoteTimestamp}` ); if (localTimestamp && remoteTimestamp < localTimestamp) { try { await this._importJSONDump(); } catch (e) { return syncResult; } await this.db.importChanges(metadata, remoteTimestamp, remoteRecords, { clear: retry, }); // Read the new local data, after updating. const newLocal = await this.db.list(); const newRecords = newLocal.map(r => this._cleanLocalFields(r)); // And verify the signature on what is now stored. if (this.verifySignature) { if (metadata === undefined) { // When working only with dumps, we do not have signatures. } else if (this.verifySignature) { try { await this._validateCollectionSignature( newRecords, Loading
services/settings/dumps/gen_last_modified.py +2 −0 Original line number Diff line number Diff line Loading @@ -63,8 +63,10 @@ def main(output): dumps_locations = [] if buildconfig.substs["MOZ_BUILD_APP"] == "browser": dumps_locations += ["services/settings/dumps/"] dumps_locations += ["services/settings/static-dumps/"] elif buildconfig.substs["MOZ_BUILD_APP"] == "mobile/android": dumps_locations += ["services/settings/dumps/"] dumps_locations += ["services/settings/static-dumps/"] elif buildconfig.substs["MOZ_BUILD_APP"] == "mobile/ios": dumps_locations += ["services/settings/dumps/"] elif buildconfig.substs["MOZ_BUILD_APP"] == "comm/mail": Loading