@@ -16,21 +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-
22- try {
23- var appPrefs = CC [ "@mozilla.org/preferences-service;1" ] . getService ( CI . nsIPrefBranch ) ;
24- var blockMixedContent = appPrefs . getBoolPref ( "security.mixed_content.block_active_content" ) ;
25- if ( blockMixedContent ) {
26- localPlatformRegexp = new RegExp ( "firefox" ) ;
27- } else {
28- localPlatformRegexp = new RegExp ( "(firefox|mixedcontent)" ) ;
29- }
30- } catch ( e ) {
31- localPlatformRegexp = new RegExp ( "(firefox|mixedcontent)" ) ;
32- }
33-
3419ruleset_counter = 0 ;
3520function RuleSet ( name , xmlName , match_rule , default_off , platform ) {
3621 if ( xmlName == "WordPress.xml" || xmlName == "Github.xml" ) {
@@ -54,7 +39,7 @@ function RuleSet(name, xmlName, match_rule, default_off, platform) {
5439 this . on_by_default = false ;
5540 }
5641 if ( platform )
57- if ( platform . search ( localPlatformRegexp ) == - 1 ) {
42+ if ( platform . search ( HTTPSRules . localPlatformRegexp ) == - 1 ) {
5843 this . on_by_default = false ;
5944 this . notes = "Only for " + platform ;
6045 }
@@ -398,6 +383,7 @@ const HTTPSRules = {
398383 this . rulesetsByID = { } ;
399384 this . rulesetsByName = { } ;
400385 var t1 = new Date ( ) . getTime ( ) ;
386+ this . checkMixedContentHandling ( ) ;
401387 var rulefiles = RuleWriter . enumerate ( RuleWriter . getCustomRuleDir ( ) ) ;
402388 this . scanRulefiles ( rulefiles ) ;
403389 rulefiles = RuleWriter . enumerate ( RuleWriter . getRuleDir ( ) ) ;
@@ -428,6 +414,30 @@ const HTTPSRules = {
428414 return ;
429415 } ,
430416
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+
431441 scanRulefiles : function ( rulefiles ) {
432442 var i = 0 ;
433443 var r = null ;
0 commit comments