|
|
@ -40,14 +40,12 @@ |
|
|
|
var µm = µMatrix; |
|
|
|
|
|
|
|
var recordPageCookiesQueue = new Map(); |
|
|
|
var removePageCookiesQueue = new Map(); |
|
|
|
var removeCookieQueue = new Set(); |
|
|
|
var cookieDict = new Map(); |
|
|
|
var cookieEntryJunkyard = []; |
|
|
|
var processRemoveQueuePeriod = 2 * 60 * 1000; |
|
|
|
var processCleanPeriod = 10 * 60 * 1000; |
|
|
|
var processPageRecordQueueTimer = null; |
|
|
|
var processPageRemoveQueueTimer = null; |
|
|
|
|
|
|
|
/******************************************************************************/ |
|
|
|
|
|
|
@ -260,24 +258,6 @@ var recordPageCookie = (function() { |
|
|
|
|
|
|
|
/******************************************************************************/ |
|
|
|
|
|
|
|
// Look for cookies to potentially remove for a specific web page
|
|
|
|
|
|
|
|
var removePageCookiesAsync = function(pageStats) { |
|
|
|
// Hold onto pageStats objects so that it doesn't go away
|
|
|
|
// before we handle the job.
|
|
|
|
// rhill 2013-10-19: pageStats could be nil, for example, this can
|
|
|
|
// happens if a file:// ... makes an xmlHttpRequest
|
|
|
|
if ( !pageStats ) { |
|
|
|
return; |
|
|
|
} |
|
|
|
removePageCookiesQueue.set(pageStats.pageUrl, pageStats); |
|
|
|
if ( processPageRemoveQueueTimer === null ) { |
|
|
|
processPageRemoveQueueTimer = vAPI.setTimeout(processPageRemoveQueue, 15 * 1000); |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
/******************************************************************************/ |
|
|
|
|
|
|
|
// Candidate for removal
|
|
|
|
|
|
|
|
var removeCookieAsync = function(cookieKey) { |
|
|
@ -332,17 +312,6 @@ var processPageRecordQueue = function() { |
|
|
|
|
|
|
|
/******************************************************************************/ |
|
|
|
|
|
|
|
var processPageRemoveQueue = function() { |
|
|
|
processPageRemoveQueueTimer = null; |
|
|
|
|
|
|
|
for ( var pageStore of removePageCookiesQueue.values() ) { |
|
|
|
findAndRemovePageCookies(pageStore); |
|
|
|
} |
|
|
|
removePageCookiesQueue.clear(); |
|
|
|
}; |
|
|
|
|
|
|
|
/******************************************************************************/ |
|
|
|
|
|
|
|
// Effectively remove cookies.
|
|
|
|
|
|
|
|
var processRemoveQueue = function() { |
|
|
@ -442,16 +411,6 @@ var findAndRecordPageCookies = function(pageStore) { |
|
|
|
|
|
|
|
/******************************************************************************/ |
|
|
|
|
|
|
|
var findAndRemovePageCookies = function(pageStore) { |
|
|
|
for ( var cookieKey of cookieDict.keys() ) { |
|
|
|
if ( cookieMatchDomains(cookieKey, pageStore.allHostnamesString) ) { |
|
|
|
removeCookieAsync(cookieKey); |
|
|
|
} |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
/******************************************************************************/ |
|
|
|
|
|
|
|
var canRemoveCookie = function(cookieKey, srcHostnames) { |
|
|
|
var cookieEntry = cookieDict.get(cookieKey); |
|
|
|
if ( cookieEntry === undefined ) { return false; } |
|
|
@ -587,8 +546,7 @@ vAPI.setTimeout(processClean, processCleanPeriod); |
|
|
|
// Expose only what is necessary
|
|
|
|
|
|
|
|
return { |
|
|
|
recordPageCookies: recordPageCookiesAsync, |
|
|
|
removePageCookies: removePageCookiesAsync |
|
|
|
recordPageCookies: recordPageCookiesAsync |
|
|
|
}; |
|
|
|
|
|
|
|
/******************************************************************************/ |
|
|
|