@@ -16,19 +16,6 @@ function CookieRule(host, cookiename) {
1616 this . name_c = new RegExp ( cookiename ) ;
1717}
1818
19- // Firefox 23+ blocks mixed content by default, so rulesets that create
20- // mixed content situations should be disabled there
21- var appInfo = CC [ "@mozilla.org/xre/app-info;1" ] . getService ( CI . nsIXULAppInfo ) ;
22- var platformVer = appInfo . platformVersion ;
23- var versionChecker = CC [ "@mozilla.org/xpcom/version-comparator;1" ]
24- . getService ( CI . nsIVersionComparator ) ;
25- if ( versionChecker . compare ( appInfo . version , "23.0a1" ) >= 0 ) {
26- localPlatformRegexp = new RegExp ( "firefox" ) ;
27- } else {
28- localPlatformRegexp = new RegExp ( "(firefox|mixedcontent)" ) ;
29- }
30-
31-
3219ruleset_counter = 0 ;
3320function RuleSet ( name , xmlName , match_rule , default_off , platform ) {
3421 if ( xmlName == "WordPress.xml" || xmlName == "Github.xml" ) {
@@ -52,7 +39,7 @@ function RuleSet(name, xmlName, match_rule, default_off, platform) {
5239 this . on_by_default = false ;
5340 }
5441 if ( platform )
55- if ( platform . search ( localPlatformRegexp ) == - 1 ) {
42+ if ( platform . search ( HTTPSRules . localPlatformRegexp ) == - 1 ) {
5643 this . on_by_default = false ;
5744 this . notes = "Only for " + platform ;
5845 }
@@ -396,6 +383,7 @@ const HTTPSRules = {
396383 this . rulesetsByID = { } ;
397384 this . rulesetsByName = { } ;
398385 var t1 = new Date ( ) . getTime ( ) ;
386+ this . checkMixedContentHandling ( ) ;
399387 var rulefiles = RuleWriter . enumerate ( RuleWriter . getCustomRuleDir ( ) ) ;
400388 this . scanRulefiles ( rulefiles ) ;
401389 rulefiles = RuleWriter . enumerate ( RuleWriter . getRuleDir ( ) ) ;
@@ -426,6 +414,30 @@ const HTTPSRules = {
426414 return ;
427415 } ,
428416
417+ checkMixedContentHandling : function ( ) {
418+ // Firefox 23+ blocks mixed content by default, so rulesets that create
419+ // mixed content situations should be disabled there
420+ var appInfo = CC [ "@mozilla.org/xre/app-info;1" ] . getService ( CI . nsIXULAppInfo ) ;
421+ var platformVer = appInfo . platformVersion ;
422+ var versionChecker = CC [ "@mozilla.org/xpcom/version-comparator;1" ]
423+ . getService ( CI . nsIVersionComparator ) ;
424+ var prefs = Components . classes [ "@mozilla.org/preferences-service;1" ]
425+ . getService ( Components . interfaces . nsIPrefService ) . getBranch ( "" ) ;
426+
427+
428+ // If mixed content is present and enabled, and the user hasn't opted to enable
429+ // mixed content triggering rules, leave them out. Otherwise add them in.
430+ if ( versionChecker . compare ( appInfo . version , "23.0a1" ) >= 0
431+ && prefs . getBoolPref ( "security.mixed_content.block_active_content" )
432+ && ! prefs . getBoolPref ( "extensions.https_everywhere.enable_mixed_rulesets" ) ) {
433+ this . log ( INFO , "Not loading rules that trigger mixed content errors." ) ;
434+ this . localPlatformRegexp = new RegExp ( "firefox" ) ;
435+ } else {
436+ this . log ( INFO , "Loading rules that would normally trigger mixed content" ) ;
437+ this . localPlatformRegexp = new RegExp ( "(firefox|mixedcontent)" ) ;
438+ }
439+ } ,
440+
429441 scanRulefiles : function ( rulefiles ) {
430442 var i = 0 ;
431443 var r = null ;
0 commit comments