Forráskód Böngészése

Stop using tabs.onUpdated to detect page reloads (cf #314)

Former-commit-id: 4e158f475bd7e36b13e08fd31b92afddd4030720
Gildas 6 éve
szülő
commit
2c697a9119

+ 3 - 5
extension/core/bg/autosave.js

@@ -28,7 +28,7 @@ singlefile.extension.core.bg.autosave = (() => {
 	return {
 		onMessage,
 		onMessageExternal,
-		onTabUpdated,
+		onInit,
 		isEnabled,
 		refreshTabs
 	};
@@ -64,12 +64,10 @@ singlefile.extension.core.bg.autosave = (() => {
 		}
 	}
 
-	async function onTabUpdated(tabId, changeInfo, tab) {
+	async function onInit(tab) {
 		const [options, autoSaveEnabled] = await Promise.all([singlefile.extension.core.bg.config.getOptions(tab.url, true), isEnabled(tab)]);
 		if (options && ((options.autoSaveLoad || options.autoSaveLoadOrUnload) && autoSaveEnabled)) {
-			if (changeInfo.status == "complete") {
-				singlefile.extension.core.bg.business.saveTabs([tab], { autoSave: true });
-			}
+			singlefile.extension.core.bg.business.saveTabs([tab], { autoSave: true });
 		}
 	}
 

+ 1 - 1
extension/core/bg/business.js

@@ -66,7 +66,7 @@ singlefile.extension.core.bg.business = (() => {
 				taskInfo.resolve();
 			}
 		},
-		onTabUpdated: cancelTab,
+		onInit: tab => cancelTab(tab.id),
 		onTabRemoved: cancelTab
 	};
 

+ 3 - 3
extension/core/bg/editor.js

@@ -33,7 +33,7 @@ singlefile.extension.core.bg.editor = (() => {
 	return {
 		onMessage,
 		onTabRemoved,
-		onTabUpdated,
+		onInit,
 		open
 	};
 
@@ -50,9 +50,9 @@ singlefile.extension.core.bg.editor = (() => {
 		tabsData.delete(tabId);
 	}
 
-	async function onTabUpdated(tabId, changeInfo, tab) {
+	async function onInit(tab) {
 		if (tab.url != EDITOR_URL) {
-			tabsData.delete(tabId);
+			tabsData.delete(tab.id);
 		}
 	}
 

+ 6 - 12
extension/core/bg/tabs.js

@@ -28,7 +28,6 @@ singlefile.extension.core.bg.tabs = (() => {
 
 	browser.tabs.onCreated.addListener(tab => onTabCreated(tab));
 	browser.tabs.onActivated.addListener(activeInfo => onTabActivated(activeInfo));
-	browser.tabs.onUpdated.addListener((tabId, changeInfo, tab) => onTabUpdated(tabId, changeInfo, tab));
 	browser.tabs.onRemoved.addListener(tabId => onTabRemoved(tabId));
 	return {
 		onMessage,
@@ -116,6 +115,12 @@ singlefile.extension.core.bg.tabs = (() => {
 	};
 
 	async function onMessage(message, sender) {
+		if (message.method.endsWith(".init")) {
+			singlefile.extension.ui.bg.main.onInit(sender.tab);
+			singlefile.extension.core.bg.business.onInit(sender.tab);
+			singlefile.extension.core.bg.autosave.onInit(sender.tab);
+			singlefile.extension.core.bg.editor.onInit(sender.tab);
+		}
 		if (message.method.endsWith(".promptValueResponse")) {
 			const promptPromise = pendingPrompts.get(sender.tab.id);
 			if (promptPromise) {
@@ -140,17 +145,6 @@ singlefile.extension.core.bg.tabs = (() => {
 		singlefile.extension.ui.bg.main.onTabActivated(tab, activeInfo);
 	}
 
-	function onTabUpdated(tabId, changeInfo, tab) {
-		if (changeInfo.status == "loading") {
-			singlefile.extension.ui.bg.main.onTabUpdated(tabId, changeInfo, tab);
-			singlefile.extension.core.bg.business.onTabUpdated(tabId, changeInfo, tab);
-		}
-		if (changeInfo.status == "complete") {
-			singlefile.extension.core.bg.autosave.onTabUpdated(tabId, changeInfo, tab);
-			singlefile.extension.core.bg.editor.onTabUpdated(tabId, changeInfo, tab);
-		}
-	}
-
 	function onTabRemoved(tabId) {
 		singlefile.extension.core.bg.tabsData.onTabRemoved(tabId);
 		singlefile.extension.core.bg.editor.onTabRemoved(tabId);

+ 5 - 1
extension/core/content/content-bootstrap.js

@@ -46,8 +46,12 @@ this.singlefile.extension.core.content.bootstrap = this.singlefile.extension.cor
 		}
 	});
 	browser.runtime.onMessage.addListener(message => { onMessage(message); });
+	browser.runtime.sendMessage({ method: "tabs.init" });
 	browser.runtime.sendMessage({ method: "ui.processInit" });
-	addEventListener(PUSH_STATE_NOTIFICATION_EVENT_NAME, () => browser.runtime.sendMessage({ method: "ui.processInit" }));
+	addEventListener(PUSH_STATE_NOTIFICATION_EVENT_NAME, () => {
+		browser.runtime.sendMessage({ method: "tabs.init" });
+		browser.runtime.sendMessage({ method: "ui.processInit" });
+	});
 	return {};
 
 	async function onMessage(message) {

+ 2 - 2
extension/ui/bg/ui-main.js

@@ -63,8 +63,8 @@ singlefile.extension.ui.bg.main = (() => {
 		onTabActivated(tab, activeInfo) {
 			singlefile.extension.ui.bg.menus.onTabActivated(tab, activeInfo);
 		},
-		onTabUpdated(tabId, changeInfo, tab) {
-			singlefile.extension.ui.bg.menus.onTabUpdated(tabId, changeInfo, tab);
+		onInit(tab) {
+			singlefile.extension.ui.bg.menus.onInit(tab);
 		}
 	};
 

+ 1 - 1
extension/ui/bg/ui-menus.js

@@ -77,7 +77,7 @@ singlefile.extension.ui.bg.menus = (() => {
 		onMessage,
 		onTabCreated: refreshTab,
 		onTabActivated: refreshTab,
-		onTabUpdated: (tabId, changeInfo, tab) => refreshTab(tab),
+		onInit: tab => refreshTab(tab),
 		refreshTab: createMenus
 	};