@@ -167,6 +167,7 @@ function HTTPSEverywhere() {
167167 . getService ( Components . interfaces . nsIObserverService ) ;
168168 this . obsService . addObserver ( this , "profile-before-change" , false ) ;
169169 this . obsService . addObserver ( this , "profile-after-change" , false ) ;
170+ this . obsService . addObserver ( this , "sessionstore-windows-restored" , false ) ;
170171 return ;
171172}
172173
@@ -430,6 +431,15 @@ HTTPSEverywhere.prototype = {
430431 // hook on redirections (non persistent, otherwise crashes on 1.8.x)
431432 catman . addCategoryEntry ( "net-channel-event-sinks" , SERVICE_CTRID ,
432433 SERVICE_CTRID , false , true ) ;
434+ } else if ( topic == "sessionstore-windows-restored" ) {
435+ var ssl_observatory = CC [ "@eff.org/ssl-observatory;1" ]
436+ . getService ( Components . interfaces . nsISupports )
437+ . wrappedJSObject ;
438+ // FIXME This prefs code is terrible spaghetti
439+ var gbp = ssl_observatory . prefs . getBoolPref ;
440+ var shown = gbp ( "extensions.https_everywhere._observatory.popup_shown" ) ;
441+ if ( ! shown && ssl_observatory . torbutton_installed )
442+ chrome_opener ( "chrome://https-everywhere/content/observatory-popup.xul" ) ;
433443 }
434444 return ;
435445 } ,
@@ -553,6 +563,15 @@ HTTPSEverywhere.prototype = {
553563
554564} ;
555565
566+ function chrome_opener ( uri ) {
567+ // we don't use window.open, because we need to work around TorButton's
568+ // state control
569+ CC [ '@mozilla.org/appshell/window-mediator;1' ]
570+ . getService ( CI . nsIWindowMediator )
571+ . getMostRecentWindow ( 'navigator:browser' )
572+ . open ( uri , '' , 'chrome,centerscreen' ) ;
573+ }
574+
556575var prefs = 0 ;
557576var econsole = 0 ;
558577function https_everywhereLog ( level , str ) {
0 commit comments