Переглянути джерело

support `insertMetaCSP` option

Gildas 2 роки тому
батько
коміт
452fb2d581

+ 2 - 0
src/core/bg/downloads.js

@@ -270,6 +270,7 @@ async function downloadCompressedContent(message, tab) {
 				preventAppendedData: message.preventAppendedData,
 				insertCanonicalLink: message.insertCanonicalLink,
 				insertMetaNoIndex: message.insertMetaNoIndex,
+				insertMetaCSP: message.insertMetaCSP,
 				password: message.password,
 				embeddedImage: message.embeddedImage
 			});
@@ -284,6 +285,7 @@ async function downloadCompressedContent(message, tab) {
 					selfExtractingArchive: message.selfExtractingArchive,
 					extractDataFromPage: message.extractDataFromPage,
 					insertTextBody: message.insertTextBody,
+					insertMetaCSP: message.insertMetaCSP,
 					embeddedImage: message.embeddedImage
 				});
 			} else if (message.foregroundSave) {

+ 3 - 1
src/core/bg/editor.js

@@ -39,7 +39,7 @@ export {
 	EDITOR_URL
 };
 
-async function open({ tabIndex, content, filename, compressContent, selfExtractingArchive, extractDataFromPage, insertTextBody, embeddedImage }) {
+async function open({ tabIndex, content, filename, compressContent, selfExtractingArchive, extractDataFromPage, insertTextBody, insertMetaCSP, embeddedImage }) {
 	const createTabProperties = { active: true, url: EDITOR_PAGE_URL };
 	if (tabIndex != null) {
 		createTabProperties.index = tabIndex;
@@ -52,6 +52,7 @@ async function open({ tabIndex, content, filename, compressContent, selfExtracti
 		selfExtractingArchive,
 		extractDataFromPage,
 		insertTextBody,
+		insertMetaCSP,
 		embeddedImage
 	});
 }
@@ -121,6 +122,7 @@ async function onMessage(message, sender) {
 				selfExtractingArchive: message.selfExtractingArchive,
 				extractDataFromPageTags: message.extractDataFromPageTags,
 				insertTextBody: message.insertTextBody,
+				insertMetaCSP: message.insertMetaCSP,
 				embeddedImage: message.embeddedImage
 			});
 		}

+ 1 - 0
src/core/common/download.js

@@ -75,6 +75,7 @@ async function downloadPage(pageData, options) {
 		extractDataFromPage: options.extractDataFromPage,
 		insertCanonicalLink: options.insertCanonicalLink,
 		insertMetaNoIndex: options.insertMetaNoIndex,
+		insertMetaCSP: options.insertMetaCSP,
 		password: options.password,
 		compressContent: options.compressContent,
 		foregroundSave: options.foregroundSave

+ 3 - 1
src/core/content/content-bootstrap.js

@@ -28,7 +28,7 @@ const MAX_CONTENT_SIZE = 32 * (1024 * 1024);
 const singlefile = globalThis.singlefileBootstrap;
 const pendingResponses = new Map();
 
-let unloadListenerAdded, optionsAutoSave, tabId, tabIndex, autoSaveEnabled, autoSaveTimeout, autoSavingPage, pageAutoSaved, previousLocationHref, savedPageDetected, compressContent, extractDataFromPageTags, insertTextBody;
+let unloadListenerAdded, optionsAutoSave, tabId, tabIndex, autoSaveEnabled, autoSaveTimeout, autoSavingPage, pageAutoSaved, previousLocationHref, savedPageDetected, compressContent, extractDataFromPageTags, insertTextBody, insertMetaCSP;
 singlefile.pageInfo = {
 	updatedResources: {},
 	visitDate: new Date()
@@ -329,6 +329,7 @@ async function openEditor(document) {
 			compressContent,
 			extractDataFromPageTags,
 			insertTextBody,
+			insertMetaCSP,
 			selfExtractingArchive: compressContent
 		};
 		message.truncated = content.length > MAX_CONTENT_SIZE;
@@ -373,6 +374,7 @@ function detectSavedPage(document) {
 		compressContent = document.documentElement.dataset.sfz == "";
 		extractDataFromPageTags = Boolean(document.querySelector("sfz-extra-data"));
 		insertTextBody = Boolean(document.querySelector("body > main[hidden]"));
+		insertMetaCSP = Boolean(document.querySelector("meta[http-equiv=content-security-policy]"));
 		savedPageDetected = compressContent || (
 			firstDocumentChild.nodeType == Node.COMMENT_NODE &&
 			(firstDocumentChild.textContent.includes(helper.COMMENT_HEADER) || firstDocumentChild.textContent.includes(helper.COMMENT_HEADER_LEGACY)));

+ 3 - 0
src/ui/bg/ui-editor.js

@@ -288,6 +288,9 @@ addEventListener("message", event => {
 			if (tabData.embeddedImage !== undefined) {
 				tabData.options.embeddedImage = tabData.embeddedImage;
 			}
+			if (tabData.insertMetaCSP !== undefined) {
+				tabData.options.insertMetaCSP = tabData.insertMetaCSP;
+			}
 			getContentPageData(tabData.content, message.content, { password: tabData.options.password })
 				.then(pageData => {
 					pageData.content = message.content;