44 *
55 * @param url: a relative URL to local XML
66 */
7- function getRuleXml ( url ) {
7+ function loadExtensionFile ( url , returnType ) {
88 var xhr = new XMLHttpRequest ( ) ;
99 // Use blocking XHR to ensure everything is loaded by the time
1010 // we return.
@@ -14,14 +14,18 @@ function getRuleXml(url) {
1414 if ( xhr . readyState != 4 ) {
1515 return ;
1616 }
17- return xhr . responseXML ;
17+ if ( returnType === 'xml' ) {
18+ return xhr . responseXML ;
19+ }
20+ return xhr . responseText ;
1821}
1922
23+
2024// Rules are loaded here
2125var all_rules = new RuleSets ( navigator . userAgent , LRUCache , localStorage ) ;
22- for ( var i = 0 ; i < rule_list . length ; i ++ ) {
23- all_rules . addFromXml ( getRuleXml ( rule_list [ i ] ) ) ;
24- }
26+ var rule_list = 'rules/default.rulesets' ;
27+ all_rules . addFromXml ( loadExtensionFile ( rule_list , 'xml' ) ) ;
28+
2529
2630var USER_RULE_KEY = 'userRules' ;
2731// Records which tabId's are active in the HTTPS Switch Planner (see
@@ -504,7 +508,14 @@ function onBeforeRedirect(details) {
504508}
505509
506510// Registers the handler for requests
507- wr . onBeforeRequest . addListener ( onBeforeRequest , { urls : [ "https://*/*" , "http://*/*" ] } , [ "blocking" ] ) ;
511+ // We listen to all HTTP hosts, because RequestFilter can't handle tons of url restrictions.
512+ wr . onBeforeRequest . addListener ( onBeforeRequest , { urls : [ "http://*/*" ] } , [ "blocking" ] ) ;
513+
514+ // TODO: Listen only to the tiny subset of HTTPS hosts that we rewrite/downgrade.
515+ var httpsUrlsWeListenTo = [ "https://*/*" ] ;
516+ // See: https://developer.chrome.com/extensions/match_patterns
517+ wr . onBeforeRequest . addListener ( onBeforeRequest , { urls : httpsUrlsWeListenTo } , [ "blocking" ] ) ;
518+
508519
509520// Try to catch redirect loops on URLs we've redirected to HTTPS.
510521wr . onBeforeRedirect . addListener ( onBeforeRedirect , { urls : [ "https://*/*" ] } ) ;
0 commit comments