Skip to content

Commit 7bfacbb

Browse files
committed
No "background" permission in Firefox MV3
1 parent 3cb05c0 commit 7bfacbb

2 files changed

Lines changed: 46 additions & 33 deletions

File tree

‎scripts/pack.js‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,8 @@ const chromeManifest = { ...manifest, background: { ...manifest.background } };
7777
chromeManifest.optional_permissions = chromeManifest.optional_permissions.filter((val) => val !== "userScripts");
7878
delete chromeManifest.background.scripts;
7979

80+
// Firefox MV3 不支持 "background" permission
81+
firefoxManifest.optional_permissions = firefoxManifest.optional_permissions.filter((val) => val !== "background");
8082
delete firefoxManifest.background.service_worker;
8183
delete firefoxManifest.sandbox;
8284
firefoxManifest.browser_specific_settings = {

‎src/pages/components/RuntimeSetting/index.tsx‎

Lines changed: 44 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import FileSystemParams from "../FileSystemParams";
55
import { systemConfig } from "@App/pages/store/global";
66
import type { FileSystemType } from "@Packages/filesystem/factory";
77
import FileSystemFactory from "@Packages/filesystem/factory";
8+
import { isFirefox } from "@App/pkg/utils/utils";
89

910
const CollapseItem = Collapse.Item;
1011

@@ -24,52 +25,62 @@ const RuntimeSetting: React.FC = () => {
2425
setFilesystemType(res.filesystem);
2526
setFilesystemParam(res.params[res.filesystem] || {});
2627
});
27-
chrome.permissions.contains({ permissions: ["background"] }, (result) => {
28-
if (chrome.runtime.lastError) {
29-
console.error(chrome.runtime.lastError);
30-
return;
31-
}
32-
setEnableBackgroundState(result);
33-
});
34-
}, []);
35-
36-
const setEnableBackground = (enable: boolean) => {
37-
if (enable) {
38-
chrome.permissions.request({ permissions: ["background"] }, (granted) => {
39-
if (chrome.runtime.lastError) {
40-
console.error(chrome.runtime.lastError);
41-
Message.error(t("enable_background.enable_failed")!);
42-
return;
43-
}
44-
setEnableBackgroundState(granted);
45-
});
28+
if (isFirefox()) {
29+
// no background permission
4630
} else {
47-
chrome.permissions.remove({ permissions: ["background"] }, (removed) => {
31+
chrome.permissions.contains({ permissions: ["background"] }, (result) => {
4832
if (chrome.runtime.lastError) {
4933
console.error(chrome.runtime.lastError);
50-
Message.error(t("enable_background.disable_failed")!);
5134
return;
5235
}
53-
setEnableBackgroundState(!removed);
36+
setEnableBackgroundState(result);
5437
});
5538
}
39+
}, []);
40+
41+
const setEnableBackground = (enable: boolean) => {
42+
if (isFirefox()) {
43+
// no background permission
44+
} else {
45+
if (enable) {
46+
chrome.permissions.request({ permissions: ["background"] }, (granted) => {
47+
if (chrome.runtime.lastError) {
48+
console.error(chrome.runtime.lastError);
49+
Message.error(t("enable_background.enable_failed")!);
50+
return;
51+
}
52+
setEnableBackgroundState(granted);
53+
});
54+
} else {
55+
chrome.permissions.remove({ permissions: ["background"] }, (removed) => {
56+
if (chrome.runtime.lastError) {
57+
console.error(chrome.runtime.lastError);
58+
Message.error(t("enable_background.disable_failed")!);
59+
return;
60+
}
61+
setEnableBackgroundState(!removed);
62+
});
63+
}
64+
}
5665
};
5766

5867
return (
5968
<Card title={t("runtime")} bordered={false}>
6069
<Space direction="vertical" size={20} className={"tw-w-full"}>
6170
<div className="tw-flex tw-items-center tw-justify-between tw-min-h-9">
62-
<div className="tw-flex tw-items-center tw-gap-2 tw-flex-1">
63-
<Switch onChange={setEnableBackground} checked={enableBackground} />
64-
<span
65-
className="tw-min-w-20 tw-font-medium tw-cursor-pointer"
66-
onClick={() => {
67-
setEnableBackground(!enableBackground);
68-
}}
69-
>
70-
{t("enable_background.title")}
71-
</span>
72-
</div>
71+
{!isFirefox() && (
72+
<div className="tw-flex tw-items-center tw-gap-2 tw-flex-1">
73+
<Switch onChange={setEnableBackground} checked={enableBackground} />
74+
<span
75+
className="tw-min-w-20 tw-font-medium tw-cursor-pointer"
76+
onClick={() => {
77+
setEnableBackground(!enableBackground);
78+
}}
79+
>
80+
{t("enable_background.title")}
81+
</span>
82+
</div>
83+
)}
7384
<span className="tw-text-xs tw-ml-6 tw-flex-shrink-0">{t("enable_background.description")}</span>
7485
</div>
7586
<Collapse bordered={false} defaultActiveKey={["storage"]}>

0 commit comments

Comments
 (0)