Просмотр исходного кода

disable permissions when unneeded

Gildas 3 лет назад
Родитель
Сommit
c56113434c
1 измененных файлов с 20 добавлено и 2 удалено
  1. 20 2
      src/extension/ui/bg/ui-options.js

+ 20 - 2
src/extension/ui/bg/ui-options.js

@@ -442,9 +442,11 @@ saveCreatedBookmarksInput.addEventListener("click", saveCreatedBookmarks, false)
 passReferrerOnErrorInput.addEventListener("click", passReferrerOnError, false);
 autoSaveExternalSaveInput.addEventListener("click", () => enableExternalSave(autoSaveExternalSaveInput), false);
 saveWithCompanionInput.addEventListener("click", () => enableExternalSave(saveWithCompanionInput), false);
-saveToFilesystemInput.addEventListener("click", async () => await browser.runtime.sendMessage({ method: "downloads.disableGDrive" }), false);
 saveToClipboardInput.addEventListener("click", onClickSaveToClipboard, false);
-saveWithCompanionInput.addEventListener("click", async () => await browser.runtime.sendMessage({ method: "downloads.disableGDrive" }), false);
+saveToFilesystemInput.addEventListener("click", () => disableDestinationPermissions(["clipboardWrite", "nativeMessaging"]), false);
+saveToClipboardInput.addEventListener("click", () => disableDestinationPermissions(["nativeMessaging"]), false);
+saveWithCompanionInput.addEventListener("click", () => disableDestinationPermissions(["clipboardWrite"]), false);
+saveToGDriveInput.addEventListener("click", () => disableDestinationPermissions(["clipboardWrite", "nativeMessaging"], false), false);
 addProofInput.addEventListener("click", async event => {
 	if (addProofInput.checked) {
 		addProofInput.checked = false;
@@ -969,6 +971,11 @@ async function saveCreatedBookmarks() {
 			await disableOption();
 		}
 	} else {
+		try {
+			await browser.permissions.remove({ permissions: ["bookmarks"] });
+		} catch (error) {
+			// ignored
+		}
 		await disableOption();
 	}
 
@@ -996,6 +1003,17 @@ async function onClickSaveToClipboard() {
 	await refresh();
 }
 
+async function disableDestinationPermissions(permissions, disableGDrive = true) {
+	if (disableGDrive) {
+		await browser.runtime.sendMessage({ method: "downloads.disableGDrive" });
+	}
+	try {
+		await browser.permissions.remove({ permissions });
+	} catch (error) {
+		//ignored
+	}
+}
+
 async function passReferrerOnError() {
 	if (passReferrerOnErrorInput.checked) {
 		passReferrerOnErrorInput.checked = false;