1
0
Gildas 1 жил өмнө
parent
commit
fdd962b40c

+ 57 - 20
src/ui/bg/ui-editor.js

@@ -290,8 +290,31 @@ addEventListener("message", async event => {
 			if (tabData.insertTextBody !== undefined) {
 				tabData.options.insertTextBody = tabData.insertTextBody;
 			}
-			if (tabData.embeddedImage !== undefined) {
-				tabData.options.embeddedImage = tabData.embeddedImage;
+			if (tabData.embeddedImage !== undefined || tabData.options.insertEmbeddedScreenshotImage) {
+				if (tabData.options.insertEmbeddedScreenshotImage) {
+					toolbarElement.style.display = "none";
+					editorElement.style.height = message.documentHeight + "px";
+					document.documentElement.style.height = message.documentHeight + "px";
+					const infobarElement = document.querySelector(INFOBAR_TAGNAME);
+					if (infobarElement) {
+						infobarElement.style.display = "none";
+					}
+					const screenshotBlobURI = await browser.runtime.sendMessage({
+						method: "tabs.getScreenshot",
+						width: document.documentElement.scrollWidth,
+						height: document.documentElement.scrollHeight,
+						innerHeight: globalThis.innerHeight
+					});
+					tabData.options.embeddedImage = new Uint8Array(await (await fetch(screenshotBlobURI)).arrayBuffer());
+					editorElement.style.height = "";
+					document.documentElement.style.height = "";
+					toolbarElement.style.display = "";
+					if (infobarElement) {
+						infobarElement.style.display = "";
+					}
+				} else {
+					tabData.options.embeddedImage = tabData.embeddedImage;
+				}
 			}
 			if (tabData.insertMetaCSP !== undefined) {
 				tabData.options.insertMetaCSP = tabData.insertMetaCSP;
@@ -370,15 +393,37 @@ addEventListener("message", async event => {
 });
 
 browser.runtime.onMessage.addListener(message => {
+	if (message.method == "devtools.resourceCommitted" ||
+		message.method == "content.save" ||
+		message.method == "editor.setTabData" ||
+		message.method == "options.refresh" ||
+		message.method == "content.error" ||
+		message.method == "content.download") {
+		return onMessage(message);
+	}
+});
+
+addEventListener("load", () => {
+	browser.runtime.sendMessage({ method: "editor.getTabData" });
+});
+
+addEventListener("beforeunload", event => {
+	if (tabData.options.warnUnsavedPage && !tabData.docSaved) {
+		event.preventDefault();
+		event.returnValue = "";
+	}
+});
+
+async function onMessage(message) {
 	if (message.method == "devtools.resourceCommitted") {
 		updatedResources[message.url] = { content: message.content, type: message.type, encoding: message.encoding };
-		return Promise.resolve({});
+		return {};
 	}
 	if (message.method == "content.save") {
 		tabData.options = message.options;
 		savePage();
-		browser.runtime.sendMessage({ method: "ui.processInit" });
-		return Promise.resolve({});
+		await browser.runtime.sendMessage({ method: "ui.processInit" });
+		return {};
 	}
 	if (message.method == "editor.setTabData") {
 		if (message.truncated) {
@@ -394,29 +439,21 @@ browser.runtime.onMessage.addListener(message => {
 			editorElement.contentWindow.focus();
 			setInterval(() => browser.runtime.sendMessage({ method: "ping" }), 15000);
 		}
-		return Promise.resolve({});
+		return {};
 	}
 	if (message.method == "options.refresh") {
-		return refreshOptions(message.profileName);
+		await refreshOptions(message.profileName);
+		return {};
 	}
 	if (message.method == "content.error") {
 		onError(message.error, message.link);
+		return {};
 	}
 	if (message.method == "content.download") {
-		return downloadContent(message);
+		await downloadContent(message);
+		return {};
 	}
-});
-
-addEventListener("load", () => {
-	browser.runtime.sendMessage({ method: "editor.getTabData" });
-});
-
-addEventListener("beforeunload", event => {
-	if (tabData.options.warnUnsavedPage && !tabData.docSaved) {
-		event.preventDefault();
-		event.returnValue = "";
-	}
-});
+}
 
 async function downloadContent(message) {
 	if (!downloadParser) {

+ 2 - 1
src/ui/content/content-ui-editor-web.js

@@ -1105,7 +1105,8 @@ pre code {
 						viewport: viewport ? viewport.content : null,
 						compressContent: true,
 						foregroundSave: message.foregroundSave,
-						sharePage: message.sharePage
+						sharePage: message.sharePage,
+						documentHeight: document.documentElement.offsetHeight
 					}), "*");
 				} else {
 					if (message.foregroundSave || message.sharePage) {