|
|
@ -733,68 +733,47 @@ |
|
|
|
|
|
|
|
/******************************************************************************/ |
|
|
|
|
|
|
|
µMatrix.loadPublicSuffixList = function(callback) { |
|
|
|
let µm = this; |
|
|
|
µMatrix.publicSuffixList = (function() { |
|
|
|
let µm = µMatrix; |
|
|
|
|
|
|
|
if ( typeof callback !== 'function' ) { |
|
|
|
callback = this.noopFunc; |
|
|
|
} |
|
|
|
|
|
|
|
var applyPublicSuffixList = function(details) { |
|
|
|
if ( !details.error ) { |
|
|
|
var onPSLReady = function(details, callback) { |
|
|
|
if ( |
|
|
|
!details.error && |
|
|
|
typeof details.content === 'string' && |
|
|
|
details.content.length !== 0 |
|
|
|
) { |
|
|
|
publicSuffixList.parse(details.content, punycode.toASCII); |
|
|
|
µm.publicSuffixListSelfie.create(); |
|
|
|
vAPI.cacheStorage.set({ |
|
|
|
publicSuffixListSelfie: publicSuffixList.toSelfie() |
|
|
|
}); |
|
|
|
} |
|
|
|
callback(); |
|
|
|
}; |
|
|
|
|
|
|
|
let onSelfieReady = function(status) { |
|
|
|
if ( status === true ) { |
|
|
|
let onSelfieReady = function(bin, callback) { |
|
|
|
if ( |
|
|
|
bin instanceof Object && |
|
|
|
bin.publicSuffixListSelfie instanceof Object && |
|
|
|
publicSuffixList.fromSelfie(bin.publicSuffixListSelfie) |
|
|
|
) { |
|
|
|
return callback(); |
|
|
|
} |
|
|
|
µm.assets.get(µm.pslAssetKey, applyPublicSuffixList); |
|
|
|
}; |
|
|
|
|
|
|
|
this.publicSuffixListSelfie.load(onSelfieReady); |
|
|
|
µm.assets.get(µm.pslAssetKey, function(details) { |
|
|
|
onPSLReady(details, callback); |
|
|
|
}); |
|
|
|
}; |
|
|
|
|
|
|
|
/******************************************************************************/ |
|
|
|
|
|
|
|
µMatrix.publicSuffixListSelfie = (function() { |
|
|
|
let timer; |
|
|
|
|
|
|
|
return { |
|
|
|
create: function() { |
|
|
|
this.cancel(); |
|
|
|
timer = vAPI.setTimeout( |
|
|
|
function() { |
|
|
|
timer = undefined; |
|
|
|
vAPI.cacheStorage.set({ |
|
|
|
publicSuffixListSelfie: publicSuffixList.toSelfie() |
|
|
|
}); |
|
|
|
}, |
|
|
|
60000 |
|
|
|
); |
|
|
|
}, |
|
|
|
destroy: function() { |
|
|
|
this.cancel(); |
|
|
|
vAPI.cacheStorage.remove('publicSuffixListSelfie'); |
|
|
|
update: function(details) { |
|
|
|
onPSLReady(details, µm.noopFunc); |
|
|
|
}, |
|
|
|
load: function(callback) { |
|
|
|
this.cancel(); |
|
|
|
if ( typeof callback !== 'function' ) { |
|
|
|
callback = µm.noopFunc; |
|
|
|
} |
|
|
|
vAPI.cacheStorage.get('publicSuffixListSelfie', function(bin) { |
|
|
|
callback( |
|
|
|
bin instanceof Object && |
|
|
|
bin.publicSuffixListSelfie instanceof Object && |
|
|
|
publicSuffixList.fromSelfie(bin.publicSuffixListSelfie) |
|
|
|
); |
|
|
|
onSelfieReady(bin, callback); |
|
|
|
}); |
|
|
|
}, |
|
|
|
cancel: function() { |
|
|
|
if ( timer !== undefined ) { |
|
|
|
clearTimeout(timer); |
|
|
|
} |
|
|
|
timer = undefined; |
|
|
|
} |
|
|
|
}; |
|
|
|
})(); |
|
|
@ -854,7 +833,7 @@ |
|
|
|
) { |
|
|
|
this.hostsFilesSelfie.destroy(); |
|
|
|
} else if ( details.assetKey === this.pslAssetKey ) { |
|
|
|
this.publicSuffixListSelfie.destroy(); |
|
|
|
this.publicSuffixList.update(details); |
|
|
|
} |
|
|
|
vAPI.messaging.broadcast({ |
|
|
|
what: 'assetUpdated', |
|
|
|