From 36d22d82aa202bb199967e9512281e9a53db42c9 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 21:33:14 +0200 Subject: Adding upstream version 115.7.0esr. Signed-off-by: Daniel Baumann --- parser/xml/test/unit/test_sanitizer_style.js | 125 +++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 parser/xml/test/unit/test_sanitizer_style.js (limited to 'parser/xml/test/unit/test_sanitizer_style.js') diff --git a/parser/xml/test/unit/test_sanitizer_style.js b/parser/xml/test/unit/test_sanitizer_style.js new file mode 100644 index 0000000000..6f00295cda --- /dev/null +++ b/parser/xml/test/unit/test_sanitizer_style.js @@ -0,0 +1,125 @@ +const { AppConstants } = ChromeUtils.importESModule( + "resource://gre/modules/AppConstants.sys.mjs" +); + +if (AppConstants.platform != "android") { + // We load HTML documents, which try to track link state, which requires + // the history service, which requires a profile. + do_get_profile(); +} + +const kTestCases = [ + { + // bug 1602843 + data: `@font-face { font-family: 'ab<\\/style>'}`, + sanitized: `@font-face { font-family: 'ab<\\/style>'}`, + }, + { + // bug 1680084 + data: ``, + sanitized: `@font-face + {font-family:"Cambria Math"; + panose-1:2 4 5 3 5 4 6 3 2 4;}@font-face + {font-family:"Yu Gothic"; + panose-1:2 11 4 0 0 0 0 0 0 0;}@font-face + {font-family:"Yu Gothic"; + panose-1:2 11 4 0 0 0 0 0 0 0;}p.MsoNormal, li.MsoNormal, div.MsoNormal + {margin:0mm; + text-align:justify; + text-justify:inter-ideograph; + font-size:10.5pt; + font-family:"Yu Gothic";}.MsoChpDefault + {mso-style-type:export-only; + font-family:"Yu Gothic";}div.WordSection1 + {page:WordSection1}`, + }, +]; + +const kConditionalCSSTestCases = [ + { + data: `#foo { display: none } @media (min-width: 300px) { #bar { display: none } }`, + sanitized: `#foo { display: none }`, + }, + { + data: `@media (min-width: 300px) { #bar { display: none } }`, + sanitized: ``, + }, +]; + +function run_test() { + if (AppConstants.platform != "android") { + // xpcshell tests are weird. They fake shutdown after the test finishes. This upsets this test + // because it will try to create the history service to check for visited state on the links + // we're parsing. + // Creating the history service midway through shutdown breaks. + // We can't catch this in the history component because we're not *actually* shutting down, + // and so the app startup's service's `shuttingDown` bool is false, even though normally that + // is set to true *before* profile-change-teardown notifications are fired. + // To work around this, just force the history service to be created earlier: + + let { PlacesUtils } = ChromeUtils.importESModule( + "resource://gre/modules/PlacesUtils.sys.mjs" + ); + Assert.ok( + PlacesUtils.history.databaseStatus <= 1, + "ensure places database is successfully initialized." + ); + } + + var ParserUtils = Cc["@mozilla.org/parserutils;1"].getService( + Ci.nsIParserUtils + ); + var sanitizeFlags = + ParserUtils.SanitizerDropForms | + ParserUtils.SanitizerDropNonCSSPresentation | + ParserUtils.SanitizerAllowStyle; + + for (let { data, sanitized } of kTestCases) { + let out = ParserUtils.sanitize(``, sanitizeFlags); + info(out); + Assert.equal( + ``, + out + ); + } + + for (let { data, sanitized } of kConditionalCSSTestCases) { + let out = ParserUtils.removeConditionalCSS(``); + info(out); + Assert.equal( + ``, + out + ); + } +} -- cgit v1.2.3