Browse Source

call DOM.getMediaAllInfo in single-file-core

Gildas 7 years ago
parent
commit
545d0893e4

+ 1 - 1
extension/core/bg/script-loader.js

@@ -27,6 +27,7 @@ singlefile.scriptLoader = (() => {
 		"/lib/single-file/doc-helper.js",
 		"/lib/single-file/base64.js",
 		"/lib/single-file/css-srcset-parser.js",
+		"/lib/single-file/css-rules-matcher.js",
 		"/lib/fetch/content/fetch.js",
 		"/lib/single-file/single-file-core.js",
 		"/lib/single-file/single-file-browser.js",
@@ -62,7 +63,6 @@ singlefile.scriptLoader = (() => {
 		removeUnusedStyles: [
 			"/lib/single-file/css-selector-parser.js",
 			"/lib/single-file/css-declarations-parser.js",
-			"/lib/single-file/css-rules-matcher.js",
 			"/lib/single-file/css-medias-minifier.js",
 			"/lib/single-file/css-rules-minifier.js"
 		],

+ 2 - 4
lib/single-file/css-rules-minifier.js

@@ -18,16 +18,14 @@
  *   along with SingleFile.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-/* global CSSRule, parseCss, RulesMatcher */
+/* global CSSRule, parseCss */
 
 this.cssMinifier = this.cssMinifier || (() => {
 
 	const DEBUG = false;
 
 	return {
-		process: doc => {
-			const rulesMatcher = RulesMatcher.create(doc);
-			const mediaAllInfo = rulesMatcher.getAllMatchedRules();
+		process: (doc, mediaAllInfo) => {
 			const stats = { processed: 0, discarded: 0 };
 			doc.querySelectorAll("style").forEach((styleElement, sheetIndex) => {
 				if (styleElement.sheet) {

+ 8 - 3
lib/single-file/single-file-browser.js

@@ -18,7 +18,7 @@
  *   along with SingleFile.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-/* global SingleFileCore, DOMParser, TextDecoder, Blob, fetch, base64, superFetch, parseSrcset, uglifycss, htmlmini, cssMinifier, fontsMinifier, lazyLoader, serializer, docHelper, mediasMinifier, TextEncoder, crypto */
+/* global SingleFileCore, DOMParser, TextDecoder, Blob, fetch, base64, superFetch, parseSrcset, uglifycss, htmlmini, cssMinifier, fontsMinifier, lazyLoader, serializer, docHelper, mediasMinifier, TextEncoder, crypto, RulesMatcher */
 
 this.SingleFile = this.SingleFile || (() => {
 
@@ -192,14 +192,19 @@ this.SingleFile = this.SingleFile || (() => {
 			return lazyLoader.process(doc);
 		}
 
-		static minifyCSS(doc) {
-			return cssMinifier.process(doc);
+		static minifyCSS(doc, mediaAllInfo) {
+			return cssMinifier.process(doc, mediaAllInfo);
 		}
 
 		static minifyFonts(doc, secondPass) {
 			return fontsMinifier.process(doc, secondPass);
 		}
 
+		static getMediaAllInfo(doc) {
+			const rulesMatcher = RulesMatcher.create(doc);
+			return rulesMatcher.getMediaAllInfo();
+		}
+
 		static compressCSS(content, options) {
 			return uglifycss.processString(content, options);
 		}

+ 4 - 1
lib/single-file/single-file-core.js

@@ -494,7 +494,10 @@ this.SingleFileCore = this.SingleFileCore || (() => {
 		}
 
 		removeUnusedStyles() {
-			const stats = DOM.minifyCSS(this.doc);
+			if (!this.mediaAllInfo) {
+				this.mediaAllInfo = DOM.getMediaAllInfo(this.doc);
+			}
+			const stats = DOM.minifyCSS(this.doc, this.mediaAllInfo);
 			this.stats.set("processed", "CSS rules", stats.processed);
 			this.stats.set("discarded", "CSS rules", stats.discarded);
 		}