Bug 1382913 - throw an error when a non existing observer is removed from observers.js. r?kitcambridge draft
authorMark Hammond <mhammond@skippinet.com.au>
Tue, 25 Jul 2017 13:59:44 +1000
changeset 614863 00cb675d026f442d8b65f1411a25189e359d6b6e
parent 614808 dcfb58fcb6dd8f6474eed6520ba6272dedded393
child 638991 20374e52c02d3243b464de09eab4ec3345c70ed5
push id70151
push userbmo:markh@mozilla.com
push dateTue, 25 Jul 2017 04:02:07 +0000
reviewerskitcambridge
bugs1382913
milestone56.0a1
Bug 1382913 - throw an error when a non existing observer is removed from observers.js. r?kitcambridge MozReview-Commit-ID: AR2IPDH0Rpw
services/common/observers.js
services/sync/tests/unit/test_score_triggers.js
--- 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);