|
|
|
@ -25,27 +25,37 @@
|
|
|
|
|
|
|
|
|
|
/******************************************************************************/
|
|
|
|
|
|
|
|
|
|
// rhill 2013-11-24: bind behind-the-scene virtual tab/url manually, since the
|
|
|
|
|
// normal way forbid binding behind the scene tab.
|
|
|
|
|
// https://github.com/gorhill/httpswitchboard/issues/67
|
|
|
|
|
// Load everything
|
|
|
|
|
|
|
|
|
|
(function() {
|
|
|
|
|
var µm = µMatrix;
|
|
|
|
|
var tabContext = µm.tabContextManager.mustLookup(vAPI.noTabId);
|
|
|
|
|
µm.pageStores[vAPI.noTabId] = µm.PageStore.factory(tabContext);
|
|
|
|
|
})();
|
|
|
|
|
|
|
|
|
|
'use strict';
|
|
|
|
|
|
|
|
|
|
/******************************************************************************/
|
|
|
|
|
|
|
|
|
|
µMatrix.turnOn();
|
|
|
|
|
var µm = µMatrix;
|
|
|
|
|
|
|
|
|
|
/******************************************************************************/
|
|
|
|
|
|
|
|
|
|
// Browser data jobs
|
|
|
|
|
// Important: raise barrier to remote fetching: we do not want resources to
|
|
|
|
|
// be pulled from remote server at start up time.
|
|
|
|
|
|
|
|
|
|
(function() {
|
|
|
|
|
µm.assets.remoteFetchBarrier += 1;
|
|
|
|
|
|
|
|
|
|
/******************************************************************************/
|
|
|
|
|
|
|
|
|
|
var onAllDone = function() {
|
|
|
|
|
µm.webRequest.start();
|
|
|
|
|
|
|
|
|
|
// https://github.com/chrisaljoudi/uBlock/issues/184
|
|
|
|
|
// Check for updates not too far in the future.
|
|
|
|
|
µm.assetUpdater.onStart.addListener(µm.updateStartHandler.bind(µm));
|
|
|
|
|
µm.assetUpdater.onCompleted.addListener(µm.updateCompleteHandler.bind(µm));
|
|
|
|
|
µm.assetUpdater.onAssetUpdated.addListener(µm.assetUpdatedHandler.bind(µm));
|
|
|
|
|
µm.assets.onAssetCacheRemoved.addListener(µm.assetCacheRemovedHandler.bind(µm));
|
|
|
|
|
|
|
|
|
|
// Browser data jobs
|
|
|
|
|
var jobCallback = function() {
|
|
|
|
|
var µm = µMatrix;
|
|
|
|
|
if ( !µm.userSettings.clearBrowserCache ) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
@ -60,65 +70,54 @@
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
µMatrix.asyncJobs.add('clearBrowserCache', null, jobCallback, 15 * 60 * 1000, true);
|
|
|
|
|
})();
|
|
|
|
|
|
|
|
|
|
/******************************************************************************/
|
|
|
|
|
// Important: remove barrier to remote fetching, this was useful only
|
|
|
|
|
// for launch time.
|
|
|
|
|
µm.assets.remoteFetchBarrier -= 1;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var onTabsReady = function(tabs) {
|
|
|
|
|
var tab;
|
|
|
|
|
var i = tabs.length;
|
|
|
|
|
// console.debug('start.js > binding %d tabs', i);
|
|
|
|
|
while ( i-- ) {
|
|
|
|
|
tab = tabs[i];
|
|
|
|
|
µm.tabContextManager.commit(tab.id, tab.url);
|
|
|
|
|
// https://github.com/gorhill/uMatrix/issues/56
|
|
|
|
|
// We must unbind first to flush out potentially bad domain names.
|
|
|
|
|
µm.unbindTabFromPageStats(tab.id);
|
|
|
|
|
µm.bindTabToPageStats(tab.id);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
onAllDone();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var onSettingsReady = function(settings) {
|
|
|
|
|
µm.loadHostsFiles();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var onMatrixReady = function() {
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var onPSLReady = function() {
|
|
|
|
|
µm.loadUserSettings(onSettingsReady);
|
|
|
|
|
µm.loadMatrix(onMatrixReady);
|
|
|
|
|
|
|
|
|
|
// Automatic update of non-user assets
|
|
|
|
|
// https://github.com/gorhill/httpswitchboard/issues/334
|
|
|
|
|
// rhill 2013-11-24: bind behind-the-scene virtual tab/url manually, since the
|
|
|
|
|
// normal way forbid binding behind the scene tab.
|
|
|
|
|
// https://github.com/gorhill/httpswitchboard/issues/67
|
|
|
|
|
µm.pageStores[vAPI.noTabId] = µm.PageStore.factory(
|
|
|
|
|
µm.tabContextManager.mustLookup(vAPI.noTabId)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
(function() {
|
|
|
|
|
var µm = µMatrix;
|
|
|
|
|
vAPI.tabs.getAll(onTabsReady);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// https://github.com/chrisaljoudi/uBlock/issues/184
|
|
|
|
|
// Check for updates not too far in the future.
|
|
|
|
|
µm.assetUpdater.onStart.addListener(µm.updateStartHandler.bind(µm));
|
|
|
|
|
µm.assetUpdater.onCompleted.addListener(µm.updateCompleteHandler.bind(µm));
|
|
|
|
|
µm.assetUpdater.onAssetUpdated.addListener(µm.assetUpdatedHandler.bind(µm));
|
|
|
|
|
µm.assets.onAssetCacheRemoved.addListener(µm.assetCacheRemovedHandler.bind(µm));
|
|
|
|
|
})();
|
|
|
|
|
// Must be done ASAP
|
|
|
|
|
µm.loadPublicSuffixList(onPSLReady);
|
|
|
|
|
|
|
|
|
|
/******************************************************************************/
|
|
|
|
|
|
|
|
|
|
// Load everything
|
|
|
|
|
|
|
|
|
|
(function() {
|
|
|
|
|
var µm = µMatrix;
|
|
|
|
|
|
|
|
|
|
µm.assets.remoteFetchBarrier += 1;
|
|
|
|
|
|
|
|
|
|
// This needs to be done when the PSL is loaded
|
|
|
|
|
var bindTabs = function(tabs) {
|
|
|
|
|
var tab;
|
|
|
|
|
var i = tabs.length;
|
|
|
|
|
// console.debug('start.js > binding %d tabs', i);
|
|
|
|
|
while ( i-- ) {
|
|
|
|
|
tab = tabs[i];
|
|
|
|
|
µm.tabContextManager.commit(tab.id, tab.url);
|
|
|
|
|
µm.bindTabToPageStats(tab.id);
|
|
|
|
|
}
|
|
|
|
|
µm.webRequest.start();
|
|
|
|
|
|
|
|
|
|
// Important: remove barrier to remote fetching, this was useful only
|
|
|
|
|
// for launch time.
|
|
|
|
|
µm.assets.remoteFetchBarrier -= 1;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var queryTabs = function() {
|
|
|
|
|
vAPI.tabs.getAll(bindTabs);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var onSettingsReady = function(settings) {
|
|
|
|
|
µm.loadPublicSuffixList(queryTabs);
|
|
|
|
|
µm.loadHostsFiles();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var onMatrixReady = function() {
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
µm.loadUserSettings(onSettingsReady);
|
|
|
|
|
µm.loadMatrix(onMatrixReady);
|
|
|
|
|
|
|
|
|
|
})();
|
|
|
|
|
|
|
|
|
|
/******************************************************************************/
|
|
|
|
|