| Index: chrome/ext/background.js |
| =================================================================== |
| --- a/chrome/ext/background.js |
| +++ b/chrome/ext/background.js |
| @@ -354,27 +354,33 @@ |
| var onBeforeNavigate = chrome.webNavigation.onBeforeNavigate; |
| if (!onBeforeNavigate.hasListener(propagateHandlerBehaviorChange)) |
| onBeforeNavigate.addListener(propagateHandlerBehaviorChange); |
| + }, |
| + getIndistinguishableTypes: function() |
| + { |
| + // Chrome 38-48 mistakenly reports requests of type `object` |
| + // (e.g. requests initiated by Flash) with the type `other`. |
| + // https://code.google.com/p/chromium/issues/detail?id=410382 |
| + var match = navigator.userAgent.match(/\bChrome\/(\d+)/); |
|
kzar
2015/12/23 14:43:20
We already parse the application name and version
Sebastian Noack
2015/12/23 14:46:56
adblockplus.js (including the info module) depends
kzar
2015/12/23 14:56:42
Acknowledged.
|
| + if (match) |
| + { |
| + var version = parseInt(match[1], 10); |
| + if (version >= 38 && version <= 48) |
| + return [["OTHER", "OBJECT", "OBJECT_SUBREQUEST"]]; |
| + } |
| + |
| + // Before Chrome 49, requests of the type `font` and `ping` |
| + // have been reported with the type `other`. |
| + // https://code.google.com/p/chromium/issues/detail?id=410382 |
| + var otherTypes = ["OTHER", "MEDIA"]; |
| + if (!("FONT" in chrome.webRequest.ResourceType)) |
| + otherTypes.push("FONT"); |
| + if (!("PING" in chrome.webRequest.ResourceType)) |
| + otherTypes.push("PING"); |
| + |
| + return [["OBJECT", "OBJECT_SUBREQUEST"], otherTypes]; |
|
Wladimir Palant
2015/12/23 12:50:51
This logic is very hard to follow, and I'm not rea
Sebastian Noack
2015/12/23 13:08:43
This won't work. If the workaround for Chrome 38-4
|
| } |
| }; |
| - // Since Chrome 38 requests of type 'object' (e.g. requests |
| - // initiated by Flash) are mistakenly reported with the type 'other'. |
| - // https://code.google.com/p/chromium/issues/detail?id=410382 |
| - var match = navigator.userAgent.match(/\bChrome\/(\d+)/); |
| - if (match && parseInt(match[1], 10) >= 38) |
| - { |
| - ext.webRequest.indistinguishableTypes = [ |
| - ["OTHER", "OBJECT", "OBJECT_SUBREQUEST"] |
| - ]; |
| - } |
| - else |
| - { |
| - ext.webRequest.indistinguishableTypes = [ |
| - ["OBJECT", "OBJECT_SUBREQUEST"], |
| - ["OTHER", "MEDIA", "FONT"] |
| - ]; |
| - } |
| - |
| chrome.tabs.query({}, function(tabs) |
| { |
| tabs.forEach(function(tab) |