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,13 +14,16 @@ 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
2023// Rules are loaded here
2124var all_rules = new RuleSets ( navigator . userAgent , LRUCache , localStorage ) ;
2225for ( var i = 0 ; i < rule_list . length ; i ++ ) {
23- all_rules . addFromXml ( getRuleXml ( rule_list [ i ] ) ) ;
26+ all_rules . addFromXml ( loadExtensionFile ( rule_list [ i ] , 'xml' ) ) ;
2427}
2528
2629var USER_RULE_KEY = 'userRules' ;
@@ -504,7 +507,14 @@ function onBeforeRedirect(details) {
504507}
505508
506509// Registers the handler for requests
507- wr . onBeforeRequest . addListener ( onBeforeRequest , { urls : [ "https://*/*" , "http://*/*" ] } , [ "blocking" ] ) ;
510+ // We listen to all HTTP hosts, because RequestFilter can't handle tons of url restrictions.
511+ wr . onBeforeRequest . addListener ( onBeforeRequest , { urls : [ "http://*/*" ] } , [ "blocking" ] ) ;
512+
513+ // TODO: Listen only to the tiny subset of HTTPS hosts that we rewrite/downgrade.
514+ var httpsUrlsWeListenTo = [ "https://*/*" ] ;
515+ // See: https://developer.chrome.com/extensions/match_patterns
516+ wr . onBeforeRequest . addListener ( onBeforeRequest , { urls : httpsUrlsWeListenTo } , [ "blocking" ] ) ;
517+
508518
509519// Try to catch redirect loops on URLs we've redirected to HTTPS.
510520wr . onBeforeRedirect . addListener ( onBeforeRedirect , { urls : [ "https://*/*" ] } ) ;
0 commit comments