Skip to content
Snippets Groups Projects
Verified Commit 037ad243 authored by Thomas Rientjes's avatar Thomas Rientjes
Browse files

Implement request filters to improve performance

parent 746c5694
No related branches found
No related tags found
No related merge requests found
......@@ -39,13 +39,6 @@ requestAnalyzer.isValidCandidate = function (requestDetails, tabDetails) {
let destinationHost, initiatorHost;
destinationHost = requestDetails.url.match(WEB_DOMAIN_EXPRESSION)[1];
// See if the request is targeted at a Content Delivery Network.
if (mappings[destinationHost] === undefined) {
return false;
}
try {
initiatorHost = tabDetails.url.match(WEB_DOMAIN_EXPRESSION)[1];
} catch (exception) {
......
......@@ -24,6 +24,11 @@ var stateManager = {};
*/
const BLOCKED_BY_CLIENT = 'net::ERR_BLOCKED_BY_CLIENT';
const BLOCKING_ACTION = 'blocking';
const HOST_PREFIX = '*://';
const HOST_SUFFIX = '/*';
const JAVASCRIPT_REQUEST_TYPE = 'script';
const XML_HTTP_REQUEST_TYPE = 'xmlhttprequest';
/**
* Public Methods
......@@ -79,15 +84,24 @@ stateManager.registerInjection = function (tabIdentifier, injection) {
stateManager._createTab = function (tab) {
let tabIdentifier = tab.id;
let tabIdentifier, requestFilters;
tabIdentifier = tab.id;
stateManager.tabs[tabIdentifier] = {
'injections': {}
};
requestFilters = {
'tabId': tabIdentifier,
'types': stateManager.validTypes,
'urls': stateManager.validHosts
};
chrome.webRequest.onBeforeRequest.addListener(function (requestDetails) {
return interceptor.handleRequest(requestDetails, tabIdentifier, tab);
}, {'urls': ['*://*/*'], 'tabId': tabIdentifier}, ['blocking']);
}, requestFilters, [BLOCKING_ACTION]);
};
stateManager._removeTab = function (tabIdentifier) {
......@@ -113,6 +127,24 @@ stateManager._updateTab = function (details) {
stateManager.requests = {};
stateManager.tabs = {};
stateManager.validTypes = [
JAVASCRIPT_REQUEST_TYPE,
XML_HTTP_REQUEST_TYPE
];
stateManager.validHosts = [];
for (let mapping in mappings) {
if (!mappings.hasOwnProperty(mapping)) {
continue;
}
let supportedHost = HOST_PREFIX + mapping + HOST_SUFFIX;
stateManager.validHosts.push(supportedHost);
}
chrome.tabs.query({}, function (tabs) {
tabs.forEach(stateManager._createTab);
});
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment