--- a/services/sync/modules/engines.js
+++ b/services/sync/modules/engines.js
@@ -614,33 +614,33 @@ EngineManager.prototype = {
let name = engineObject || "";
name = name.prototype || "";
name = name.name || "";
this._log.error(`Could not initialize engine ${name}`, ex);
}
},
- unregister(val) {
+ async unregister(val) {
let name = val;
if (val instanceof Engine) {
name = val.name;
}
if (name in this._engines) {
let engine = this._engines[name];
delete this._engines[name];
- Async.promiseSpinningly(engine.finalize());
+ await engine.finalize();
}
},
- clear() {
+ async clear() {
for (let name in this._engines) {
let engine = this._engines[name];
delete this._engines[name];
- Async.promiseSpinningly(engine.finalize());
+ await engine.finalize();
}
},
};
this.Engine = function Engine(name, service) {
if (!service) {
throw new Error("Engine must be associated with a Service instance.");
}
--- a/services/sync/tests/unit/head_helpers.js
+++ b/services/sync/tests/unit/head_helpers.js
@@ -494,17 +494,17 @@ function promiseOneObserver(topic, callb
Utils._orig_getDefaultDeviceName = Utils.getDefaultDeviceName;
Utils.getDefaultDeviceName = function() {
return "Test device name";
};
async function registerRotaryEngine() {
let {RotaryEngine} =
ChromeUtils.import("resource://testing-common/services/sync/rotaryengine.js", {});
- Service.engineManager.clear();
+ await Service.engineManager.clear();
await Service.engineManager.register(RotaryEngine);
let engine = Service.engineManager.get("rotary");
engine.enabled = true;
return { engine, tracker: engine._tracker };
}
--- a/services/sync/tests/unit/test_collections_recovery.js
+++ b/services/sync/tests/unit/test_collections_recovery.js
@@ -28,17 +28,17 @@ add_task(async function test_missing_cry
let handlers = {
"/1.1/johndoe/info/collections": maybe_empty(johnHelper.handler),
"/1.1/johndoe/storage/crypto/keys": johnU("crypto", new ServerWBO("keys").handler()),
"/1.1/johndoe/storage/meta/global": johnU("meta", new ServerWBO("global").handler())
};
let collections = ["clients", "bookmarks", "forms", "history",
"passwords", "prefs", "tabs"];
// Disable addon sync because AddonManager won't be initialized here.
- Service.engineManager.unregister("addons");
+ await Service.engineManager.unregister("addons");
for (let coll of collections) {
handlers["/1.1/johndoe/storage/" + coll] =
johnU(coll, new ServerCollection({}, true).handler());
}
let server = httpd_setup(handlers);
await configureIdentity({username: "johndoe"}, server);
--- a/services/sync/tests/unit/test_corrupt_keys.js
+++ b/services/sync/tests/unit/test_corrupt_keys.js
@@ -38,17 +38,17 @@ add_task(async function test_locally_cha
try {
Svc.Prefs.set("registerEngines", "Tab");
await configureIdentity({ username: "johndoe" }, server);
// We aren't doing a .login yet, so fudge the cluster URL.
Service.clusterURL = Service.identity._token.endpoint;
await Service.engineManager.register(HistoryEngine);
- Service.engineManager.unregister("addons");
+ await Service.engineManager.unregister("addons");
async function corrupt_local_keys() {
Service.collectionKeys._default.keyPair = [
await Weave.Crypto.generateRandomKey(),
await Weave.Crypto.generateRandomKey()
];
}
--- a/services/sync/tests/unit/test_enginemanager.js
+++ b/services/sync/tests/unit/test_enginemanager.js
@@ -87,25 +87,25 @@ add_task(async function test_basics() {
dummy.syncPriority = 4;
engines = await manager.getEnabled();
Assert.deepEqual(engines, [petrol, diesel, dummy]);
_("Unregister an engine by name");
- manager.unregister("dummy");
+ await manager.unregister("dummy");
Assert.equal((await manager.get("dummy")), undefined);
engines = await manager.getAll();
Assert.equal(engines.length, 2);
Assert.equal(engines.indexOf(dummy), -1);
_("Unregister an engine by value");
// manager.unregister() checks for instanceof Engine, so let's make one:
await manager.register(ActualEngine);
let actual = await manager.get("actual");
Assert.ok(actual instanceof ActualEngine);
Assert.ok(actual instanceof Engine);
- manager.unregister(actual);
+ await manager.unregister(actual);
Assert.equal((await manager.get("actual")), undefined);
});
--- a/services/sync/tests/unit/test_errorhandler_1.js
+++ b/services/sync/tests/unit/test_errorhandler_1.js
@@ -36,17 +36,17 @@ function setLastSync(lastSyncValue) {
}
// This relies on Service/ErrorHandler being a singleton. Fixing this will take
// a lot of work.
let errorHandler = Service.errorHandler;
let engine;
add_task(async function setup() {
- Service.engineManager.clear();
+ await Service.engineManager.clear();
await Service.engineManager.register(EHTestsCommon.CatapultEngine);
engine = Service.engineManager.get("catapult");
});
async function clean() {
let promiseLogReset = promiseOneObserver("weave:service:reset-file-log");
await Service.startOver();
await promiseLogReset;
--- a/services/sync/tests/unit/test_errorhandler_2.js
+++ b/services/sync/tests/unit/test_errorhandler_2.js
@@ -68,17 +68,17 @@ async function syncAndReportErrorsAndWai
let promise1 = promiseOneObserver(topic);
// also wait for the log file to be written
let promise2 = promiseOneObserver("weave:service:reset-file-log");
errorHandler.syncAndReportErrors();
await promise1;
await promise2;
}
add_task(async function setup() {
- Service.engineManager.clear();
+ await Service.engineManager.clear();
await Service.engineManager.register(EHTestsCommon.CatapultEngine);
engine = Service.engineManager.get("catapult");
});
async function clean() {
let promiseLogReset = promiseOneObserver("weave:service:reset-file-log");
await Service.startOver();
await promiseLogReset;
--- a/services/sync/tests/unit/test_errorhandler_sync_checkServerError.js
+++ b/services/sync/tests/unit/test_errorhandler_sync_checkServerError.js
@@ -6,17 +6,16 @@ ChromeUtils.import("resource://services-
ChromeUtils.import("resource://services-sync/policies.js");
ChromeUtils.import("resource://services-sync/record.js");
ChromeUtils.import("resource://services-sync/service.js");
ChromeUtils.import("resource://services-sync/status.js");
ChromeUtils.import("resource://services-sync/util.js");
ChromeUtils.import("resource://testing-common/services/sync/fakeservices.js");
var engineManager = Service.engineManager;
-engineManager.clear();
function CatapultEngine() {
SyncEngine.call(this, "Catapult", Service);
}
CatapultEngine.prototype = {
__proto__: SyncEngine.prototype,
exception: null, // tests fill this in
async _sync() {
@@ -58,17 +57,18 @@ async function setUp(server) {
async function generateAndUploadKeys(server) {
await generateNewKeys(Service.collectionKeys);
let serverKeys = Service.collectionKeys.asWBO("crypto", "keys");
await serverKeys.encrypt(Service.identity.syncKeyBundle);
let res = Service.resource(server.baseURI + "/1.1/johndoe/storage/crypto/keys");
return (await serverKeys.upload(res)).success;
}
-add_task(async function run_test() {
+add_task(async function setup() {
+ await engineManager.clear();
validate_all_future_pings();
await engineManager.register(CatapultEngine);
});
add_task(async function test_backoff500() {
enableValidationPrefs();
_("Test: HTTP 500 sets backoff status.");
--- a/services/sync/tests/unit/test_fxa_node_reassignment.js
+++ b/services/sync/tests/unit/test_fxa_node_reassignment.js
@@ -16,17 +16,17 @@ ChromeUtils.import("resource://services-
ChromeUtils.import("resource://services-sync/util.js");
ChromeUtils.import("resource://testing-common/services/sync/rotaryengine.js");
ChromeUtils.import("resource://services-sync/browserid_identity.js");
ChromeUtils.import("resource://gre/modules/PromiseUtils.jsm");
add_task(async function setup() {
// Disables all built-in engines. Important for avoiding errors thrown by the
// add-ons engine.
- Service.engineManager.clear();
+ await Service.engineManager.clear();
// Setup the FxA identity manager and cluster manager.
Status.__authManager = Service.identity = new BrowserIDManager();
Service._clusterManager = Service.identity.createClusterManager(Service);
// None of the failures in this file should result in a UI error.
function onUIError() {
do_throw("Errors should not be presented in the UI.");
@@ -248,17 +248,17 @@ add_task(async function test_momentary_4
await syncAndExpectNodeReassignment(server,
"weave:service:sync:finish",
between,
"weave:service:sync:finish",
Service.storageURL + "rotary");
tracker.clearChangedIDs();
- Service.engineManager.unregister(engine);
+ await Service.engineManager.unregister(engine);
});
// This test ends up being a failing info fetch *after we're already logged in*.
add_task(async function test_momentary_401_info_collections_loggedin() {
enableValidationPrefs();
_("Test a failure for info/collections after login that's resolved by reassignment.");
let server = await prepareServer();
--- a/services/sync/tests/unit/test_history_tracker.js
+++ b/services/sync/tests/unit/test_history_tracker.js
@@ -10,17 +10,17 @@ ChromeUtils.import("resource://services-
ChromeUtils.import("resource://services-sync/service.js");
ChromeUtils.import("resource://services-sync/util.js");
let engine;
let tracker;
add_task(async function setup() {
- Service.engineManager.clear();
+ await Service.engineManager.clear();
await Service.engineManager.register(HistoryEngine);
engine = Service.engineManager.get("history");
tracker = engine._tracker;
// Don't write out by default.
tracker.persistChangedIDs = false;
});
--- a/services/sync/tests/unit/test_hmac_error.js
+++ b/services/sync/tests/unit/test_hmac_error.js
@@ -88,17 +88,17 @@ add_task(async function hmac_error_durin
_("---------------------------");
await sync_and_validate_telem();
_("---------------------------");
// Two rotary items, one client record... no errors.
Assert.equal(hmacErrorCount, 0);
} finally {
tracker.clearChangedIDs();
- Service.engineManager.unregister(engine);
+ await Service.engineManager.unregister(engine);
Svc.Prefs.resetBranch("");
Service.recordManager.clearCache();
await promiseStopServer(server);
}
});
add_task(async function hmac_error_during_node_reassignment() {
_("Attempt to replicate an HMAC error during node reassignment.");
@@ -215,21 +215,23 @@ add_task(async function hmac_error_durin
onSyncFinished = function() {
// Two rotary items, one client record... no errors.
Assert.equal(hmacErrorCount, 0);
Svc.Obs.remove("weave:service:sync:finish", obs);
Svc.Obs.remove("weave:service:sync:error", obs);
- tracker.clearChangedIDs();
- Service.engineManager.unregister(engine);
- Svc.Prefs.resetBranch("");
- Service.recordManager.clearCache();
- server.stop(resolve);
+ (async () => {
+ tracker.clearChangedIDs();
+ await Service.engineManager.unregister(engine);
+ Svc.Prefs.resetBranch("");
+ Service.recordManager.clearCache();
+ server.stop(resolve);
+ })();
};
Async.promiseSpinningly(Service.sync());
},
this);
};
};
--- a/services/sync/tests/unit/test_node_reassignment.js
+++ b/services/sync/tests/unit/test_node_reassignment.js
@@ -173,17 +173,17 @@ add_task(async function test_momentary_4
await syncAndExpectNodeReassignment(server,
"weave:service:sync:finish",
between,
"weave:service:sync:finish",
Service.storageURL + "rotary");
tracker.clearChangedIDs();
- Service.engineManager.unregister(engine);
+ await Service.engineManager.unregister(engine);
});
// This test ends up being a failing fetch *after we're already logged in*.
add_task(async function test_momentary_401_info_collections() {
enableValidationPrefs();
_("Test a failure for info/collections that's resolved by reassignment.");
let server = await prepareServer();
@@ -486,10 +486,10 @@ add_task(async function test_loop_avoida
Svc.Obs.add(firstNotification, onFirstSync);
now = Date.now();
await Service.sync();
await deferred.promise;
tracker.clearChangedIDs();
- Service.engineManager.unregister(engine);
+ await Service.engineManager.unregister(engine);
});
--- a/services/sync/tests/unit/test_password_engine.js
+++ b/services/sync/tests/unit/test_password_engine.js
@@ -3,29 +3,28 @@ ChromeUtils.import("resource://services-
ChromeUtils.import("resource://services-sync/service.js");
const LoginInfo = Components.Constructor(
"@mozilla.org/login-manager/loginInfo;1", Ci.nsILoginInfo, "init");
const PropertyBag = Components.Constructor(
"@mozilla.org/hash-property-bag;1", Ci.nsIWritablePropertyBag);
-function run_test() {
- Service.engineManager.unregister("addons"); // To silence errors.
- run_next_test();
-}
-
async function cleanup(engine, server) {
Svc.Obs.notify("weave:engine:stop-tracking");
await engine.wipeClient();
Svc.Prefs.resetBranch("");
Service.recordManager.clearCache();
await promiseStopServer(server);
}
+add_task(async function setup() {
+ await Service.engineManager.unregister("addons"); // To silence errors.
+});
+
add_task(async function test_ignored_fields() {
_("Only changes to syncable fields should be tracked");
let engine = Service.engineManager.get("passwords");
let server = await serverForFoo(engine);
await SyncTestingInfrastructure(server);
--- a/services/sync/tests/unit/test_score_triggers.js
+++ b/services/sync/tests/unit/test_score_triggers.js
@@ -60,17 +60,17 @@ add_task(async function test_tracker_sco
tracker.score += SCORE_INCREMENT_SMALL;
Assert.equal(engine.score, SCORE_INCREMENT_SMALL);
Assert.equal(scoreUpdated, 1);
} finally {
Svc.Obs.remove("weave:engine:score:updated", onScoreUpdated);
tracker.resetScore();
tracker.clearChangedIDs();
- Service.engineManager.unregister(engine);
+ await Service.engineManager.unregister(engine);
}
});
add_task(async function test_sync_triggered() {
let server = sync_httpd_setup();
let { engine, tracker } = await setUp(server);
await Service.login();
@@ -82,17 +82,17 @@ add_task(async function test_sync_trigge
tracker.score += SCORE_INCREMENT_XLARGE;
await promiseOneObserver("weave:service:sync:finish");
await Service.startOver();
await promiseStopServer(server);
tracker.clearChangedIDs();
- Service.engineManager.unregister(engine);
+ await Service.engineManager.unregister(engine);
});
add_task(async function test_clients_engine_sync_triggered() {
enableValidationPrefs();
_("Ensure that client engine score changes trigger a sync.");
// The clients engine is not registered like other engines. Therefore,
@@ -109,17 +109,17 @@ add_task(async function test_clients_eng
await promiseOneObserver("weave:service:sync:finish");
_("Sync due to clients engine change completed.");
await Service.startOver();
await promiseStopServer(server);
tracker.clearChangedIDs();
- Service.engineManager.unregister(engine);
+ await Service.engineManager.unregister(engine);
});
add_task(async function test_incorrect_credentials_sync_not_triggered() {
enableValidationPrefs();
_("Ensure that score changes don't trigger a sync if Status.login != LOGIN_SUCCEEDED.");
let server = sync_httpd_setup();
let { engine, tracker } = await setUp(server);
@@ -143,10 +143,10 @@ add_task(async function test_incorrect_c
Svc.Obs.remove("weave:service:sync:start", onSyncStart);
Assert.equal(Status.login, LOGIN_FAILED_LOGIN_REJECTED);
await Service.startOver();
await promiseStopServer(server);
tracker.clearChangedIDs();
- Service.engineManager.unregister(engine);
+ await Service.engineManager.unregister(engine);
});
--- a/services/sync/tests/unit/test_service_sync_specified.js
+++ b/services/sync/tests/unit/test_service_sync_specified.js
@@ -64,17 +64,17 @@ async function setUp() {
let server = sync_httpd_setup({
"/1.1/johndoe/storage/meta/global": new ServerWBO("global", {}).handler(),
});
await SyncTestingInfrastructure(server, "johndoe", "ilovejane");
return server;
}
add_task(async function setup() {
- Service.engineManager.clear();
+ await Service.engineManager.clear();
validate_all_future_pings();
await Service.engineManager.register(SteamEngine);
await Service.engineManager.register(StirlingEngine);
});
add_task(async function test_noEngines() {
enableValidationPrefs();
--- a/services/sync/tests/unit/test_service_sync_updateEnabledEngines.js
+++ b/services/sync/tests/unit/test_service_sync_updateEnabledEngines.js
@@ -71,17 +71,17 @@ async function setUp(server) {
await serverKeys.encrypt(Service.identity.syncKeyBundle);
let {success} = await serverKeys.upload(Service.resource(Service.cryptoKeysURL));
ok(success);
}
const PAYLOAD = 42;
add_task(async function setup() {
- Service.engineManager.clear();
+ await Service.engineManager.clear();
validate_all_future_pings();
await Service.engineManager.register(SteamEngine);
await Service.engineManager.register(StirlingEngine);
});
add_task(async function test_newAccount() {
enableValidationPrefs();
--- a/services/sync/tests/unit/test_service_wipeClient.js
+++ b/services/sync/tests/unit/test_service_wipeClient.js
@@ -41,17 +41,17 @@ CannotDecryptEngine.prototype = {
this.wasWiped = true;
}
};
let canDecryptEngine;
let cannotDecryptEngine;
add_task(async function setup() {
- Service.engineManager.clear();
+ await Service.engineManager.clear();
await Service.engineManager.register(CanDecryptEngine);
await Service.engineManager.register(CannotDecryptEngine);
canDecryptEngine = Service.engineManager.get("candecrypt");
cannotDecryptEngine = Service.engineManager.get("cannotdecrypt");
});
add_task(async function test_withEngineList() {
--- a/services/sync/tests/unit/test_syncedtabs.js
+++ b/services/sync/tests/unit/test_syncedtabs.js
@@ -64,17 +64,17 @@ function configureClients(clients, clien
MockClientsEngine.clientSettings = clientSettings;
// Send an observer that pretends the engine just finished a sync.
Services.obs.notifyObservers(null, "weave:engine:sync:finish", "tabs");
}
add_task(async function setup() {
await Weave.Service.promiseInitialized;
// Configure Sync with our mock tabs engine and force it to become initialized.
- Weave.Service.engineManager.unregister("tabs");
+ await Weave.Service.engineManager.unregister("tabs");
await Weave.Service.engineManager.register(MockTabsEngine);
Weave.Service.clientsEngine = MockClientsEngine;
tabsEngine = Weave.Service.engineManager.get("tabs");
// Tell the Sync XPCOM service it is initialized.
let weaveXPCService = Cc["@mozilla.org/weave/service;1"]
.getService(Ci.nsISupports)
.wrappedJSObject;
--- a/services/sync/tests/unit/test_syncscheduler.js
+++ b/services/sync/tests/unit/test_syncscheduler.js
@@ -71,17 +71,17 @@ async function cleanUpAndGo(server) {
add_task(async function setup() {
await Service.promiseInitialized;
clientsEngine = Service.clientsEngine;
// Don't remove stale clients when syncing. This is a test-only workaround
// that lets us add clients directly to the store, without losing them on
// the next sync.
clientsEngine._removeRemoteClient = async (id) => {};
- Service.engineManager.clear();
+ await Service.engineManager.clear();
validate_all_future_pings();
scheduler.setDefaults();
await Service.engineManager.register(CatapultEngine);
});
--- a/services/sync/tests/unit/test_telemetry.js
+++ b/services/sync/tests/unit/test_telemetry.js
@@ -62,17 +62,17 @@ async function cleanAndGo(engine, server
Svc.Prefs.resetBranch("");
syncTestLogging();
Service.recordManager.clearCache();
await promiseStopServer(server);
}
add_task(async function setup() {
// Avoid addon manager complaining about not being initialized
- Service.engineManager.unregister("addons");
+ await Service.engineManager.unregister("addons");
});
add_task(async function test_basic() {
enableValidationPrefs();
let helper = track_collections_helper();
let upd = helper.with_updated_collection;
@@ -353,17 +353,17 @@ add_task(async function test_generic_eng
let ping = await sync_and_validate_telem(true);
equal(ping.status.service, SYNC_FAILED_PARTIAL);
deepEqual(ping.engines.find(err => err.name === "steam").failureReason, {
name: "unexpectederror",
error: String(e)
});
} finally {
await cleanAndGo(engine, server);
- Service.engineManager.unregister(engine);
+ await Service.engineManager.unregister(engine);
}
});
add_task(async function test_engine_fail_weird_errors() {
enableValidationPrefs();
await Service.engineManager.register(SteamEngine);
let engine = Service.engineManager.get("steam");
engine.enabled = true;
@@ -383,17 +383,17 @@ add_task(async function test_engine_fail
ping = await sync_and_validate_telem(true);
deepEqual(ping.engines.find(err => err.name === "steam").failureReason, {
name: "unexpectederror",
error: JSON.stringify(e)
});
} finally {
await cleanAndGo(engine, server);
- Service.engineManager.unregister(engine);
+ await Service.engineManager.unregister(engine);
}
});
add_task(async function test_engine_fail_ioerror() {
enableValidationPrefs();
await Service.engineManager.register(SteamEngine);
let engine = Service.engineManager.get("steam");
@@ -418,17 +418,17 @@ add_task(async function test_engine_fail
equal(ping.status.service, SYNC_FAILED_PARTIAL);
let failureReason = ping.engines.find(e => e.name === "steam").failureReason;
equal(failureReason.name, "unexpectederror");
// ensure the profile dir in the exception message has been stripped.
ok(!failureReason.error.includes(OS.Constants.Path.profileDir), failureReason.error);
ok(failureReason.error.includes("[profileDir]"), failureReason.error);
} finally {
await cleanAndGo(engine, server);
- Service.engineManager.unregister(engine);
+ await Service.engineManager.unregister(engine);
}
});
add_task(async function test_clean_urls() {
enableValidationPrefs();
Service.engineManager.register(SteamEngine);
let engine = Service.engineManager.get("steam");
@@ -449,17 +449,17 @@ add_task(async function test_clean_urls(
engine._errToThrow = "Other error message that includes some:url/foo/bar/ in it.";
ping = await sync_and_validate_telem(true);
equal(ping.status.service, SYNC_FAILED_PARTIAL);
failureReason = ping.engines.find(e => e.name === "steam").failureReason;
equal(failureReason.name, "unexpectederror");
equal(failureReason.error, "Other error message that includes <URL> in it.");
} finally {
await cleanAndGo(engine, server);
- Service.engineManager.unregister(engine);
+ await Service.engineManager.unregister(engine);
}
});
add_task(async function test_initial_sync_engines() {
enableValidationPrefs();
await Service.engineManager.register(SteamEngine);
@@ -487,17 +487,17 @@ add_task(async function test_initial_syn
greaterOrEqual(e.took, 1);
ok(!!e.outgoing);
equal(e.outgoing.length, 1);
notEqual(e.outgoing[0].sent, undefined);
equal(e.outgoing[0].failed, undefined);
}
} finally {
await cleanAndGo(engine, server);
- Service.engineManager.unregister(engine);
+ await Service.engineManager.unregister(engine);
}
});
add_task(async function test_nserror() {
enableValidationPrefs();
await Service.engineManager.register(SteamEngine);
let engine = Service.engineManager.get("steam");
@@ -515,17 +515,17 @@ add_task(async function test_nserror() {
});
let enginePing = ping.engines.find(e => e.name === "steam");
deepEqual(enginePing.failureReason, {
name: "nserror",
code: Cr.NS_ERROR_UNKNOWN_HOST
});
} finally {
await cleanAndGo(engine, server);
- Service.engineManager.unregister(engine);
+ await Service.engineManager.unregister(engine);
}
});
add_task(async function test_sync_why() {
enableValidationPrefs();
await Service.engineManager.register(SteamEngine);
let engine = Service.engineManager.get("steam");
@@ -538,17 +538,17 @@ add_task(async function test_sync_why()
try {
_(`test_generic_engine_fail: Steam tracker contents: ${
JSON.stringify(engine._tracker.changedIDs)}`);
let ping = await wait_for_ping(() => Service.sync({why: "user"}), true, false);
_(JSON.stringify(ping));
equal(ping.why, "user");
} finally {
await cleanAndGo(engine, server);
- Service.engineManager.unregister(engine);
+ await Service.engineManager.unregister(engine);
}
});
add_task(async function test_discarding() {
enableValidationPrefs();
let helper = track_collections_helper();
let upd = helper.with_updated_collection;
@@ -604,17 +604,17 @@ add_task(async function test_no_foreign_
engine._errToThrow = new Error("Oh no!");
await SyncTestingInfrastructure(server);
try {
let ping = await sync_and_validate_telem(true);
equal(ping.status.service, SYNC_FAILED_PARTIAL);
ok(ping.engines.every(e => e.name !== "bogus"));
} finally {
await cleanAndGo(engine, server);
- Service.engineManager.unregister(engine);
+ await Service.engineManager.unregister(engine);
}
});
add_task(async function test_no_foreign_engines_in_success_ping() {
enableValidationPrefs();
await Service.engineManager.register(BogusEngine);
let engine = Service.engineManager.get("bogus");
@@ -622,17 +622,17 @@ add_task(async function test_no_foreign_
let server = await serverForFoo(engine);
await SyncTestingInfrastructure(server);
try {
let ping = await sync_and_validate_telem();
ok(ping.engines.every(e => e.name !== "bogus"));
} finally {
await cleanAndGo(engine, server);
- Service.engineManager.unregister(engine);
+ await Service.engineManager.unregister(engine);
}
});
add_task(async function test_events() {
enableValidationPrefs();
await Service.engineManager.register(BogusEngine);
let engine = Service.engineManager.get("bogus");
@@ -674,17 +674,17 @@ add_task(async function test_events() {
let telem = get_sync_test_telemetry();
// Fake a submission due to shutdown.
ping = await wait_for_ping(() => telem.finish("shutdown"), false, true);
equal(ping.syncs.length, 0);
equal(ping.events.length, 1);
equal(ping.events[0].length, 6);
} finally {
await cleanAndGo(engine, server);
- Service.engineManager.unregister(engine);
+ await Service.engineManager.unregister(engine);
}
});
add_task(async function test_invalid_events() {
enableValidationPrefs();
await Service.engineManager.register(BogusEngine);
let engine = Service.engineManager.get("bogus");
@@ -717,17 +717,17 @@ add_task(async function test_invalid_eve
badextra = { "x": long86 };
await checkNotRecorded("object", "method", "value", badextra);
for (let i = 0; i < 10; i++) {
badextra["name" + i] = "x";
}
await checkNotRecorded("object", "method", "value", badextra);
} finally {
await cleanAndGo(engine, server);
- Service.engineManager.unregister(engine);
+ await Service.engineManager.unregister(engine);
}
});
add_task(async function test_no_ping_for_self_hosters() {
enableValidationPrefs();
let telem = get_sync_test_telemetry();
let oldSubmit = telem.submit;
@@ -748,11 +748,11 @@ add_task(async function test_no_ping_for
await Service.sync();
let pingSubmitted = await submitPromise;
// The Sync testing infrastructure already sets up a custom token server,
// so we don't need to do anything to simulate a self-hosted user.
ok(!pingSubmitted, "Should not submit ping with custom token server URL");
} finally {
telem.submit = oldSubmit;
await cleanAndGo(engine, server);
- Service.engineManager.unregister(engine);
+ await Service.engineManager.unregister(engine);
}
});
--- a/services/sync/tps/extensions/tps/resource/tps.jsm
+++ b/services/sync/tps/extensions/tps/resource/tps.jsm
@@ -921,17 +921,17 @@ var TPS = {
if (settings.ignoreUnusedEngines && Array.isArray(this._enabledEngines)) {
let names = {};
for (let name of this._enabledEngines) {
names[name] = true;
}
for (let engine of Weave.Service.engineManager.getEnabled()) {
if (!(engine.name in names)) {
Logger.logInfo("Unregistering unused engine: " + engine.name);
- Weave.Service.engineManager.unregister(engine);
+ await Weave.Service.engineManager.unregister(engine);
}
}
}
Logger.logInfo("Starting phase " + this._currentPhase);
Logger.logInfo("setting client.name to " + this.phases[this._currentPhase]);
Weave.Svc.Prefs.set("client.name", this.phases[this._currentPhase]);