This repository was archived by the owner on Sep 21, 2021. It is now read-only.
File tree Expand file tree Collapse file tree
packages/devtools-services Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -498,6 +498,33 @@ PrefBranch.prototype = {
498498 } ,
499499} ;
500500
501+ class ObserverService {
502+ constructor ( ) {
503+ this . _observers = new Map ( ) ;
504+ }
505+
506+ addObserver ( observer , topic ) {
507+ const topicObservers = this . _observers . get ( topic ) || [ ] ;
508+ this . _observers . set ( topic , topicObservers . concat ( observer ) ) ;
509+ }
510+
511+ removeObserver ( observer , topic ) {
512+ let topicObservers = this . _observers . get ( topic ) || [ ] ;
513+ topicObservers = topicObservers . filter ( obs => obs != observer ) ;
514+ if ( topicObservers . length === 0 ) {
515+ this . _observers . delete ( topic ) ;
516+ } else {
517+ this . _observers . set ( topic , topicObservers . concat ( observer ) ) ;
518+ }
519+ }
520+
521+ notifyObservers ( topic , data ) {
522+ for ( const observer of this . _observers . get ( topic ) || [ ] ) {
523+ observer ( data ) ;
524+ }
525+ }
526+ }
527+
501528window . telemetry = { }
502529window . telemetry . histograms = { }
503530window . telemetry . scalars = { }
@@ -524,6 +551,12 @@ const Services = {
524551 return this . _prefs ;
525552 } ,
526553
554+
555+ /**
556+ * An implementation of nsIObserverService.
557+ */
558+ obs : new ObserverService ( ) ,
559+
527560 /**
528561 * An implementation of Services.appinfo that holds just the
529562 * properties needed by devtools.
You can’t perform that action at this time.
0 commit comments