From 3919a16bb8adc5280ba872e131baa48e73c17727 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Tue, 26 Mar 2024 12:38:41 -0400 Subject: [PATCH] Do not block large media resources when loaded as top-level document Related issues: - https://github.com/uBlockOrigin/uBlock-issues/issues/1201 - https://github.com/uBlockOrigin/uBlock-issues/issues/3184 Top-level media resources are not meant to be blocked, see: https://github.com/gorhill/uBlock/issues/2813#issuecomment-317177212 --- src/js/pagestore.js | 38 +++++++++++++++++++------------------- src/js/traffic.js | 2 +- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/js/pagestore.js b/src/js/pagestore.js index 838bd3aa6..227352d5d 100644 --- a/src/js/pagestore.js +++ b/src/js/pagestore.js @@ -19,17 +19,13 @@ Home: https://github.com/gorhill/uBlock */ -'use strict'; - /******************************************************************************/ -import contextMenu from './contextmenu.js'; -import logger from './logger.js'; -import staticNetFilteringEngine from './static-net-filtering.js'; -import µb from './background.js'; -import webext from './webext.js'; -import { orphanizeString } from './text-utils.js'; -import { redirectEngine } from './redirect-engine.js'; +import { + domainFromHostname, + hostnameFromURI, + isNetworkURI, +} from './uri-utils.js'; import { sessionFirewall, @@ -37,11 +33,13 @@ import { sessionURLFiltering, } from './filtering-engines.js'; -import { - domainFromHostname, - hostnameFromURI, - isNetworkURI, -} from './uri-utils.js'; +import contextMenu from './contextmenu.js'; +import logger from './logger.js'; +import { orphanizeString } from './text-utils.js'; +import { redirectEngine } from './redirect-engine.js'; +import staticNetFilteringEngine from './static-net-filtering.js'; +import webext from './webext.js'; +import µb from './background.js'; /******************************************************************************* @@ -379,11 +377,13 @@ const PageStore = class { // If we are navigating from-to same site, remember whether large // media elements were temporarily allowed. - if ( - typeof this.allowLargeMediaElementsUntil !== 'number' || - tabContext.rootHostname !== this.tabHostname - ) { - this.allowLargeMediaElementsUntil = Date.now(); + const now = Date.now(); + if ( typeof this.allowLargeMediaElementsUntil !== 'number' ) { + this.allowLargeMediaElementsUntil = now; + } else if ( tabContext.rootHostname !== this.tabHostname ) { + if ( this.tabHostname.endsWith('about-scheme') === false ) { + this.allowLargeMediaElementsUntil = now; + } } this.tabHostname = tabContext.rootHostname; diff --git a/src/js/traffic.js b/src/js/traffic.js index cb56063f4..df86a8656 100644 --- a/src/js/traffic.js +++ b/src/js/traffic.js @@ -590,7 +590,7 @@ const onHeadersReceived = function(details) { } }; -const reMediaContentTypes = /^(?:audio|image|video)\//; +const reMediaContentTypes = /^(?:audio|image|video)\/|(?:\/ogg)$/; /******************************************************************************/