Skip to content

Commit 6bde110

Browse files
committed
keep offscreen alive for colorScheme=system
1 parent e828432 commit 6bde110

File tree

5 files changed

+14
-13
lines changed

5 files changed

+14
-13
lines changed

src/background/color-scheme.js

+8
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import {kStyleViaXhr} from '@/js/consts';
2+
import {CONNECTED} from '@/js/port';
13
import * as prefs from '@/js/prefs';
24
import {debounce, isCssDarkScheme} from '@/js/util';
35
import {broadcastExtension} from './broadcast';
@@ -42,6 +44,12 @@ if (__.MV3) {
4244
}
4345
}));
4446
bgInit.push(refreshSystemDark);
47+
prefs.subscribe([kSTATE, kStyleViaXhr], () => {
48+
const val = prefState === kSystem || prefs.__values[kStyleViaXhr];
49+
if (val || offscreen[CONNECTED]) {
50+
offscreen.keepAlive(val);
51+
}
52+
}, true);
4553
} else {
4654
refreshSystemDark();
4755
}

src/background/style-via-webrequest.js

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {kAppJson, kMainFrame, kPopup, kSubFrame} from '@/js/consts';
1+
import {kAppJson, kMainFrame, kPopup, kStyleViaXhr, kSubFrame} from '@/js/consts';
22
import {updateSessionRules} from '@/js/dnr';
33
import {API} from '@/js/msg';
44
import * as prefs from '@/js/prefs';
@@ -17,7 +17,6 @@ import * as tabMan from './tab-manager';
1717

1818
const idCSP = 'patchCsp';
1919
const idOFF = 'disableAll';
20-
const idXHR = 'styleViaXhr';
2120
const REVOKE_TIMEOUT = 10e3;
2221
const kRuleIds = 'ruleIds';
2322
const kSetCookie = 'set-cookie'; // must be lowercase
@@ -55,7 +54,7 @@ if (__.MV3) {
5554

5655
prefs.ready.then(() => {
5756
toggle(__.MV3); // in MV3 this will unregister unused listeners
58-
prefs.subscribe([idOFF, idCSP, idXHR], toggle);
57+
prefs.subscribe([idOFF, idCSP, kStyleViaXhr], toggle);
5958
});
6059

6160
bgBusy.then(() => {
@@ -97,7 +96,7 @@ function toggle(prefKey) {
9796
const mv3init = __.MV3 && !prefKey;
9897
const off = prefs.__values[idOFF];
9998
const csp = !off && prefs.__values[idCSP];
100-
const xhr = !off && prefs.__values[idXHR];
99+
const xhr = !off && prefs.__values[kStyleViaXhr];
101100
if (!mv3init && xhr === curXHR && csp === curCSP && off === curOFF) {
102101
return;
103102
}

src/background/sw/index.js

+1-8
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@ import '../intro'; // sets global.API
22
import './keep-alive'; // sets global.keepAlive
33
import {kMainFrame, kSubFrame} from '@/js/consts';
44
import {_execute} from '@/js/msg';
5-
import {CONNECTED, initRemotePort} from '@/js/port';
6-
import * as prefs from '@/js/prefs';
5+
import {initRemotePort} from '@/js/port';
76
import {ownRoot} from '@/js/urls';
87
import {clientDataJobs} from '../common';
98
import {cloudDrive} from '../db-to-cloud-broker';
@@ -52,12 +51,6 @@ cloudDrive.webdav = async cfg => {
5251
return res;
5352
};
5453

55-
prefs.subscribe('styleViaXhr', (key, val) => {
56-
if (val || offscreen[CONNECTED]) {
57-
offscreen.keepAlive(val);
58-
}
59-
}, true);
60-
6154
/**
6255
* This ensures that SW starts even before our page makes a clientData request inside.
6356
* The actual listener is usually invoked after `onfetch`, but there's no guarantee.

src/js/consts.js

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ export const kMainFrame = 'main_frame';
1717
export const kPopup = 'popup';
1818
export const kResolve = 'resolve';
1919
export const kStateDB = 'state';
20+
export const kStyleViaXhr = 'styleViaXhr';
2021
export const kSubFrame = 'sub_frame';
2122
export const kUrl = 'url';
2223
export const k_busy = '_busy';

src/js/port.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ export function createPortExec(getTarget, {lock, once} = {}) {
115115
if (once) {
116116
port.close();
117117
exec[CONNECTED] =
118-
queue = port = target = null;
118+
queue = port = port.onmessage = target = null;
119119
}
120120
}
121121
async function trackTarget(queueCopy) {

0 commit comments

Comments
 (0)