code review for 3c85c03194: simplify counting of script resources

This commit is contained in:
Raymond Hill 2018-09-01 06:36:17 -04:00
parent 0ed3e8cd30
commit 96525cffa5
No known key found for this signature in database
GPG key ID: 25E1490B761470C2
4 changed files with 26 additions and 18 deletions

View file

@ -388,8 +388,12 @@ var onMessage = function(request, sender, callback) {
pageStore = µb.pageStoreFromTabId(request.tabId);
if ( pageStore !== null ) {
pageStore.hiddenElementCount = 0;
pageStore.inlineScriptCount = 0;
µb.scriptlets.injectDeep(request.tabId, 'dom-survey');
pageStore.scriptCount = 0;
vAPI.tabs.injectScript(request.tabId, {
allFrames: true,
file: '/js/scriptlets/dom-survey.js',
runAt: 'document_end'
});
}
break;
@ -494,7 +498,7 @@ var onMessage = function(request, sender, callback) {
if ( pageStore === null ) { break; }
let tabContext = µb.tabContextManager.lookup(tabId);
if ( tabContext === null ) { break; }
if ( pageStore.filterScripting(tabContext.rootHostname) ) {
if ( pageStore.filterScripting(tabContext.rootHostname, undefined) ) {
vAPI.tabs.injectScript(
tabId,
{
@ -1263,7 +1267,7 @@ var domSurveyFinalReport = function(tabId) {
what: 'domSurveyFinalReport',
tabId: tabId,
affectedElementCount: pageStore.hiddenElementCount,
scriptCount: pageStore.scriptCount + pageStore.inlineScriptCount,
scriptCount: pageStore.scriptCount,
});
};
@ -1312,14 +1316,14 @@ var onMessage = function(request, sender, callback) {
if ( request.filteredElementCount ) {
pageStore.hiddenElementCount += request.filteredElementCount;
}
if ( request.inlineScriptCount ) {
pageStore.inlineScriptCount += request.inlineScriptCount;
if ( request.scriptCount ) {
pageStore.scriptCount += request.scriptCount;
}
let broadcastKey = tabId + '-domSurveyReport';
if ( broadcastTimers.has(broadcastKey) === false ) {
broadcastTimers.set(broadcastKey, vAPI.setTimeout(
( ) => { domSurveyFinalReport(tabId); },
250
53
));
}
}

View file

@ -291,7 +291,6 @@ PageStore.prototype.init = function(tabId, context) {
this.hiddenElementCount = ''; // Empty string means "unknown"
this.remoteFontCount = 0;
this.scriptCount = 0;
this.inlineScriptCount = 0;
this.popupBlockedCount = 0;
this.largeMediaCount = 0;
this.largeMediaTimer = null;
@ -616,11 +615,11 @@ PageStore.prototype.filterRequest = function(context) {
return 1;
}
if ( requestType === 'script' ) {
this.scriptCount += 1;
if ( this.filterScripting(context.rootHostname) === 1 ) {
return 1;
}
if (
requestType === 'script' &&
this.filterScripting(context.rootHostname, true) === 1
) {
return 1;
}
var cacheableResult = this.cacheableResults[requestType] === true;
@ -720,9 +719,12 @@ PageStore.prototype.filterFont = function(context) {
/******************************************************************************/
PageStore.prototype.filterScripting = function(rootHostname) {
PageStore.prototype.filterScripting = function(rootHostname, netFiltering) {
if ( netFiltering === undefined ) {
netFiltering = this.getNetFilteringSwitch();
}
if (
this.getNetFilteringSwitch() === false ||
netFiltering === false ||
µb.hnSwitches.evaluateZ('no-scripting', rootHostname) === false
) {
return 0;

View file

@ -47,6 +47,8 @@
inlineScriptCount = 1;
}
let scriptTags = document.querySelectorAll('script[src]');
let filteredElementCount = 0;
if ( vAPI.domFilterer ) {
filteredElementCount = vAPI.domFilterer.getFilteredElementCount();
@ -58,7 +60,7 @@
what: 'domSurveyTransientReport',
pageURL: window.location.href,
filteredElementCount: filteredElementCount,
inlineScriptCount: inlineScriptCount,
scriptCount: inlineScriptCount + scriptTags.length,
}
);
})();

View file

@ -913,8 +913,8 @@ var injectCSP = function(pageStore, details) {
let builtinDirectives = [];
context.requestType = 'script';
if ( pageStore.filterScripting(context.rootHostname) === 1 ) {
builtinDirectives.push("script-src *");
if ( pageStore.filterScripting(context.rootHostname, true) === 1 ) {
builtinDirectives.push("script-src http: https:");
if ( loggerEnabled === true ) {
logger.writeOne(
tabId,