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

fix issue with non-persistent bg page

Former-commit-id: 8978f562804fd3b229dca84ea801c778de7879d9
Gildas 6 лет назад
Родитель
Сommit
50e99850b6

+ 1 - 0
extension/core/bg/autosave.js

@@ -107,6 +107,7 @@ singlefile.extension.core.bg.autosave = (() => {
 		options.shadowRoots = message.shadowRoots;
 		options.imports = message.imports;
 		options.referrer = message.referrer;
+		options.updatedResources = message.updatedResources;
 		options.insertSingleFileComment = true;
 		options.insertFaviconLink = true;
 		options.backgroundTab = true;

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

@@ -105,7 +105,6 @@ singlefile.extension.core.bg.business = (() => {
 				ui.onStart(tabId, INJECT_SCRIPTS_STEP);
 				const tabOptions = await config.getOptions(tab.url);
 				Object.keys(options).forEach(key => tabOptions[key] = options[key]);
-				tabOptions.updatedResources = singlefile.extension.core.bg.devtools.getUpdatedResources(tabId);
 				let scriptsInjected;
 				if (!tabOptions.removeFrames) {
 					try {

+ 3 - 20
extension/core/bg/devtools.js

@@ -25,31 +25,14 @@
 
 singlefile.extension.core.bg.devtools = (() => {
 
-	const updatedResources = {};
-
 	return {
-		onMessage,
-		onTabRemoved,
-		onTabUpdated,
-		getUpdatedResources: tabId => updatedResources[tabId]
+		onMessage
 	};
 
-	async function onTabRemoved(tabId) {
-		delete updatedResources[tabId];
-	}
-
-	async function onTabUpdated(tabId) {
-		delete updatedResources[tabId];
-	}
-
-	function onMessage(message) {
+	async function onMessage(message) {
 		if (message.method.endsWith(".resourceCommitted")) {
 			if (message.tabId && message.url && (message.type == "stylesheet" || message.type == "script")) {
-				const tabId = message.tabId;
-				if (!updatedResources[tabId]) {
-					updatedResources[tabId] = {};
-				}
-				updatedResources[tabId][message.url] = { content: message.content, type: message.type, encoding: message.encoding };
+				await singlefile.extension.core.bg.tabs.sendMessage(message.tabId, message);
 			}
 		}
 	}

+ 0 - 2
extension/core/bg/tabs.js

@@ -53,7 +53,6 @@ singlefile.extension.core.bg.tabs = (() => {
 	function onTabUpdated(tabId, changeInfo, tab) {
 		if (changeInfo.status == "loading") {
 			singlefile.extension.ui.bg.main.onTabUpdated(tabId, changeInfo, tab);
-			singlefile.extension.core.bg.devtools.onTabUpdated(tabId, changeInfo, tab);
 		}
 		if (changeInfo.status == "complete") {
 			singlefile.extension.core.bg.autosave.onTabUpdated(tabId, changeInfo, tab);
@@ -62,7 +61,6 @@ singlefile.extension.core.bg.tabs = (() => {
 
 	function onTabRemoved(tabId) {
 		singlefile.extension.core.bg.tabsData.onTabRemoved(tabId);
-		singlefile.extension.core.bg.devtools.onTabRemoved(tabId);
 	}
 
 })();

+ 8 - 2
extension/core/content/content-bootstrap.js

@@ -28,6 +28,7 @@ this.singlefile.extension.core.content.bootstrap = this.singlefile.extension.cor
 	const singlefile = this.singlefile;
 
 	let unloadListenerAdded, options, autoSaveEnabled, autoSaveTimeout, autoSavingPage, pageAutoSaved;
+	singlefile.extension.core.content.updatedResources = {};
 	browser.runtime.sendMessage({ method: "autosave.init" }).then(message => {
 		options = message.options;
 		autoSaveEnabled = message.autoSaveEnabled;
@@ -57,6 +58,9 @@ this.singlefile.extension.core.content.bootstrap = this.singlefile.extension.cor
 			autoSaveEnabled = message.autoSaveEnabled;
 			refresh();
 		}
+		if (message.method == "devtools.resourceCommitted") {
+			singlefile.extension.core.content.updatedResources[message.url] = { content: message.content, type: message.type, encoding: message.encoding };
+		}
 	}
 
 	async function autoSavePage() {
@@ -86,7 +90,8 @@ this.singlefile.extension.core.content.bootstrap = this.singlefile.extension.cor
 					imports: docData.imports,
 					referrer: docData.referrer,
 					frames: frames,
-					url: location.href
+					url: location.href,
+					updatedResources: singlefile.extension.core.content.updatedResources
 				});
 				helper.postProcessDoc(document, docData.markedElements);
 				pageAutoSaved = true;
@@ -130,7 +135,8 @@ this.singlefile.extension.core.content.bootstrap = this.singlefile.extension.cor
 				imports: docData.imports,
 				referrer: docData.referrer,
 				frames: frames,
-				url: location.href
+				url: location.href,
+				updatedResources: singlefile.extension.core.content.updatedResources
 			});
 		}
 	}

+ 1 - 0
extension/core/content/content-main.js

@@ -54,6 +54,7 @@ this.singlefile.extension.core.content.main = this.singlefile.extension.core.con
 	async function savePage(message) {
 		const options = message.options;
 		if (!processing) {
+			options.updatedResources = singlefile.extension.core.content.updatedResources;
 			let selectionFound;
 			if (options.selected) {
 				selectionFound = await ui.markSelection();