gecko-dev/layout/mathml/tests/test_bug553917.html
Frederic Wang 138d2ac0fb Bug 1575870. Remove support for XLink on MathML elements. r=emilio
See https://groups.google.com/forum/#!topic/mozilla.dev.platform/70NFnet82cU

This commit introduces a new mathml.xlink.disabled option to disable support
for XLink attributes on MathML elements together with a use counter and
deprecation warning when support is enabled. For now, support is only disabled
in Nightly.

In the past, we relied on custom MathML deprecation warnings but those are
removed here. Corresponding tests for these legacy warning messages are
also removed from test_bug553917.html.

link-1.xhtml is run with XLink support enabled (since it checks xlink:href)
while browser_contentAltClick.js and browser_contentAreaClick.js are updated
to instead check MathML links (i.e. href instead of xlink:href).

Differential Revision: https://phabricator.services.mozilla.com/D43332

--HG--
extra : moz-landing-system : lando
2019-10-05 21:47:38 +00:00

232 lines
9.5 KiB
HTML

<!DOCTYPE HTML>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=553917
-->
<html>
<head>
<title>Test for Bug 553917</title>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<script src="/tests/SimpleTest/EventUtils.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
<script type="application/javascript">
var stringBundleService =
SpecialPowers.Cc["@mozilla.org/intl/stringbundle;1"]
.getService(SpecialPowers.Ci.nsIStringBundleService);
var g_bundl =
stringBundleService.createBundle("chrome://global/locale/mathml/mathml.properties");
const allow_linethickness_names = !SpecialPowers.getBoolPref('mathml.mfrac_linethickness_names.disabled');
const allow_mathsize_names = !SpecialPowers.getBoolPref('mathml.mathsize_names.disabled');
const allow_nonzero_unitless_lengths = !SpecialPowers.getBoolPref('mathml.nonzero_unitless_lengths.disabled');
const allow_mathspace_names = !SpecialPowers.getBoolPref('mathml.mathspace_names.disabled');
const allow_legacy_numbers = !SpecialPowers.getBoolPref('mathml.legacy_number_syntax.disabled');
var g_errorInfo = {
/*<math><mroot></mroot></math>
<math><msub></msub></math>
<math><msup></msup></math>
<math><mfrac></mfrac></math>
<math><msubsup></msubsup></math>
<math><munderover></munderover></math>*/
ChildCountIncorrect: {
status : [false, false, false, false, false, false],
args : [["mroot"], ["msub"], ["msup"], ["mfrac"], ["msubsup"], ["munderover"]] },
/*<math><mpadded width="BAD!"></mpadded></math>
<math><mpadded height="BAD!"></mpadded></math>
<math><mpadded voffset="BAD!"></mpadded></math>*/
AttributeParsingError: {
status: [false, false, false],
args: [["BAD!","width","mpadded"], ["BAD!","height","mpadded"], ["BAD!","voffset","mpadded"]]
},
/*<math scriptlevel="BAD!"></math>
<math scriptsizemultiplier="BAD!"></math>*/
AttributeParsingErrorNoTag: {
status: [false, false],
args: [["BAD!","scriptlevel"], ["BAD!","scriptsizemultiplier"]]
},
/* <math><mo rspace="2..0px">+</mo></math>
<math><mo minsize="1.5notaunit">+</mo></math>
<math><mspace width="2"/></math>
<math><mo lspace="BADlspace">+</mo></math>
<math><mspace height="BADheight"/></math>
<math><mspace depth="BADdepth"/></math>
<math><mfrac linethickness="thin"><mn>1</mn><mn>2</mn></mfrac></math>
<math><mfrac linethickness="medium"><mn>1</mn><mn>2</mn></mfrac></math>
<math><mfrac linethickness="thick"><mn>1</mn><mn>2</mn></mfrac></math>
<math><mstyle mathsize="small"></mstyle></math>
<math><mstyle mathsize="normal"></mstyle></math>
<math><mstyle mathsize="big"></mstyle></math>
<math><mspace width="veryverythinmathspace"/></math>
<math><mspace width="verythinmathspace"/></math>
<math><mspace width="thinmathspace"/></math>
<math><mspace width="mediummathspace"/></math>
<math><mspace width="thickmathspace"/></math>
<math><mspace width="verythickmathspace"/></math>
<math><mspace width="veryverythickmathspace"/></math>
<math><mspace width="12345."/></math>
<math><mo minsize="17">+</mo></math>
*/
LengthParsingError : {
status: [false,
false,
false,
false,
false,
false,
allow_linethickness_names,
allow_linethickness_names,
allow_linethickness_names,
allow_mathsize_names,
allow_mathsize_names,
allow_mathsize_names,
allow_mathspace_names,
allow_mathspace_names,
allow_mathspace_names,
allow_mathspace_names,
allow_mathspace_names,
allow_mathspace_names,
allow_mathspace_names,
allow_legacy_numbers,
allow_nonzero_unitless_lengths,
],
args: [["2..0px"],
["1.5notaunit"],
["2"],
["BADlspace"],
["BADheight"],
["BADdepth"],
["thin"],
["medium"],
["thick"],
["small"],
["normal"],
["big"],
["veryverythinmathspace"],
["verythinmathspace"],
["thinmathspace"],
["mediummathspace"],
["thickmathspace"],
["verythickmathspace"],
["veryverythickmathspace"],
["12345."],
["17"]
]
},
/*<math><mmultiscripts></mmultiscripts></math>
<math><mmultiscripts><mprescripts/><mprescripts/></mmultiscripts></math>
<math><mmultiscripts><mi>x</mi><mi>y</mi></mmultiscripts></math>*/
MMultiscriptsErrors: {
status: [false, false, false],
args: ["NoBase","DuplicateMprescripts", "SubSupMismatch"]
},
/*<math><mo minsize="17">+</mo></math>*/
UnitlessValuesAreDeprecated : {
status : [!allow_nonzero_unitless_lengths],
args : [[]] }};
var g_errorTypes = ["ChildCountIncorrect","AttributeParsingError",
"AttributeParsingErrorNoTag","LengthParsingError", "MMultiscriptsErrors",
"UnitlessValuesAreDeprecated"];
function getErrorMessage(name,idx)
{
if (name != "MMultiscriptsErrors") {
var formatParams = g_errorInfo[name].args[idx];
if (formatParams.length > 0) {
return g_bundl.formatStringFromName(name,formatParams);
}
return g_bundl.GetStringFromName(name);
}
return g_bundl.GetStringFromName(g_errorInfo[name].args[idx]);
}
/** Checks the roll call to see if all expected error messages were present. */
function processRollCall()
{
for (var i=0; i<g_errorTypes.length;i++) {
for (var j = 0; j < g_errorInfo[g_errorTypes[i]].status.length; j++) {
ok(g_errorInfo[g_errorTypes[i]].status[j],
"\"" + getErrorMessage(g_errorTypes[i], j)
+ "\" was expected to be in the error console.");
}
}
}
/** Tests a candidate to see if it is one of the expected messages and updates the
g_errorInfo structure if it is. */
function doRollCall(msg)
{
for (var i = 0; i < g_errorTypes.length; i++) {
for (var j = 0; j < g_errorInfo[g_errorTypes[i]].status.length; j++) {
if (msg == getErrorMessage(g_errorTypes[i], j))
{
g_errorInfo[g_errorTypes[i]].status[j] = true;
}
}
}
}
SpecialPowers.registerConsoleListener(
function (msg) {
if (msg.message == "SENTINEL") {
processRollCall();
SimpleTest.finish();
} else if (msg.isScriptError) {
doRollCall(msg.errorMessage);
}
});
SimpleTest.waitForExplicitFinish();
</script>
</head>
<body onload="SpecialPowers.postConsoleSentinel();">
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=553917">Mozilla Bug 553917</a>
<!-- ChildCountIncorrect -->
<math><mroot></mroot></math>
<math><msub></msub></math>
<math><msup></msup></math>
<math><mfrac></mfrac></math>
<math><msubsup></msubsup></math>
<math><munderover></munderover></math>
<!-- AttributeParsingError -->
<math><mpadded width="BAD!"></mpadded></math>
<math><mpadded height="BAD!"></mpadded></math>
<math><mpadded voffset="BAD!"></mpadded></math>
<!-- AttributeParsingErrorNoTag -->
<math scriptlevel="BAD!"></math>
<math scriptsizemultiplier="BAD!"></math>
<!-- LengthParsingError -->
<math><mo rspace="2..0px">+</mo></math>
<math><mo minsize="1.5notaunit">+</mo></math>
<math><mspace width="2"/></math>
<math><mo lspace="BADlspace">+</mo></math>
<math><mspace height="BADheight"/></math>
<math><mspace depth="BADdepth"/></math>
<math><mfrac linethickness="thin"><mn>1</mn><mn>2</mn></mfrac></math>
<math><mfrac linethickness="medium"><mn>1</mn><mn>2</mn></mfrac></math>
<math><mfrac linethickness="thick"><mn>1</mn><mn>2</mn></mfrac></math>
<math><mstyle mathsize="small"></mstyle></math>
<math><mstyle mathsize="normal"></mstyle></math>
<math><mstyle mathsize="big"></mstyle></math>
<math><mspace width="veryverythinmathspace"/></math>
<math><mspace width="verythinmathspace"/></math>
<math><mspace width="thinmathspace"/></math>
<math><mspace width="mediummathspace"/></math>
<math><mspace width="thickmathspace"/></math>
<math><mspace width="verythickmathspace"/></math>
<math><mspace width="veryverythickmathspace"/></math>
<math><mspace width="12345."/></math>
<!-- MMultiscriptsErrors -->
<math><mmultiscripts></mmultiscripts></math>
<math><mmultiscripts><mprescripts/><mprescripts/></mmultiscripts></math>
<math><mmultiscripts><mi>x</mi><mi>y</mi></mmultiscripts></math>
<!-- UnitlessValuesAreDeprecated -->
<math><mo minsize="17">+</mo></math>
</body>
</html>