Преглед на файлове

fixed "save frame" feature

Gildas преди 7 години
родител
ревизия
24392f66ee
променени са 3 файла, в които са добавени 16 реда и са изтрити 7 реда
  1. 1 1
      extension/core/bg/messages.js
  2. 8 3
      extension/core/bg/tabs.js
  3. 7 3
      extension/core/content/content-frame.js

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

@@ -23,7 +23,7 @@
 singlefile.messages = (() => {
 
 	browser.runtime.onMessage.addListener((message, sender) => {
-		if (message.loadFileURI) {
+		if (message.loadFileURI || message.savePage) {
 			return singlefile.tabs.onMessage(message, sender);
 		}
 		if (message.download) {

+ 8 - 3
extension/core/bg/tabs.js

@@ -29,11 +29,16 @@ singlefile.tabs = (() => {
 	return {
 		onMessage,
 		get: options => browser.tabs.query(options),
-		sendMessage: (tabId, message) => browser.tabs.sendMessage(tabId, message)
+		sendMessage: (tabId, message, options) => browser.tabs.sendMessage(tabId, message, options)
 	};
 
-	async function onMessage(message) {
-		return singlefile.config.getOptions(message.url);
+	async function onMessage(message, sender) {
+		if (message.loadFileURI) {
+			return singlefile.config.getOptions(message.url);
+		}
+		if (message.savePage) {
+			return singlefile.tabs.sendMessage(sender.tab.id, message, { frameId: 0 });
+		}
 	}
 
 	function onTabCreated(tab) {

+ 7 - 3
extension/core/content/content-frame.js

@@ -26,11 +26,15 @@ this.singlefile.frame = this.singlefile.frame || (() => {
 		browser.runtime.onMessage.addListener(message => {
 			if (message.saveFrame) {
 				message.options.content = docHelper.serialize(document);
-				message.saveFrameFrame = null;
-				message.options.frameId = null;
+				delete message.saveFrame;
+				delete message.options.frameId;
 				message.savePage = true;
 				message.options.url = document.location.href;
-				top.postMessage("__SingleFile__::" + JSON.stringify(message), "*");
+				if (this.browser && browser.runtime && browser.runtime.sendMessage) {
+					browser.runtime.sendMessage(message);
+				} else {
+					top.postMessage("__SingleFile__::" + JSON.stringify(message), "*");
+				}
 			}
 		});
 	}