@@ -23,14 +23,24 @@ browser.runtime.onMessage.addListener(function(request, sender, sendResponse) {
2323 openURL ( request ) ;
2424 break ;
2525 case "getRules" :
26- getRules ( request . type , request . options ) . then ( sendResponse ) ;
26+ sendResponse ( getRules ( request . type , request . options ) ) ;
2727 break ;
2828 case "saveRule" :
2929 saveRule ( request . type , request . content ) . then ( sendResponse ) ;
3030 break ;
3131 case "deleteRule" :
3232 deleteRule ( request . type , request . id ) . then ( sendResponse ) ;
3333 break ;
34+ case 'updateCache' :
35+ if ( request . type === 'all' ) {
36+ updateCache ( 'request' ) ;
37+ updateCache ( 'sendHeader' ) ;
38+ updateCache ( 'receiveHeader' ) ;
39+ } else {
40+ updateCache ( request . type ) ;
41+ }
42+ sendResponse ( ) ;
43+ break ;
3444 }
3545} ) ;
3646
@@ -57,36 +67,31 @@ function openURL(options) {
5767
5868browser . webRequest . onBeforeRequest . addListener ( function ( e ) {
5969 //可用:重定向,阻止加载
60- return new Promise ( function ( resolve ) {
61- getRules ( 'request' , { "url" : e . url , "enable" : 1 } ) . then ( ( rules ) => {
62- var redirectTo = e . url ;
63- for ( let item of rules ) {
64- if ( item . action === 'cancel' ) {
65- resolve ( { "cancel" : true } ) ;
66- } else {
67- if ( item . isFunction ) {
68- runTryCatch ( ( ) => {
69- let r = item . func_body ( redirectTo ) ;
70- if ( typeof ( r ) === 'string' ) {
71- redirectTo = r ;
72- }
73- } ) ;
74- } else {
75- if ( item . matchType === 'regexp' ) {
76- redirectTo = redirectTo . replace ( new RegExp ( item . pattern ) , item . to ) ;
77- } else {
78- redirectTo = item . to ;
79- }
70+ let rules = getRules ( 'request' , { "url" : e . url , "enable" : 1 } ) ;
71+ let redirectTo = e . url ;
72+ for ( let item of rules ) {
73+ if ( item . action === 'cancel' ) {
74+ return { "cancel" : true } ;
75+ } else {
76+ if ( item . isFunction ) {
77+ runTryCatch ( ( ) => {
78+ let r = item . func_body ( redirectTo ) ;
79+ if ( typeof ( r ) === 'string' ) {
80+ redirectTo = r ;
8081 }
81- }
82- }
83- if ( redirectTo !== e . url ) {
84- resolve ( { "redirectUrl" : redirectTo } ) ;
82+ } ) ;
8583 } else {
86- resolve ( ) ;
84+ if ( item . matchType === 'regexp' ) {
85+ redirectTo = redirectTo . replace ( new RegExp ( item . pattern ) , item . to ) ;
86+ } else {
87+ redirectTo = item . to ;
88+ }
8789 }
88- } ) ;
89- } ) ;
90+ }
91+ }
92+ if ( redirectTo !== e . url ) {
93+ return { "redirectUrl" : redirectTo } ;
94+ }
9095} , { urls : [ "<all_urls>" ] } , [ 'blocking' ] ) ;
9196
9297function modifyHeaders ( headers , rules ) {
@@ -127,24 +132,18 @@ browser.webRequest.onBeforeSendHeaders.addListener(function(e) {
127132 if ( ! e . requestHeaders ) {
128133 return ;
129134 }
130- return new Promise ( function ( resolve ) {
131- getRules ( 'sendHeader' , { "url" : e . url , "enable" : 1 } ) . then ( ( rules ) => {
132- modifyHeaders ( e . requestHeaders , rules ) ;
133- resolve ( e ) ;
134- } ) ;
135- } ) ;
135+ let rules = getRules ( 'sendHeader' , { "url" : e . url , "enable" : 1 } ) ;
136+ modifyHeaders ( e . requestHeaders , rules ) ;
137+ return { "requestHeaders" : e . requestHeaders } ;
136138} , { urls : [ "<all_urls>" ] } , [ 'blocking' , 'requestHeaders' ] ) ;
137139
138140browser . webRequest . onHeadersReceived . addListener ( function ( e ) {
139141 if ( ! e . responseHeaders ) {
140142 return ;
141143 }
142- return new Promise ( function ( resolve ) {
143- getRules ( 'receiveHeader' , { "url" : e . url , "enable" : 1 } ) . then ( ( rules ) => {
144- modifyHeaders ( e . responseHeaders , rules ) ;
145- resolve ( e ) ;
146- } ) ;
147- } ) ;
144+ let rules = getRules ( 'receiveHeader' , { "url" : e . url , "enable" : 1 } ) ;
145+ modifyHeaders ( e . responseHeaders , rules ) ;
146+ return { "responseHeaders" : e . responseHeaders } ;
148147} , { urls : [ "<all_urls>" ] } , [ 'blocking' , 'responseHeaders' ] ) ;
149148
150149browser . browserAction . onClicked . addListener ( function ( ) {
0 commit comments