1
0
Эх сурвалжийг харах

added "--include-infobar" switch (CLI)

Former-commit-id: 140daeb5721caad2e3b2f49a233f8d6319cb1179
Gildas 6 жил өмнө
parent
commit
76352c7234

+ 8 - 2
cli/back-ends/jsdom.js

@@ -50,7 +50,8 @@ const SCRIPTS = [
 	"../../lib/single-file/modules/css-rules-minifier.js",
 	"../../lib/single-file/modules/html-images-alt-minifier.js",
 	"../../lib/single-file/modules/html-serializer.js",
-	"../../lib/single-file/single-file-core.js"
+	"../../lib/single-file/single-file-core.js",
+	"../../extension/core/common/infobar.js"
 ];
 
 exports.getPageData = async options => {
@@ -88,6 +89,7 @@ exports.getPageData = async options => {
 		const fileContents = {
 			"/lib/hooks/content/content-hooks-web.js": fs.readFileSync(require.resolve("../../lib/hooks/content/content-hooks-web.js")).toString(),
 			"/lib/hooks/content/content-hooks-frames-web.js": fs.readFileSync(require.resolve("../../lib/hooks/content/content-hooks-frames-web.js")).toString(),
+			"/extension/ui/content/content-ui-infobar.js": fs.readFileSync(require.resolve("../..//extension/ui/content/content-ui-infobar.js")).toString()
 		};
 		scripts = scripts + ";this.singlefile.lib.getFileContent = filename => (" + JSON.stringify(fileContents) + ")[filename];";
 		dom.window.eval(scripts);
@@ -105,7 +107,11 @@ exports.getPageData = async options => {
 		const SingleFile = getSingleFileClass(win);
 		const singleFile = new SingleFile(options);
 		await singleFile.run();
-		return singleFile.getPageData();
+		const pageData = await singleFile.getPageData();
+		if (options.includeInfobar) {
+			await win.singlefile.extension.core.common.infobar.includeScript(pageData);
+		}
+		return pageData;
 	} finally {
 		if (dom && dom.window) {
 			dom.window.close();

+ 8 - 2
cli/back-ends/puppeteer.js

@@ -49,7 +49,8 @@ const SCRIPTS = [
 	"../../lib/single-file/modules/html-images-alt-minifier.js",
 	"../../lib/single-file/modules/html-serializer.js",
 	"../../lib/single-file/single-file-core.js",
-	"../../lib/single-file/single-file.js"
+	"../../lib/single-file/single-file.js",
+	"../../extension/core/common/infobar.js"
 ];
 
 exports.getPageData = async options => {
@@ -91,6 +92,7 @@ exports.getPageData = async options => {
 		const fileContents = {
 			"/lib/hooks/content/content-hooks-web.js": fs.readFileSync(require.resolve("../../lib/hooks/content/content-hooks-web.js")).toString(),
 			"/lib/hooks/content/content-hooks-frames-web.js": fs.readFileSync(require.resolve("../../lib/hooks/content/content-hooks-frames-web.js")).toString(),
+			"/extension/ui/content/content-ui-infobar.js": fs.readFileSync(require.resolve("../..//extension/ui/content/content-ui-infobar.js")).toString()
 		};
 		scripts = scripts + ";this.singlefile.lib.getFileContent = filename => (" + JSON.stringify(fileContents) + ")[filename];";
 		await page.evaluateOnNewDocument(scripts);
@@ -121,7 +123,11 @@ exports.getPageData = async options => {
 				const SingleFile = singlefile.lib.SingleFile.getClass();
 				const singleFile = new SingleFile(options);
 				await singleFile.run();
-				return await singleFile.getPageData();
+				const pageData = await singleFile.getPageData();
+				if (options.includeInfobar) {
+					await singlefile.extension.core.common.infobar.includeScript(pageData);
+				}
+				return pageData;
 			}, options);
 		} catch (error) {
 			if (error.message.includes("Execution context was destroyed")) {

+ 8 - 2
cli/back-ends/webdriver-chromium.js

@@ -51,7 +51,8 @@ const SCRIPTS = [
 	"../../lib/single-file/modules/html-images-alt-minifier.js",
 	"../../lib/single-file/modules/html-serializer.js",
 	"../../lib/single-file/single-file-core.js",
-	"../../lib/single-file/single-file.js"
+	"../../lib/single-file/single-file.js",
+	"../../extension/core/common/infobar.js"
 ];
 
 exports.getPageData = async options => {
@@ -116,6 +117,7 @@ exports.getPageData = async options => {
 		const fileContents = {
 			"/lib/hooks/content/content-hooks-web.js": fs.readFileSync(require.resolve("../../lib/hooks/content/content-hooks-web.js")).toString(),
 			"/lib/hooks/content/content-hooks-frames-web.js": fs.readFileSync(require.resolve("../../lib/hooks/content/content-hooks-frames-web.js")).toString(),
+			"/extension/ui/content/content-ui-infobar.js": fs.readFileSync(require.resolve("../..//extension/ui/content/content-ui-infobar.js")).toString()
 		};
 		scripts = scripts + ";this.singlefile.lib.getFileContent = filename => (" + JSON.stringify(fileContents) + ")[filename];";
 		if (options.browserDebug) {
@@ -186,7 +188,11 @@ function getPageDataScript() {
 		const SingleFile = singlefile.lib.SingleFile.getClass();
 		const singleFile = new SingleFile(options);
 		await singleFile.run();
-		return await singleFile.getPageData();
+		const pageData = await singleFile.getPageData();
+		if (options.includeInfobar) {
+			await singlefile.extension.core.common.infobar.includeScript(pageData);
+		}
+		return pageData;
 	}
 	`;
 }

+ 8 - 2
cli/back-ends/webdriver-gecko.js

@@ -51,7 +51,8 @@ const SCRIPTS = [
 	"../../lib/single-file/modules/html-images-alt-minifier.js",
 	"../../lib/single-file/modules/html-serializer.js",
 	"../../lib/single-file/single-file-core.js",
-	"../../lib/single-file/single-file.js"
+	"../../lib/single-file/single-file.js",
+	"../../extension/core/common/infobar.js"
 ];
 
 exports.getPageData = async options => {
@@ -106,6 +107,7 @@ exports.getPageData = async options => {
 		const fileContents = {
 			"/lib/hooks/content/content-hooks-web.js": fs.readFileSync(require.resolve("../../lib/hooks/content/content-hooks-web.js")).toString(),
 			"/lib/hooks/content/content-hooks-frames-web.js": fs.readFileSync(require.resolve("../../lib/hooks/content/content-hooks-frames-web.js")).toString(),
+			"/extension/ui/content/content-ui-infobar.js": fs.readFileSync(require.resolve("../..//extension/ui/content/content-ui-infobar.js")).toString()
 		};
 		scripts = scripts + ";this.singlefile.lib.getFileContent = filename => (" + JSON.stringify(fileContents) + ")[filename];";
 		if (options.browserDebug) {
@@ -193,7 +195,11 @@ function getPageDataScript() {
 		const SingleFile = singlefile.lib.SingleFile.getClass();
 		const singleFile = new SingleFile(options);
 		await singleFile.run();
-		return await singleFile.getPageData();
+		const pageData = await singleFile.getPageData();
+		if (options.includeInfobar) {
+			await singlefile.extension.core.common.infobar.includeScript(pageData);
+		}
+		return pageData;
 	}
 	`;
 }

+ 3 - 0
cli/single-file

@@ -48,6 +48,7 @@ const args = require("yargs")
 		"compress-HTML": true,
 		"filename-template": "",
 		"group-duplicate-images": true,
+		"include-infobar": false,
 		"load-deferred-images": true,
 		"load-deferred-images-max-idle-time": 1500,
 		"max-resource-size-enabled": false,
@@ -96,6 +97,8 @@ const args = require("yargs")
 	.string("filename-template")
 	.options("group-duplicate-images", { description: "Group duplicate images into CSS custom properties" })
 	.boolean("group-duplicate-images")
+	.options("include-infobar", { description: "Include the infobar" })
+	.boolean("include-infobar")
 	.options("load-deferred-images", { description: "Load deferred (a.k.a. lazy-loaded) images (puppeteer, webdriver-gecko, webdriver-chromium)" })
 	.boolean("load-deferred-images")
 	.options("load-deferred-images-max-idle-time", { description: "Maximum delay of time to wait for deferred images in ms (puppeteer, webdriver-gecko, webdriver-chromium)" })

+ 11 - 2
extension/core/common/infobar.js

@@ -21,16 +21,25 @@
  *   Source.
  */
 
-/* global browser, singlefile, fetch */
+/* global singlefile, fetch */
 
 singlefile.extension.core.common.infobar = (() => {
 
+	const SCRIPT_PATH = "/extension/ui/content/content-ui-infobar.js";
+
+	const browser = this.browser;
+
 	return {
 		includeScript
 	};
 
 	async function includeScript(pageData) {
-		let infobarContent = await (await fetch(browser.runtime.getURL("/extension/ui/content/content-ui-infobar.js"))).text();
+		let infobarContent;
+		if (browser && browser.runtime && browser.runtime.getURL) {
+			infobarContent = await (await fetch(browser.runtime.getURL(SCRIPT_PATH))).text();
+		} else if (singlefile.lib.getFileContent) {
+			infobarContent = singlefile.lib.getFileContent(SCRIPT_PATH);
+		}
 		let lastInfobarContent;
 		while (lastInfobarContent != infobarContent) {
 			lastInfobarContent = infobarContent;