| Index: webrequest.js | 
| =================================================================== | 
| --- a/webrequest.js | 
| +++ b/webrequest.js | 
| @@ -18,6 +18,7 @@ | 
| var FilterNotifier = require("filterNotifier").FilterNotifier; | 
| var RegExpFilter = require("filterClasses").RegExpFilter; | 
| var platform = require("info").platform; | 
| +var devtools = require("devtools"); | 
|  | 
| ext.webRequest.getIndistinguishableTypes().forEach(function(types) | 
| { | 
| @@ -46,30 +47,44 @@ | 
| } | 
| }); | 
|  | 
| -function onBeforeRequestAsync(url, type, page, filter) | 
| +function onBeforeRequestAsync(page, url, type, docDomain, | 
| +                              thirdParty, key, specificOnly, | 
| +                              filter) | 
| { | 
| if (filter) | 
| FilterNotifier.triggerListeners("filter.hitCount", filter, 0, 0, page); | 
| + | 
| +  if (devtools) | 
| +    devtools.logRequest( | 
| +      page, url, type, docDomain, | 
| +      thirdParty, key, specificOnly, | 
| +      filter | 
| +    ); | 
| } | 
|  | 
| function onBeforeRequest(url, type, page, frame) | 
| { | 
| -  if (isFrameWhitelisted(page, frame)) | 
| +  if (checkWhitelisted(page, frame)) | 
| return true; | 
|  | 
| +  var urlString = stringifyURL(url); | 
| var docDomain = extractHostFromFrame(frame); | 
| +  var thirdParty = isThirdParty(url, docDomain); | 
| var key = getKey(page, frame); | 
| -  var specificOnly = isFrameWhitelisted(page, frame, | 
| -                                        RegExpFilter.typeMap.GENERICBLOCK); | 
| -  var filter = defaultMatcher.matchesAny( | 
| -    stringifyURL(url), | 
| -    RegExpFilter.typeMap[type], docDomain, | 
| -    isThirdParty(url, docDomain), | 
| -    key, | 
| -    specificOnly | 
| + | 
| +  var specificOnly = checkWhitelisted( | 
| +    page, frame, RegExpFilter.typeMap.GENERICBLOCK | 
| ); | 
|  | 
| -  setTimeout(onBeforeRequestAsync, 0, url, type, page, filter); | 
| +  var filter = defaultMatcher.matchesAny( | 
| +    urlString, RegExpFilter.typeMap[type], | 
| +    docDomain, thirdParty, key, specificOnly | 
| +  ); | 
| + | 
| +  setTimeout(onBeforeRequestAsync, 0, page, urlString, | 
| +                                      type, docDomain, | 
| +                                      thirdParty, key, | 
| +                                      specificOnly, filter); | 
|  | 
| return !(filter instanceof BlockingFilter); | 
| } | 
|  |