Sfoglia il codice sorgente

don't use lambdas or methods for interfaces

Gildas 5 anni fa
parent
commit
33f4402db3

+ 9 - 7
extension/core/bg/bookmarks.js

@@ -30,13 +30,7 @@ singlefile.extension.core.bg.bookmarks = (() => {
 		onMessage,
 		saveCreatedBookmarks: enable,
 		disable,
-		update: async (id, changes) => {
-			try {
-				await browser.bookmarks.update(id, changes);
-			} catch (error) {
-				// ignored
-			}
-		}
+		update
 	};
 
 	async function onMessage(message) {
@@ -77,6 +71,14 @@ singlefile.extension.core.bg.bookmarks = (() => {
 		}
 	}
 
+	async function update(id, changes) {
+		try {
+			await browser.bookmarks.update(id, changes);
+		} catch (error) {
+			// ignored
+		}
+	}
+
 	async function onCreated(bookmarkId, bookmarkInfo) {
 		const tabs = await singlefile.extension.core.bg.tabs.get({ lastFocusedWindow: true, active: true });
 		const options = await singlefile.extension.core.bg.config.getOptions(bookmarkInfo.url);

+ 51 - 23
extension/core/bg/business.js

@@ -49,32 +49,19 @@ singlefile.extension.core.bg.business = (() => {
 	let currentTaskId = 0, maxParallelWorkers;
 
 	return {
-		isSavingTab: tab => Boolean(tasks.find(taskInfo => taskInfo.tab.id == tab.id)),
+		isSavingTab,
 		saveTabs,
 		saveUrls,
 		saveSelectedLinks,
 		cancelTab,
-		cancelTask: taskId => cancelTask(tasks.find(taskInfo => taskInfo.id == taskId)),
-		cancelAllTasks: () => Array.from(tasks).forEach(cancelTask),
-		getTasksInfo: () => tasks.map(mapTaskInfo),
-		getTaskInfo: taskId => tasks.find(taskInfo => taskInfo.id == taskId),
-		setCancelCallback: (taskId, cancelCallback) => {
-			const taskInfo = tasks.find(taskInfo => taskInfo.id == taskId);
-			if (taskInfo) {
-				taskInfo.cancel = cancelCallback;
-			}
-		},
+		cancelTask,
+		cancelAllTasks,
+		getTasksInfo,
+		getTaskInfo,
+		setCancelCallback,
 		openEditor,
-		onSaveEnd: taskId => {
-			const taskInfo = tasks.find(taskInfo => taskInfo.id == taskId);
-			if (taskInfo) {
-				if (taskInfo.options.autoClose && !taskInfo.cancelled) {
-					singlefile.extension.core.bg.tabs.remove(taskInfo.tab.id);
-				}
-				taskInfo.done();
-			}
-		},
-		onInit: tab => cancelTab(tab.id),
+		onSaveEnd,
+		onInit,
 		onTabRemoved: cancelTab
 	};
 
@@ -235,11 +222,52 @@ singlefile.extension.core.bg.business = (() => {
 			error.message.startsWith(ERROR_EDITOR_PAGE_CHROMIUM + JSON.stringify(singlefile.extension.core.bg.editor.EDITOR_URL));
 	}
 
+	function isSavingTab(tab) {
+		return Boolean(tasks.find(taskInfo => taskInfo.tab.id == tab.id));
+	}
+
+	function onInit(tab) {
+		cancelTab(tab.id);
+	}
+
+	function onSaveEnd(taskId) {
+		const taskInfo = tasks.find(taskInfo => taskInfo.id == taskId);
+		if (taskInfo) {
+			if (taskInfo.options.autoClose && !taskInfo.cancelled) {
+				singlefile.extension.core.bg.tabs.remove(taskInfo.tab.id);
+			}
+			taskInfo.done();
+		}
+	}
+
+	function setCancelCallback(taskId, cancelCallback) {
+		const taskInfo = tasks.find(taskInfo => taskInfo.id == taskId);
+		if (taskInfo) {
+			taskInfo.cancel = cancelCallback;
+		}
+	}
+
 	function cancelTab(tabId) {
-		Array.from(tasks).filter(taskInfo => taskInfo.tab.id == tabId && !taskInfo.options.autoSave).forEach(cancelTask);
+		Array.from(tasks).filter(taskInfo => taskInfo.tab.id == tabId && !taskInfo.options.autoSave).forEach(cancel);
+	}
+
+	function cancelTask(taskId) {
+		cancel(tasks.find(taskInfo => taskInfo.id == taskId));
+	}
+
+	function cancelAllTasks() {
+		Array.from(tasks).forEach(cancel);
+	}
+
+	function getTasksInfo() {
+		return tasks.map(mapTaskInfo);
+	}
+
+	function getTaskInfo(taskId) {
+		return tasks.find(taskInfo => taskInfo.id == taskId);
 	}
 
-	function cancelTask(taskInfo) {
+	function cancel(taskInfo) {
 		const tabId = taskInfo.tab.id;
 		taskInfo.cancelled = true;
 		singlefile.extension.core.bg.tabs.sendMessage(tabId, {

+ 17 - 13
extension/core/bg/requests.js

@@ -31,22 +31,26 @@ singlefile.extension.core.bg.requests = (() => {
 
 	return {
 		REQUEST_ID_HEADER_NAME,
-		onMessage(message) {
-			if (message.method.endsWith(".enableReferrerOnError")) {
-				enableReferrerOnError();
-				return {};
-			}
-			if (message.method.endsWith(".disableReferrerOnError")) {
-				disableReferrerOnError();
-				return {};
-			}
-		},
-		setReferrer(requestId, referrer) {
-			referrers.set(requestId, referrer);
-		},
+		onMessage,
+		setReferrer,
 		enableReferrerOnError
 	};
 
+	function onMessage(message) {
+		if (message.method.endsWith(".enableReferrerOnError")) {
+			enableReferrerOnError();
+			return {};
+		}
+		if (message.method.endsWith(".disableReferrerOnError")) {
+			disableReferrerOnError();
+			return {};
+		}
+	}
+
+	function setReferrer(requestId, referrer) {
+		referrers.set(requestId, referrer);
+	}
+
 	function injectRefererHeader(details) {
 		if (referrerOnErrorEnabled) {
 			let requestIdHeader = details.requestHeaders.find(header => header.name === REQUEST_ID_HEADER_NAME);

+ 109 - 83
extension/core/bg/tabs.js

@@ -33,89 +33,15 @@ singlefile.extension.core.bg.tabs = (() => {
 	browser.tabs.onUpdated.addListener((tabId, changeInfo) => onTabUpdated(tabId, changeInfo));
 	return {
 		onMessage,
-		get: async options => {
-			const tabs = await browser.tabs.query(options);
-			return tabs.sort((tab1, tab2) => tab1.index - tab2.index);
-		},
-		create: createProperties => browser.tabs.create(createProperties),
-		createAndWait: async createProperties => {
-			const tab = await browser.tabs.create(createProperties);
-			return new Promise((resolve, reject) => {
-				browser.tabs.onUpdated.addListener(onTabUpdated);
-				browser.tabs.onRemoved.addListener(onTabRemoved);
-				function onTabUpdated(tabId, changeInfo) {
-					if (tabId == tab.id && changeInfo.status == "complete") {
-						resolve(tab);
-						browser.tabs.onUpdated.removeListener(onTabUpdated);
-						browser.tabs.onRemoved.removeListener(onTabRemoved);
-					}
-				}
-				function onTabRemoved(tabId) {
-					if (tabId == tab.id) {
-						reject(tabId);
-						browser.tabs.onRemoved.removeListener(onTabRemoved);
-					}
-				}
-			});
-		},
-		sendMessage: (tabId, message, options) => browser.tabs.sendMessage(tabId, message, options),
-		update: (tabId, updateProperties) => browser.tabs.update(tabId, updateProperties),
-		remove: tabId => browser.tabs.remove(tabId),
-		promptValue: async promptMessage => {
-			const tabs = await browser.tabs.query({ currentWindow: true, active: true });
-			return new Promise((resolve, reject) => {
-				const selectedTabId = tabs[0].id;
-				browser.tabs.onRemoved.addListener(onTabRemoved);
-				pendingPrompts.set(selectedTabId, { resolve, reject });
-				browser.tabs.sendMessage(selectedTabId, { method: "common.promptValueRequest", promptMessage });
-
-				function onTabRemoved(tabId) {
-					if (tabId == selectedTabId) {
-						pendingPrompts.delete(tabId);
-						browser.tabs.onUpdated.removeListener(onTabRemoved);
-						reject();
-					}
-				}
-			});
-		},
-		extractAuthCode: authURL => {
-			return new Promise((resolve, reject) => {
-				let authTabId;
-				browser.tabs.onUpdated.addListener(onTabUpdated);
-				browser.tabs.onRemoved.addListener(onTabRemoved);
-
-				function onTabUpdated(tabId, changeInfo) {
-					if (changeInfo && changeInfo.url == authURL) {
-						authTabId = tabId;
-					}
-					if (authTabId == tabId && changeInfo && changeInfo.title && changeInfo.title.startsWith("Success code=")) {
-						browser.tabs.onUpdated.removeListener(onTabUpdated);
-						browser.tabs.onUpdated.removeListener(onTabRemoved);
-						resolve(changeInfo.title.substring(13, changeInfo.title.length - 49));
-					}
-				}
-
-				function onTabRemoved(tabId) {
-					if (tabId == authTabId) {
-						browser.tabs.onUpdated.removeListener(onTabUpdated);
-						browser.tabs.onUpdated.removeListener(onTabRemoved);
-						reject();
-					}
-				}
-			});
-		},
-		launchWebAuthFlow: async options => {
-			const tab = await browser.tabs.create({ url: options.url, active: true });
-			return new Promise((resolve, reject) => {
-				browser.tabs.onRemoved.addListener(onTabRemoved);
-				function onTabRemoved(tabId) {
-					if (tabId == tab.id) {
-						browser.tabs.onRemoved.removeListener(onTabRemoved);
-						reject(new Error("code_required"));
-					}
-				}
-			});
-		}
+		get,
+		create,
+		createAndWait,
+		sendMessage,
+		update,
+		remove,
+		promptValue,
+		extractAuthCode,
+		launchWebAuthFlow
 	};
 
 	async function onMessage(message, sender) {
@@ -140,6 +66,106 @@ singlefile.extension.core.bg.tabs = (() => {
 		}
 	}
 
+	function sendMessage(tabId, message, options) {
+		return browser.tabs.sendMessage(tabId, message, options);
+	}
+
+	function update(tabId, updateProperties) {
+		return browser.tabs.update(tabId, updateProperties);
+	}
+
+	function remove(tabId) {
+		return browser.tabs.remove(tabId);
+	}
+
+	function create(createProperties) {
+		return browser.tabs.create(createProperties);
+	}
+
+	async function createAndWait(createProperties) {
+		const tab = await browser.tabs.create(createProperties);
+		return new Promise((resolve, reject) => {
+			browser.tabs.onUpdated.addListener(onTabUpdated);
+			browser.tabs.onRemoved.addListener(onTabRemoved);
+			function onTabUpdated(tabId, changeInfo) {
+				if (tabId == tab.id && changeInfo.status == "complete") {
+					resolve(tab);
+					browser.tabs.onUpdated.removeListener(onTabUpdated);
+					browser.tabs.onRemoved.removeListener(onTabRemoved);
+				}
+			}
+			function onTabRemoved(tabId) {
+				if (tabId == tab.id) {
+					reject(tabId);
+					browser.tabs.onRemoved.removeListener(onTabRemoved);
+				}
+			}
+		});
+	}
+
+	async function get(options) {
+		const tabs = await browser.tabs.query(options);
+		return tabs.sort((tab1, tab2) => tab1.index - tab2.index);
+	}
+
+	async function promptValue(promptMessage) {
+		const tabs = await browser.tabs.query({ currentWindow: true, active: true });
+		return new Promise((resolve, reject) => {
+			const selectedTabId = tabs[0].id;
+			browser.tabs.onRemoved.addListener(onTabRemoved);
+			pendingPrompts.set(selectedTabId, { resolve, reject });
+			browser.tabs.sendMessage(selectedTabId, { method: "common.promptValueRequest", promptMessage });
+
+			function onTabRemoved(tabId) {
+				if (tabId == selectedTabId) {
+					pendingPrompts.delete(tabId);
+					browser.tabs.onUpdated.removeListener(onTabRemoved);
+					reject();
+				}
+			}
+		});
+	}
+
+	function extractAuthCode(authURL) {
+		return new Promise((resolve, reject) => {
+			let authTabId;
+			browser.tabs.onUpdated.addListener(onTabUpdated);
+			browser.tabs.onRemoved.addListener(onTabRemoved);
+
+			function onTabUpdated(tabId, changeInfo) {
+				if (changeInfo && changeInfo.url == authURL) {
+					authTabId = tabId;
+				}
+				if (authTabId == tabId && changeInfo && changeInfo.title && changeInfo.title.startsWith("Success code=")) {
+					browser.tabs.onUpdated.removeListener(onTabUpdated);
+					browser.tabs.onUpdated.removeListener(onTabRemoved);
+					resolve(changeInfo.title.substring(13, changeInfo.title.length - 49));
+				}
+			}
+
+			function onTabRemoved(tabId) {
+				if (tabId == authTabId) {
+					browser.tabs.onUpdated.removeListener(onTabUpdated);
+					browser.tabs.onUpdated.removeListener(onTabRemoved);
+					reject();
+				}
+			}
+		});
+	}
+
+	async function launchWebAuthFlow(options) {
+		const tab = await browser.tabs.create({ url: options.url, active: true });
+		return new Promise((resolve, reject) => {
+			browser.tabs.onRemoved.addListener(onTabRemoved);
+			function onTabRemoved(tabId) {
+				if (tabId == tab.id) {
+					browser.tabs.onRemoved.removeListener(onTabRemoved);
+					reject(new Error("code_required"));
+				}
+			}
+		});
+	}
+
 	async function onInit(tab, options) {
 		await singlefile.extension.core.bg.tabsData.remove(tab.id);
 		const tabsData = await singlefile.extension.core.bg.tabsData.get(tab.id);

+ 20 - 18
extension/lib/single-file/core/bg/scripts.js

@@ -69,30 +69,32 @@ singlefile.extension.lib.core.bg.scripts = (() => {
 	const basePath = "../../../";
 
 	return {
-		async inject(tabId, options) {
-			await initScripts(options);
-			let scriptsInjected;
-			if (!options.removeFrames) {
-				try {
-					await browser.tabs.executeScript(tabId, { code: frameScript, allFrames: true, matchAboutBlank: true, runAt: "document_start" });
-				} catch (error) {
-					// ignored
-				}
-			}
+		inject
+	};
+
+	async function inject(tabId, options) {
+		await initScripts(options);
+		let scriptsInjected;
+		if (!options.removeFrames) {
 			try {
-				await browser.tabs.executeScript(tabId, { code: contentScript, allFrames: false, runAt: "document_idle" });
-				scriptsInjected = true;
+				await browser.tabs.executeScript(tabId, { code: frameScript, allFrames: true, matchAboutBlank: true, runAt: "document_start" });
 			} catch (error) {
 				// ignored
 			}
-			if (scriptsInjected) {
-				if (options.frameId) {
-					await browser.tabs.executeScript(tabId, { code: "document.documentElement.dataset.requestedFrameId = true", frameId: options.frameId, matchAboutBlank: true, runAt: "document_start" });
-				}
+		}
+		try {
+			await browser.tabs.executeScript(tabId, { code: contentScript, allFrames: false, runAt: "document_idle" });
+			scriptsInjected = true;
+		} catch (error) {
+			// ignored
+		}
+		if (scriptsInjected) {
+			if (options.frameId) {
+				await browser.tabs.executeScript(tabId, { code: "document.documentElement.dataset.requestedFrameId = true", frameId: options.frameId, matchAboutBlank: true, runAt: "document_start" });
 			}
-			return scriptsInjected;
 		}
-	};
+		return scriptsInjected;
+	}
 
 	async function initScripts(options) {
 		const extensionScriptFiles = options.extensionScriptFiles || [];

+ 64 - 40
extension/ui/bg/ui-main.js

@@ -26,46 +26,70 @@
 singlefile.extension.ui.bg.main = (() => {
 
 	return {
-		onMessage(message, sender) {
-			if (message.method.endsWith(".refreshMenu")) {
-				return singlefile.extension.ui.bg.menus.onMessage(message, sender);
-			} else {
-				return singlefile.extension.ui.bg.button.onMessage(message, sender);
-			}
-		},
-		async refreshTab(tab) {
-			return Promise.all([singlefile.extension.ui.bg.menus.refreshTab(tab), singlefile.extension.ui.bg.button.refreshTab(tab)]);
-		},
-		onForbiddenDomain(tab) {
-			singlefile.extension.ui.bg.button.onForbiddenDomain(tab);
-		},
-		onStart(tabId, step, autoSave) {
-			singlefile.extension.ui.bg.button.onStart(tabId, step, autoSave);
-		},
-		onError(tabId) {
-			singlefile.extension.ui.bg.button.onError(tabId);
-		},
-		onEdit(tabId) {
-			singlefile.extension.ui.bg.button.onEdit(tabId);
-		},
-		onEnd(tabId, autoSave) {
-			singlefile.extension.ui.bg.button.onEnd(tabId, autoSave);
-		},
-		onCancelled(tabId) {
-			singlefile.extension.ui.bg.button.onCancelled(tabId);
-		},
-		onUploadProgress(tabId, index, maxIndex) {
-			singlefile.extension.ui.bg.button.onUploadProgress(tabId, index, maxIndex);
-		},
-		onTabCreated(tab) {
-			singlefile.extension.ui.bg.menus.onTabCreated(tab);
-		},
-		onTabActivated(tab) {
-			singlefile.extension.ui.bg.menus.onTabActivated(tab);
-		},
-		onInit(tab) {
-			singlefile.extension.ui.bg.menus.onInit(tab);
-		}
+		onMessage,
+		refreshTab,
+		onForbiddenDomain,
+		onStart,
+		onError,
+		onEdit,
+		onEnd,
+		onCancelled,
+		onUploadProgress,
+		onTabCreated,
+		onTabActivated,
+		onInit
 	};
 
+	function onMessage(message, sender) {
+		if (message.method.endsWith(".refreshMenu")) {
+			return singlefile.extension.ui.bg.menus.onMessage(message, sender);
+		} else {
+			return singlefile.extension.ui.bg.button.onMessage(message, sender);
+		}
+	}
+
+	async function refreshTab(tab) {
+		return Promise.all([singlefile.extension.ui.bg.menus.refreshTab(tab), singlefile.extension.ui.bg.button.refreshTab(tab)]);
+	}
+
+	function onForbiddenDomain(tab) {
+		singlefile.extension.ui.bg.button.onForbiddenDomain(tab);
+	}
+
+	function onStart(tabId, step, autoSave) {
+		singlefile.extension.ui.bg.button.onStart(tabId, step, autoSave);
+	}
+
+	function onError(tabId) {
+		singlefile.extension.ui.bg.button.onError(tabId);
+	}
+
+	function onEdit(tabId) {
+		singlefile.extension.ui.bg.button.onEdit(tabId);
+	}
+
+	function onEnd(tabId, autoSave) {
+		singlefile.extension.ui.bg.button.onEnd(tabId, autoSave);
+	}
+
+	function onCancelled(tabId) {
+		singlefile.extension.ui.bg.button.onCancelled(tabId);
+	}
+
+	function onUploadProgress(tabId, index, maxIndex) {
+		singlefile.extension.ui.bg.button.onUploadProgress(tabId, index, maxIndex);
+	}
+
+	function onTabCreated(tab) {
+		singlefile.extension.ui.bg.menus.onTabCreated(tab);
+	}
+
+	function onTabActivated(tab) {
+		singlefile.extension.ui.bg.menus.onTabActivated(tab);
+	}
+
+	function onInit(tab) {
+		singlefile.extension.ui.bg.menus.onInit(tab);
+	}
+
 })();