Bug 1382913 - throw an error when a non existing observer is removed from observers.js. r?kitcambridge
MozReview-Commit-ID: AR2IPDH0Rpw
--- a/services/common/observers.js
+++ b/services/common/observers.js
@@ -59,16 +59,18 @@ this.Observers = {
// or thisObject, as far as I know, since the keys to JavaScript hashes
// (a.k.a. objects) can apparently only be primitive values.
let [observer] = this._cache.filter(v => v.topic == topic &&
v.callback == callback &&
v.thisObject == thisObject);
if (observer) {
this._service.removeObserver(observer, topic);
this._cache.splice(this._cache.indexOf(observer), 1);
+ } else {
+ throw new Error("Attempt to remove non-existing observer");
}
},
/**
* Notify observers about something.
*
* @param topic {String}
* the topic to notify observers about
--- a/services/sync/tests/unit/test_score_triggers.js
+++ b/services/sync/tests/unit/test_score_triggers.js
@@ -56,17 +56,17 @@ add_task(async function test_tracker_sco
let { engine, tracker } = await registerRotaryEngine();
let scoreUpdated = 0;
function onScoreUpdated() {
scoreUpdated++;
}
- Svc.Obs.add("weave:engine:score:updated", onScoreUpdated());
+ Svc.Obs.add("weave:engine:score:updated", onScoreUpdated);
try {
do_check_eq(engine.score, 0);
tracker.score += SCORE_INCREMENT_SMALL;
do_check_eq(engine.score, SCORE_INCREMENT_SMALL);
do_check_eq(scoreUpdated, 1);