@@ -82,35 +82,38 @@ const HTTPS = {
8282
8383 getApplicableListForContext : function ( ctx , uri ) {
8484 var alist = null ;
85- var domWinOrNode = null ;
85+ var domWin = null ;
8686 if ( ! ctx ) {
8787 this . log ( WARN , "No context loading " + uri . spec ) ;
8888 return null ;
8989 }
90-
91- try {
92- domWinOrNode = ctx . QueryInterface ( CI . nsIDOMWindow ) ;
93- domWinOrNode = domWinOrNode . top ;
94- } catch ( e ) {
95- try {
96- domWinOrNode = ctx . QueryInterface ( CI . nsIDOMNode ) ;
97- } catch ( e ) {
98- this . log ( WARN , "Context coercion failure for " + uri . spec ) ;
99- return null ;
100- }
90+ if ( ctx instanceof CI . nsIDOMWindow ) {
91+ domWin = ctx . QueryInterface ( CI . nsIDOMWindow ) ;
92+ } else if ( ctx instanceof CI . nsIDOMNode ) {
93+ domWin = ctx . QueryInterface ( CI . nsIDOMNode ) . ownerDocument . defaultView ;
94+ } else {
95+ this . log ( WARN , "Context for " + uri . spec +
96+ "is some bizarre unexpected thing: " + ctx ) ;
97+ return null ;
10198 }
10299
103- if ( "https_everywhere_applicable_rules" in domWinOrNode ) {
104- alist = domWinOrNode . https_everywhere_applicable_rules ;
100+ if ( ! ( domWin instanceof CI . nsIDOMWindow ) ) {
101+ this . log ( WARN , "that isn't a domWindow!" ) ;
102+ }
103+ domWin = domWin . top ; // jump out of iframes
104+ if ( "https_everywhere_applicable_rules" in domWin ) {
105+ this . log ( DBUG , "Found existing applicable list" ) ;
106+ alist = domWin . https_everywhere_applicable_rules ;
107+ //alist.show_applicable();
105108 } else {
106109 // Usually onLocationChange should have put this in here for us, in some
107110 // cases perhaps we have to make it here...
108111 alist = new ApplicableList ( this . log ) ;
109- domWinOrNode . https_everywhere_applicable_rules = alist ;
112+ domWin . https_everywhere_applicable_rules = alist ;
110113 this . log ( WARN , "had to generate applicable list in forceURI for " +
111114 uri . spec + ", " + alist ) ;
112115 }
113- this . log ( WARN , "Successfully returning " + alist ) ;
116+ this . log ( VERB , "Successfully returning " + alist ) ;
114117 return alist ;
115118 } ,
116119
@@ -122,7 +125,7 @@ const HTTPS = {
122125
123126 // first of all we need to get the applicable rules list to keep track of
124127 // what rulesets might have applied to this page
125- this . log ( WARN , "Context is " + ctx ) ;
128+ this . log ( VERB , "Context is " + ctx ) ;
126129 var alist = this . getApplicableListForContext ( ctx , uri ) ;
127130 var newuri = HTTPSRules . rewrittenURI ( alist , uri ) ;
128131 if ( ! newuri ) return true ; // no applicable rule
0 commit comments