From a0a9497b4aca86727b314d8fc31ad345dad08ac8 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Sat, 18 Dec 2021 11:26:50 -0500 Subject: [PATCH] Partially bring suspendTabsUntilReady out of experimental status This commit will force-reload active tabs at launch for environments not supporting suspend network request listeners, or configured to not suspend network request listeners. --- src/js/start.js | 2 +- src/js/traffic.js | 18 ++++++++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/js/start.js b/src/js/start.js index 39312da5f..f0cbc1bb2 100644 --- a/src/js/start.js +++ b/src/js/start.js @@ -304,7 +304,7 @@ const onHiddenSettingsReady = async function() { }); } - // Matbe override default cache storage + // Maybe override default cache storage const cacheBackend = await cacheStorage.select( µb.hiddenSettings.cacheStorageAPI ); diff --git a/src/js/traffic.js b/src/js/traffic.js index d36267874..1999e839f 100644 --- a/src/js/traffic.js +++ b/src/js/traffic.js @@ -1138,7 +1138,7 @@ const webRequest = { vAPI.net = new vAPI.Net(); vAPI.net.suspend(); - return ( ) => { + return async ( ) => { vAPI.net.setSuspendableListener(onBeforeRequest); vAPI.net.addListener( 'onHeadersReceived', @@ -1146,7 +1146,21 @@ const webRequest = { { urls: [ 'http://*/*', 'https://*/*' ] }, [ 'blocking', 'responseHeaders' ] ); - vAPI.net.unsuspend(true); + vAPI.net.unsuspend({ force: true }); + // Mitigation: force-reload active tabs for environments not + // supporting suspended network request listeners. + if ( + vAPI.net.canSuspend() !== true || + µb.hiddenSettings.suspendTabsUntilReady === 'no' + ) { + const tabs = await vAPI.tabs.query({ + active: true, + windowType: 'normal', + }); + for ( const tab of tabs ) { + vAPI.tabs.reload(tab.id); + } + } }; })(),