Bug 1548522 - Remove support for the menclose's "radical" notation. r=emilio
☠☠ backed out by 8d5b29ee19f3 ☠ ☠
authorFrederic Wang <fred.wang@free.fr>
Wed, 02 Oct 2019 00:01:12 +0000
changeset 496221 d2613eaa13690e3771e84ef6ff5080a8fa348a66
parent 496220 e9c7e89dc09a541dd697968585eb832696a45fe3
child 496222 98c607395faeb15d8b88ba46bb10ba43bb0c8dda
push id36647
push usernerli@mozilla.com
push dateFri, 04 Oct 2019 04:09:18 +0000
treeherdermozilla-central@678d4d2c3c4d [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersemilio
bugs1548522
milestone71.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1548522 - Remove support for the menclose's "radical" notation. r=emilio See https://groups.google.com/forum/#!topic/mozilla.dev.platform/vwAkuZIEhnY * Introduce a new preference option to disable menclose's "radical" notation. * Disable the notation in Nightly and when running WPT tests. * Enable the notation in other channels together with a counter and deprecation warning. * Update WPT test legacy-menclose-radical-notation.html - Fix test: "radical" should be equivalent to "", which is not the same as the default value "longdiv". See https://github.com/mathml-refresh/mathml/issues/144 - Add a test "box radical" which should be equivalent to "box". - Remove failure expectation. * Enable the radical notation for MathML reftests testing it. Differential Revision: https://phabricator.services.mozilla.com/D46721
dom/base/nsDeprecatedOperationList.h
dom/locales/en-US/chrome/dom/dom.properties
layout/mathml/nsMathMLmencloseFrame.cpp
layout/mathml/nsMathMLmsqrtFrame.h
layout/reftests/mathml/reftest.list
modules/libpref/init/StaticPrefList.yaml
testing/web-platform/meta/mathml/__dir__.ini
testing/web-platform/meta/mathml/presentation-markup/menclose/legacy-menclose-radical-notation.html.ini
testing/web-platform/tests/mathml/presentation-markup/menclose/legacy-menclose-radical-notation-ref.html
testing/web-platform/tests/mathml/presentation-markup/menclose/legacy-menclose-radical-notation.html
--- a/dom/base/nsDeprecatedOperationList.h
+++ b/dom/base/nsDeprecatedOperationList.h
@@ -48,9 +48,10 @@ DEPRECATED_OPERATION(MozRequestFullScree
 DEPRECATED_OPERATION(MozfullscreenchangeDeprecatedPrefix)
 DEPRECATED_OPERATION(MozfullscreenerrorDeprecatedPrefix)
 DEPRECATED_OPERATION(External_AddSearchProvider)
 DEPRECATED_OPERATION(MouseEvent_MozPressure)
 DEPRECATED_OPERATION(MathML_DeprecatedAlignmentAttributes)
 DEPRECATED_OPERATION(MathML_DeprecatedLineThicknessValue)
 DEPRECATED_OPERATION(MathML_DeprecatedMathSizeValue)
 DEPRECATED_OPERATION(MathML_DeprecatedMathSpaceValue)
+DEPRECATED_OPERATION(MathML_DeprecatedMencloseNotationRadical)
 DEPRECATED_OPERATION(MathML_DeprecatedStyleAttribute)
--- a/dom/locales/en-US/chrome/dom/dom.properties
+++ b/dom/locales/en-US/chrome/dom/dom.properties
@@ -373,10 +373,12 @@ MouseEvent_MozPressureWarning=MouseEvent
 MathML_DeprecatedAlignmentAttributesWarning=MathML attributes “align”, “numalign” and “denomalign” are deprecated values and will be removed at a future date.
 # LOCALIZATION NOTE: Do not translate thin, medium, thick and linethickness.
 MathML_DeprecatedLineThicknessValueWarning=“thin”, “medium” and “thick” are deprecated values for the linethickness attribute and will be removed at a future date.
 # LOCALIZATION NOTE: Do not translate small, normal, big and mathsize.
 MathML_DeprecatedMathSizeValueWarning=“small”, “normal” and “big” are deprecated values for the mathsize attribute and will be removed at a future date.
 # LOCALIZATION NOTE: Do not translate veryverythinmathspace, verythinmathspace,
 # thinmathspace, mediummathspace, thickmathspace, verythickmathspace, veryverythickmathspace and MathML.
 MathML_DeprecatedMathSpaceValueWarning=“veryverythinmathspace”, “verythinmathspace”, “thinmathspace”, “mediummathspace”, “thickmathspace”, “verythickmathspace” and “veryverythickmathspace” are deprecated values for MathML lengths and will be removed at a future date.
+# LOCALIZATION NOTE: Do not translate radical, notation and menclose.
+MathML_DeprecatedMencloseNotationRadical=The “radical” value is deprecated for the “notation” attribute of the <menclose> element and will be removed at a future date.
 # LOCALIZATION NOTE: Do not translate MathML, background, color, fontfamily, fontsize, fontstyle and fontweight.
 MathML_DeprecatedStyleAttributeWarning=MathML attributes “background”, “color”, “fontfamily”, “fontsize”, “fontstyle” and “fontweight” are deprecated and will be removed at a future date.
--- a/layout/mathml/nsMathMLmencloseFrame.cpp
+++ b/layout/mathml/nsMathMLmencloseFrame.cpp
@@ -4,16 +4,17 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "nsMathMLmencloseFrame.h"
 
 #include "gfx2DGlue.h"
 #include "gfxUtils.h"
 #include "mozilla/PresShell.h"
+#include "mozilla/StaticPrefs_mathml.h"
 #include "mozilla/gfx/2D.h"
 #include "mozilla/gfx/PathHelpers.h"
 #include "nsPresContext.h"
 #include "nsWhitespaceTokenizer.h"
 
 #include "nsDisplayList.h"
 #include "gfxContext.h"
 #include "nsMathMLChar.h"
@@ -100,19 +101,22 @@ nsresult nsMathMLmencloseFrame::AddNotat
   if (aNotation.EqualsLiteral("longdiv")) {
     rv = AllocateMathMLChar(NOTATION_LONGDIV);
     NS_ENSURE_SUCCESS(rv, rv);
     mNotationsToDraw += NOTATION_LONGDIV;
   } else if (aNotation.EqualsLiteral("actuarial")) {
     mNotationsToDraw += NOTATION_RIGHT;
     mNotationsToDraw += NOTATION_TOP;
   } else if (aNotation.EqualsLiteral("radical")) {
-    rv = AllocateMathMLChar(NOTATION_RADICAL);
-    NS_ENSURE_SUCCESS(rv, rv);
-    mNotationsToDraw += NOTATION_RADICAL;
+    if (!StaticPrefs::mathml_deprecated_menclose_notation_radical_disabled()) {
+      mContent->OwnerDoc()->WarnOnceAbout(dom::Document::eMathML_DeprecatedMencloseNotationRadical);
+      rv = AllocateMathMLChar(NOTATION_RADICAL);
+      NS_ENSURE_SUCCESS(rv, rv);
+      mNotationsToDraw += NOTATION_RADICAL;
+    }
   } else if (aNotation.EqualsLiteral("box")) {
     mNotationsToDraw += NOTATION_LEFT;
     mNotationsToDraw += NOTATION_RIGHT;
     mNotationsToDraw += NOTATION_TOP;
     mNotationsToDraw += NOTATION_BOTTOM;
   } else if (aNotation.EqualsLiteral("roundedbox")) {
     mNotationsToDraw += NOTATION_ROUNDEDBOX;
   } else if (aNotation.EqualsLiteral("circle")) {
--- a/layout/mathml/nsMathMLmsqrtFrame.h
+++ b/layout/mathml/nsMathMLmsqrtFrame.h
@@ -32,16 +32,19 @@ 2.3.4).
 
 The <mroot> element increments scriptlevel by 2, and sets displaystyle to
 "false", within index, but leaves both attributes unchanged within base. The
 <msqrt> element leaves both attributes unchanged within all its arguments.
 These attributes are inherited by every element from its rendering environment,
 but can be set explicitly only on <mstyle>. (See Section 3.3.4.)
 */
 
+// XXXfredw: This class should share its layout logic with nsMathMLmrootFrame
+// when the menclose "radical" notation is removed.
+// See https://bugzilla.mozilla.org/show_bug.cgi?id=1548522
 class nsMathMLmsqrtFrame final : public nsMathMLmencloseFrame {
  public:
   NS_DECL_FRAMEARENA_HELPERS(nsMathMLmsqrtFrame)
 
   friend nsIFrame* NS_NewMathMLmsqrtFrame(mozilla::PresShell* aPresShell,
                                           ComputedStyle* aStyle);
 
   virtual void Init(nsIContent* aContent, nsContainerFrame* aParent,
--- a/layout/reftests/mathml/reftest.list
+++ b/layout/reftests/mathml/reftest.list
@@ -12,17 +12,17 @@ random-if(/^Windows\x20NT\x206\.1/.test(
 == 373533-2.xhtml about:blank
 == 373533-3.xhtml about:blank
 random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == 393760-1.xml 393760-1-ref.xml # Bug 1392106
 fuzzy-if(skiaContent,0-2,0-529) == 393760-2.xml 393760-2-ref.xml
 == 414123.xhtml 414123-ref.xhtml
 == dir-1.html dir-1-ref.html
 pref(mathml.deprecated_alignment_attributes.disabled,false) random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == dir-2.html dir-2-ref.html # Bug 1392106
 random-if(gtkWidget) == dir-3.html dir-3-ref.html # bug 1309426
-== dir-4.html dir-4-ref.html
+pref(mathml.deprecated_menclose_notation_radical.disabled,false) == dir-4.html dir-4-ref.html
 == dir-5.html dir-5-ref.html
 fuzzy-if(cocoaWidget,0-135,0-56) == dir-6a.html dir-6a-ref.html
 == css-spacing-1.html css-spacing-1-ref.html
 pref(mathml.disabled,true) == disabled-scriptlevel-1.html disabled-scriptlevel-1-ref.html
 pref(mathml.disabled,true) == disabled-scriptlevel-1.xhtml disabled-scriptlevel-1-ref.xhtml
 random-if(smallScreen&&Android) fuzzy(0-255,0-200) fuzzy-if(geckoview&&webrender,201-216,312-316) fuzzy-if(webrender&&winWidget,114-255,245-361) fuzzy-if(webrender&&OSX,79-153,307-314) == mirror-op-1.html mirror-op-1-ref.html
 != mirror-op-2.html mirror-op-2-ref.html
 != mirror-op-3.html mirror-op-3-ref.html
@@ -202,17 +202,17 @@ random-if(winWidget&&!d2d) == opentype-s
 == operator-1.xhtml operator-1-ref.xhtml
 == scriptshift-1.xhtml scriptshift-1-ref.xhtml
 pref(mathml.nonzero_unitless_lengths.disabled,false) == number-size-1.xhtml number-size-1-ref.xhtml
 fuzzy-if(skiaContent,0-1,0-80) fuzzy-if(Android,0-255,0-105) skip-if(winWidget) == multiscripts-1.html multiscripts-1-ref.html # Windows: bug 1314684; Android: bug 1392254
 == mathml-mmultiscript-base.html mathml-mmultiscript-base-ref.html
 == mathml-mmultiscript-mprescript.html mathml-mmultiscript-mprescript-ref.html
 != menclose-1a.html menclose-1-ref.html
 != menclose-1b.html menclose-1-ref.html
-!= menclose-1c.html menclose-1-ref.html
+pref(mathml.deprecated_menclose_notation_radical.disabled,false) != menclose-1c.html menclose-1-ref.html
 != menclose-1d.html menclose-1-ref.html
 != menclose-1e.html menclose-1-ref.html
 != menclose-1f.html menclose-1-ref.html
 != menclose-1g.html menclose-1-ref.html
 != menclose-1h.html menclose-1-ref.html
 != menclose-1i.html menclose-1-ref.html
 != menclose-1j.html menclose-1-ref.html
 != menclose-1k.html menclose-1-ref.html
@@ -235,49 +235,49 @@ random-if(gtkWidget) == menclose-2-round
 == menclose-2-top.html menclose-2-top-ref.html
 random-if(gtkWidget) == menclose-2-updiagonalarrow.html menclose-2-updiagonalarrow-ref.html # bug 1309426
 == menclose-2-updiagonalstrike.html menclose-2-updiagonalstrike-ref.html
 == menclose-2-verticalstrike.html menclose-2-verticalstrike-ref.html
 random-if(gtkWidget) == menclose-2-roundedbox.html menclose-2-roundedbox-ref.html # bug 1309426
 == menclose-2-phasorangle.html menclose-2-phasorangle-ref.html
 == menclose-3-box.html menclose-3-box-ref.html
 == menclose-3-madruwb.html menclose-3-madruwb-ref.html
-fails-if(Android) == menclose-3-radical.html menclose-3-radical-ref.html # Bug 973917
+pref(mathml.deprecated_menclose_notation_radical.disabled,false) fails-if(Android) == menclose-3-radical.html menclose-3-radical-ref.html # Bug 973917
 == menclose-3-default.html menclose-3-default-ref.html
 == menclose-3-invalid.html menclose-3-invalid-ref.html
 == menclose-3-multiple.html menclose-3-multiple-ref.html
 == menclose-3-unknown.html menclose-3-unknown.html
 == menclose-4.html data:text/html,<body>Pass
 == menclose-5-actuarial.html menclose-5-actuarial-ref.html
 == menclose-5-bottom.html menclose-5-bottom-ref.html
 == menclose-5-box.html menclose-5-box-ref.html
 fuzzy-if(OSX,0-1,0-100) fuzzy-if(skiaContent,0-1,0-2) == menclose-5-circle.html menclose-5-circle-ref.html
 fuzzy-if(d2d,0-7,0-1) == menclose-5-downdiagonalstrike.html menclose-5-downdiagonalstrike-ref.html
 == menclose-5-horizontalstrike.html menclose-5-horizontalstrike-ref.html
 == menclose-5-left.html menclose-5-left-ref.html
 == menclose-5-longdiv.html menclose-5-longdiv-ref.html
 == menclose-5-madruwb.html menclose-5-madruwb-ref.html
-== menclose-5-radical.html menclose-5-radical-ref.html
+pref(mathml.deprecated_menclose_notation_radical.disabled,false) == menclose-5-radical.html menclose-5-radical-ref.html
 == menclose-5-right.html menclose-5-right-ref.html
 fuzzy-if(skiaContent,0-5,0-5) == menclose-5-roundedbox.html menclose-5-roundedbox-ref.html
 == menclose-5-top.html menclose-5-top-ref.html
 fuzzy-if(skiaContent,0-1,0-1) == menclose-5-updiagonalarrow.html menclose-5-updiagonalarrow-ref.html
 fuzzy-if(d2d,0-7,0-1) == menclose-5-updiagonalstrike.html menclose-5-updiagonalstrike-ref.html
 == menclose-5-verticalstrike.html menclose-5-verticalstrike-ref.html
 == menclose-5-phasorangle.html menclose-5-phasorangle-ref.html
 == menclose-6-actuarial.html menclose-6-ref.html
 == menclose-6-bottom.html menclose-6-ref.html
 == menclose-6-box.html menclose-6-ref.html
 fuzzy-if(skiaContent,0-1,0-2) == menclose-6-circle.html menclose-6-ref.html
 fuzzy-if(d2d,0-7,0-1) == menclose-6-downdiagonalstrike.html menclose-6-ref.html
 == menclose-6-horizontalstrike.html menclose-6-ref.html
 == menclose-6-left.html menclose-6-ref.html
 == menclose-6-longdiv.html menclose-6-ref.html
 == menclose-6-madruwb.html menclose-6-ref.html
-== menclose-6-radical.html menclose-6-ref.html
+pref(mathml.deprecated_menclose_notation_radical.disabled,false) == menclose-6-radical.html menclose-6-ref.html
 == menclose-6-right.html menclose-6-ref.html
 fuzzy-if(skiaContent,0-2,0-3) == menclose-6-roundedbox.html menclose-6-ref.html
 == menclose-6-top.html menclose-6-ref.html
 == menclose-6-updiagonalarrow.html menclose-6-ref.html
 fuzzy-if(d2d,0-7,0-1) == menclose-6-updiagonalstrike.html menclose-6-ref.html
 == menclose-6-verticalstrike.html menclose-6-ref.html
 == menclose-6-phasorangle.html menclose-6-ref.html
 == mmultiscript-align.html mmultiscript-align-ref.html
--- a/modules/libpref/init/StaticPrefList.yaml
+++ b/modules/libpref/init/StaticPrefList.yaml
@@ -5296,16 +5296,22 @@
 
 # Whether to disable deprecated style attributes background, color, fontfamily,
 # fontsize, fontstyle and fontweight.
 - name: mathml.deprecated_style_attributes.disabled
   type: bool
   value: @IS_NIGHTLY_BUILD@
   mirror: always
 
+# Whether to disable deprecated "radical" notation for the menclose element.
+- name: mathml.deprecated_menclose_notation_radical.disabled
+  type: bool
+  value: @IS_NIGHTLY_BUILD@
+  mirror: always
+
 # Whether to disable legacy MathML number values that are not valid CSS numbers
 # (e.g. "1234.")
 - name: mathml.legacy_number_syntax.disabled
   type: bool
   value: true
   mirror: always
 
 # Whether to disable legacy names "small", "normal" and "big" for the
--- a/testing/web-platform/meta/mathml/__dir__.ini
+++ b/testing/web-platform/meta/mathml/__dir__.ini
@@ -1,1 +1,1 @@
-prefs: [mathml.deprecated_style_attributes.disabled: true, mathml.legacy_number_syntax.disabled: true, mathml.mathsize_names.disabled:true, mathml.mathspace_names.disabled: true, mathml.mfrac_linethickness_names.disabled:true, mathml.nonzero_unitless_lengths.disabled:true, mathml.deprecated_alignment_attributes.disabled: true]
+prefs: [mathml.deprecated_style_attributes.disabled: true, mathml.deprecated_menclose_notation_radical.disabled: true, mathml.legacy_number_syntax.disabled: true, mathml.mathsize_names.disabled:true, mathml.mathspace_names.disabled: true, mathml.mfrac_linethickness_names.disabled:true, mathml.nonzero_unitless_lengths.disabled:true, mathml.deprecated_alignment_attributes.disabled: true]
\ No newline at end of file
deleted file mode 100644
--- a/testing/web-platform/meta/mathml/presentation-markup/menclose/legacy-menclose-radical-notation.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[legacy-menclose-radical-notation.html]
-  expected: FAIL
--- a/testing/web-platform/tests/mathml/presentation-markup/menclose/legacy-menclose-radical-notation-ref.html
+++ b/testing/web-platform/tests/mathml/presentation-markup/menclose/legacy-menclose-radical-notation-ref.html
@@ -10,11 +10,14 @@
       }
     </style>
   </head>
   <body>
     <math>
       <menclose>
         <mn>123</mn>
       </menclose>
+      <menclose notation="box">
+        <mn>123</mn>
+      </menclose>
     </math>
   </body>
 </html>
--- a/testing/web-platform/tests/mathml/presentation-markup/menclose/legacy-menclose-radical-notation.html
+++ b/testing/web-platform/tests/mathml/presentation-markup/menclose/legacy-menclose-radical-notation.html
@@ -1,27 +1,30 @@
 <!DOCTYPE html>
 <html>
   <head>
     <meta charset="utf-8"/>
     <title>Legacy menclose radical notation</title>
     <link rel="help" href="https://www.w3.org/TR/MathML3/chapter3.html#presm.menclose">
     <link rel="help" href="https://mathml-refresh.github.io/mathml-core/#enclose-expression-inside-notation-menclose">
-    <meta name="assert" content="Verify that the legacy menclose radical notation is not supported.">
+    <meta name="assert" content="Verify that the legacy menclose radical notation is ignored.">
     <link rel="match" href="legacy-menclose-radical-notation-ref.html">
     <link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
     <style>
       math, math * {
           font: 25px Ahem;
       }
     </style>
   </head>
   <body>
     <math>
       <menclose notation="radical">
         <mn>123</mn>
       </menclose>
+      <menclose notation="box radical">
+        <mn>123</mn>
+      </menclose>
     </math>
 
    <script src="/mathml/support/feature-detection.js"></script>
    <script>MathMLFeatureDetection.ensure_for_match_reftest("has_menclose");</script>
   </body>
 </html>