Browse Source

import changes from `dev' branch of rmottola/Arctic-Fox:

- restore XP themes (115c82a208)
- Bug 1196062 - Fix the typo in the entry for onmozinterruptend in the atom table; r=baku (3dcac305a2)
- Bug 1190646 - Make all largeops vertical for sizing calculations. r=fredw (6b812ce880)
- Bug 1187673 - Reset CSS spacing properties on the <math> element. r=jkitch (982b4be7a6)
- Bug 895274 part.136 Rename NS_TIMEUPDATE to eTimeUpdate r=smaug (341a641669)
- Bug 1203431 - Move the 'password' atom into the generic section to unbreak --disable-accessibility builds. r=smaug (8aaa32de01)
- remove apparently unused atom attribute (772602d454)
- Bug 895274 part.137 Rename NS_ENDED to eEnded r=smaug (ece68ccb96)
- Bug 895274 part.138 Rename NS_RATECHANGE to eRateChange r=smaug (6b6d6e6c95)
- Bug 895274 part.139 Rename NS_DURATIONCHANGE to eDurationChange r=smaug (d2021b1395)
- Bug 895274 part.141 Get rid of NS_PLUGIN_FOCUS_EVENT due to unused r=smaug (0b859526b7)
- Bug 895274 part.142 Rename NS_PLUGIN_EVENT_START to ePluginEventFirst r=smaug (57194e8536)
- Bug 895274 part.143 Rename NS_PLUGIN_INPUT_EVENT to ePluginInputEvent r=smaug (efd9413f93)
- Bug 895274 part.144 Rename NS_SELECTION_EVENT_START to eSelectionEventFirst r=smaug (44a5a8ad93)
master
roytam1 2 months ago
parent
commit
cb0b39e4a5
  1. 13
      dom/base/nsGkAtomList.h
  2. 8
      dom/events/EventNameList.h
  3. 1
      intl/locale/langGroups.properties
  4. 30
      layout/mathml/mathfont.properties
  5. 7
      layout/mathml/mathml.css
  6. 6
      layout/mathml/nsMathMLChar.cpp
  7. 5
      layout/mathml/nsMathMLmoFrame.cpp
  8. 36
      layout/reftests/mathml/css-spacing-1-ref.html
  9. 29
      layout/reftests/mathml/css-spacing-1.html
  10. 13
      layout/reftests/mathml/default-font-ref.html
  11. 14
      layout/reftests/mathml/default-font.html
  12. 0
      layout/reftests/mathml/largeop-1-ref.html
  13. 0
      layout/reftests/mathml/largeop-1.html
  14. 22
      layout/reftests/mathml/reftest.list
  15. 111
      layout/reftests/mathml/stretchy-largeop-2-ref.html
  16. 137
      layout/reftests/mathml/stretchy-largeop-2.html
  17. 123
      layout/reftests/mathml/stretchy-largeop-3-ref.html
  18. 156
      layout/reftests/mathml/stretchy-largeop-3.html
  19. 7
      layout/style/nsHTMLStyleSheet.cpp
  20. 2
      layout/style/nsHTMLStyleSheet.h
  21. 1
      layout/tools/reftest/reftest.js
  22. 32
      modules/libpref/init/all.js
  23. 2
      view/nsViewManager.cpp
  24. 17
      widget/EventMessageList.h
  25. 2
      widget/windows/nsWindowBase.cpp

13
dom/base/nsGkAtomList.h

@ -615,7 +615,6 @@ GK_ATOM(mouseover, "mouseover")
GK_ATOM(mousethrough, "mousethrough")
GK_ATOM(mouseup, "mouseup")
GK_ATOM(mozaudiochannel, "mozaudiochannel")
GK_ATOM(mozasyncpanzoom, "mozasyncpanzoom")
GK_ATOM(mozfullscreenchange, "mozfullscreenchange")
GK_ATOM(mozfullscreenerror, "mozfullscreenerror")
GK_ATOM(mozpasspointerevents, "mozpasspointerevents")
@ -948,6 +947,7 @@ GK_ATOM(parent, "parent")
GK_ATOM(parentapp, "parentapp")
GK_ATOM(parentfocused, "parentfocused")
GK_ATOM(parsetype, "parsetype")
GK_ATOM(password, "password")
GK_ATOM(pattern, "pattern")
GK_ATOM(patternSeparator, "pattern-separator")
GK_ATOM(perMille, "per-mille")
@ -1909,7 +1909,7 @@ GK_ATOM(ondevicelight, "ondevicelight")
// Audio channel events
GK_ATOM(onmozinterruptbegin, "onmozinterruptbegin")
GK_ATOM(onmozinterruptend, "onmozinterruptbegin")
GK_ATOM(onmozinterruptend, "onmozinterruptend")
//---------------------------------------------------------------------------
// Special atoms
@ -2141,6 +2141,9 @@ GK_ATOM(el, "el")
GK_ATOM(ga, "ga")
GK_ATOM(nl, "nl")
// mathematical language, used for MathML
GK_ATOM(x_math, "x-math")
// Names for editor transactions
GK_ATOM(TypingTxnName, "Typing")
GK_ATOM(IMETxnName, "IME")
@ -2182,6 +2185,11 @@ GK_ATOM(physical_home_button, "physical-home-button")
GK_ATOM(windows_classic, "windows-classic")
GK_ATOM(windows_theme_aero, "windows-theme-aero")
GK_ATOM(windows_theme_aero_lite, "windows-theme-aero-lite")
GK_ATOM(windows_theme_luna_blue, "windows-theme-luna-blue")
GK_ATOM(windows_theme_luna_olive, "windows-theme-luna-olive")
GK_ATOM(windows_theme_luna_silver, "windows-theme-luna-silver")
GK_ATOM(windows_theme_royale, "windows-theme-royale")
GK_ATOM(windows_theme_zune, "windows-theme-zune")
GK_ATOM(windows_theme_generic, "windows-theme-generic")
// And the same again, as media query keywords.
@ -2325,7 +2333,6 @@ GK_ATOM(menuitemradio, "menuitemradio")
GK_ATOM(mixed, "mixed")
GK_ATOM(multiline, "multiline")
GK_ATOM(navigation, "navigation")
GK_ATOM(password, "password")
GK_ATOM(polite, "polite")
GK_ATOM(posinset, "posinset")
GK_ATOM(presentation, "presentation")

8
dom/events/EventNameList.h

@ -207,7 +207,7 @@ EVENT(drop,
EventNameType_HTMLXUL,
eDragEventClass)
EVENT(durationchange,
NS_DURATIONCHANGE,
eDurationChange,
EventNameType_HTML,
eBasicEventClass)
EVENT(emptied,
@ -215,7 +215,7 @@ EVENT(emptied,
EventNameType_HTML,
eBasicEventClass)
EVENT(ended,
NS_ENDED,
eEnded,
EventNameType_HTML,
eBasicEventClass)
EVENT(input,
@ -374,7 +374,7 @@ EVENT(progress,
EventNameType_HTML,
eBasicEventClass)
EVENT(ratechange,
NS_RATECHANGE,
eRateChange,
EventNameType_HTML,
eBasicEventClass)
EVENT(reset,
@ -410,7 +410,7 @@ EVENT(suspend,
EventNameType_HTML,
eBasicEventClass)
EVENT(timeupdate,
NS_TIMEUPDATE,
eTimeUpdate,
EventNameType_HTML,
eBasicEventClass)
EVENT(toggle,

1
intl/locale/langGroups.properties

@ -214,6 +214,7 @@ x-devanagari=x-devanagari
x-unicode=x-unicode
x-armn=x-armn
x-geor=x-geor
x-math=x-math
# These self-mappings are not necessary unless somebody use them to specify
# lang in (X)HTML/XML documents, which they shouldn't. (see bug 256257)
#x-beng=x-beng

30
layout/mathml/mathfont.properties

@ -832,17 +832,17 @@ operator.\u29FC.prefix = lspace:0 rspace:0 stretchy fence symmetric mirrorable d
operator.\u29FD.postfix = lspace:0 rspace:0 stretchy fence symmetric mirrorable direction:vertical # right-pointing curved angle bracket
operator.\u29FE.infix = lspace:4 rspace:4 # tiny
operator.\u29FF.infix = lspace:4 rspace:4 # miny
operator.\u2A00.prefix = lspace:1 rspace:2 largeop movablelimits symmetric # &bigodot;
operator.\u2A01.prefix = lspace:1 rspace:2 largeop movablelimits symmetric # &bigoplus;
operator.\u2A02.prefix = lspace:1 rspace:2 largeop movablelimits symmetric # &bigotimes;
operator.\u2A03.prefix = lspace:1 rspace:2 largeop movablelimits symmetric # n-ary union operator with dot
operator.\u2A00.prefix = lspace:1 rspace:2 largeop movablelimits symmetric direction:vertical # &bigodot;
operator.\u2A01.prefix = lspace:1 rspace:2 largeop movablelimits symmetric direction:vertical # &bigoplus;
operator.\u2A02.prefix = lspace:1 rspace:2 largeop movablelimits symmetric direction:vertical # &bigotimes;
operator.\u2A03.prefix = lspace:1 rspace:2 largeop movablelimits symmetric direction:vertical # n-ary union operator with dot
operator.\u2A04.prefix = lspace:1 rspace:2 largeop movablelimits symmetric direction:vertical # &biguplus;
operator.\u2A05.prefix = lspace:1 rspace:2 largeop movablelimits symmetric # n-ary square intersection operator
operator.\u2A05.prefix = lspace:1 rspace:2 largeop movablelimits symmetric direction:vertical # n-ary square intersection operator
operator.\u2A06.prefix = lspace:1 rspace:2 largeop movablelimits symmetric direction:vertical # &bigsqcup;
operator.\u2A07.prefix = lspace:1 rspace:2 largeop movablelimits symmetric # two logical and operator
operator.\u2A08.prefix = lspace:1 rspace:2 largeop movablelimits symmetric # two logical or operator
operator.\u2A09.prefix = lspace:1 rspace:2 largeop movablelimits symmetric # n-ary times operator
operator.\u2A0A.prefix = lspace:1 rspace:2 largeop movablelimits symmetric mirrorable # modulo two sum
operator.\u2A07.prefix = lspace:1 rspace:2 largeop movablelimits symmetric direction:vertical # two logical and operator
operator.\u2A08.prefix = lspace:1 rspace:2 largeop movablelimits symmetric direction:vertical # two logical or operator
operator.\u2A09.prefix = lspace:1 rspace:2 largeop movablelimits symmetric direction:vertical # n-ary times operator
operator.\u2A0A.prefix = lspace:1 rspace:2 largeop movablelimits symmetric direction:vertical mirrorable # modulo two sum
operator.\u2A0B.prefix = lspace:1 rspace:2 largeop symmetric direction:vertical integral mirrorable # summation with integral
operator.\u2A0C.prefix = lspace:0 rspace:1 largeop symmetric direction:vertical integral mirrorable # quadruple integral operator
operator.\u2A0D.prefix = lspace:1 rspace:2 largeop symmetric direction:vertical integral mirrorable # finite part integral
@ -1091,10 +1091,10 @@ operator.\u2AF8.infix = lspace:5 rspace:5 # triple nested greater-than
operator.\u2AF9.infix = lspace:5 rspace:5 # double-line slanted less-than or equal to
operator.\u2AFA.infix = lspace:5 rspace:5 # double-line slanted greater-than or equal to
operator.\u2AFB.infix = lspace:4 rspace:4 # triple solidus binary relation
operator.\u2AFC.prefix = lspace:1 rspace:2 largeop movablelimits symmetric # large triple vertical bar operator
operator.\u2AFC.prefix = lspace:1 rspace:2 largeop movablelimits symmetric direction:vertical # large triple vertical bar operator
operator.\u2AFD.infix = lspace:4 rspace:4 # double solidus operator
operator.\u2AFE.infix = lspace:3 rspace:3 # white vertical bar
operator.\u2AFF.prefix = lspace:1 rspace:2 largeop movablelimits symmetric # n-ary white vertical bar
operator.\u2AFF.prefix = lspace:1 rspace:2 largeop movablelimits symmetric direction:vertical # n-ary white vertical bar
operator.\u2B45.infix = lspace:5 rspace:5 stretchy direction:horizontal # leftwards quadruple arrow
operator.\u2B46.infix = lspace:5 rspace:5 stretchy direction:horizontal # rightwards quadruple arrow
@ -1130,10 +1130,10 @@ operator.\u2225.prefix = lspace:0 rspace:0 stretchy fence symmetric direction:ve
operator.\u2282\u020D2.infix = lspace:5 rspace:5 # &NotSubset;
operator.\u2283\u020D2.infix = lspace:5 rspace:5 # &NotSuperset;
operator.\u228E.prefix = lspace:1 rspace:2 largeop movablelimits symmetric direction:vertical # &UnionPlus;
operator.\u2295.prefix = lspace:0 rspace:3 largeop movablelimits symmetric # &CirclePlus;
operator.\u2296.prefix = lspace:0 rspace:3 largeop movablelimits symmetric # &CircleMinus;
operator.\u2297.prefix = lspace:0 rspace:3 largeop movablelimits symmetric # &CircleTimes;
operator.\u2299.prefix = lspace:0 rspace:3 largeop movablelimits symmetric # &CircleDot;
operator.\u2295.prefix = lspace:0 rspace:3 largeop movablelimits symmetric direction:vertical # &CirclePlus;
operator.\u2296.prefix = lspace:0 rspace:3 largeop movablelimits symmetric direction:vertical # &CircleMinus;
operator.\u2297.prefix = lspace:0 rspace:3 largeop movablelimits symmetric direction:vertical # &CircleTimes;
operator.\u2299.prefix = lspace:0 rspace:3 largeop movablelimits symmetric direction:vertical # &CircleDot;
operator.\u23B0.prefix = lspace:0 rspace:0 stretchy fence symmetric direction:vertical # &lmoustache; &lmoust;
operator.\u23B1.postfix = lspace:0 rspace:0 stretchy fence symmetric direction:vertical # &rmoustache; &rmoust;
operator.\u2500.infix = lspace:0 rspace:0 stretchy direction:horizontal # &HorizontalLine;

7
layout/mathml/mathml.css

@ -11,8 +11,6 @@
/**************************************************************************/
/* <math> - outermost math element */
/* Put Cambria before Cambria Math as Cambria Math has neither bold nor */
/* italic. */
/**************************************************************************/
math {
@ -22,7 +20,10 @@ math {
display: inline;
font-size: inherit;
font-style: normal;
font-family: MathJax_Main, STIXGeneral, Cambria, Cambria Math, XITS, Latin Modern Math, DejaVu Serif, DejaVu Sans, Times, Lucida Sans Unicode, OpenSymbol, Standard Symbols L, serif;
font-family: serif;
line-height: normal;
word-spacing: normal;
letter-spacing: normal;
text-rendering: optimizeLegibility;
-moz-float-edge: margin-box;
-moz-math-display: inline;

6
layout/mathml/nsMathMLChar.cpp

@ -1660,8 +1660,10 @@ nsMathMLChar::StretchInternal(nsPresContext* aPresContext,
// really shouldn't be doing things this way but for now
// insert fallbacks into the list
nsAutoTArray<nsString, 10> mathFallbacks;
gfxFontUtils::GetPrefsFontList("font.mathfont-family", mathFallbacks);
nsAutoTArray<nsString, 16> mathFallbacks;
gfxFontUtils::GetPrefsFontList("font.name.serif.x-math", mathFallbacks);
gfxFontUtils::AppendPrefsFontList("font.name-list.serif.x-math",
mathFallbacks);
InsertMathFallbacks(font.fontlist, mathFallbacks);

5
layout/mathml/nsMathMLmoFrame.cpp

@ -453,8 +453,9 @@ nsMathMLmoFrame::ProcessOperatorData()
mEmbellishData.trailingSpace = trailingSpace;
// Now see if there are user-defined attributes that override the dictionary.
// XXX If an attribute can be forced to be true when it is false in the
// dictionary, then the following code has to change...
// XXX Bug 1197771 - forcing an attribute to true when it is false in the
// dictionary can cause conflicts in the rest of the stretching algorithms
// (e.g. all largeops are assumed to have a vertical direction)
// For each attribute overriden by the user, turn off its bit flag.
// symmetric|movablelimits|separator|largeop|accent|fence|stretchy|form

36
layout/reftests/mathml/css-spacing-1-ref.html

@ -0,0 +1,36 @@
<!DOCTYPE html>
<html>
<head>
<title>CSS spacing properties</title>
<style type="text/css">
math {
line-height: normal;
word-spacing: normal;
letter-spacing: normal;
}
</style>
</head>
<body>
<p style="line-height: 30pt;
word-spacing: 2em;
letter-spacing: 2em;">
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mo>(</mo>
<mtable rowspacing="0pt" columnspacing="0em">
<mtr>
<mtd><mtext>row 1 column 1</mtext></mtd>
<mtd><mtext>row 1 column 2</mtext></mtd>
</mtr>
<mtr>
<mtd><mtext>row 2 column 1</mtext></mtd>
<mtd><mtext>row 2 column 2</mtext></mtd>
</mtr>
</mtable>
<mo>)</mo>
</mrow>
</math>
</p>
</body>
</html>

29
layout/reftests/mathml/css-spacing-1.html

@ -0,0 +1,29 @@
<!DOCTYPE html>
<html>
<head>
<title>CSS spacing properties</title>
</head>
<body>
<p style="line-height: 30pt;
word-spacing: 2em;
letter-spacing: 2em;">
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mo>(</mo>
<mtable rowspacing="0pt" columnspacing="0em">
<mtr>
<mtd><mtext>row 1 column 1</mtext></mtd>
<mtd><mtext>row 1 column 2</mtext></mtd>
</mtr>
<mtr>
<mtd><mtext>row 2 column 1</mtext></mtd>
<mtd><mtext>row 2 column 2</mtext></mtd>
</mtr>
</mtable>
<mo>)</mo>
</mrow>
</math>
</p>
</body>
</html>

13
layout/reftests/mathml/default-font-ref.html

@ -0,0 +1,13 @@
<html>
<head>
<title>default font</title>
<meta charset="utf-8"/>
</head>
<body style="font: 20px monospace;">
<math style="font-family: serif; font-size: 40px;">
<mn>x-math language</mn>
</math>
</body>
</html>

14
layout/reftests/mathml/default-font.html

@ -0,0 +1,14 @@
<html>
<head>
<title>default font</title>
<meta charset="utf-8"/>
</head>
<body style="font: 20px monospace;">
<!-- font.minimum-size.x-math set to 40 -->
<math>
<mn>x-math language</mn>
</math>
</body>
</html>

0
layout/reftests/mathml/largeop-1-ref.html

0
layout/reftests/mathml/largeop-1.html

22
layout/reftests/mathml/reftest.list

@ -10,6 +10,7 @@ fails == dir-8.html dir-8-ref.html
fails == dir-9.html dir-9-ref.html # Bug 787215
== dir-10.html dir-10-ref.html
random-if((B2G&&browserIsRemote)||Mulet) == dir-11.html dir-11-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
== css-spacing-1.html css-spacing-1-ref.html
== displaystyle-1.html displaystyle-1-ref.html
== displaystyle-2.html displaystyle-2-ref.html
== displaystyle-3.html displaystyle-3-ref.html
@ -39,7 +40,7 @@ skip-if((B2G&&browserIsRemote)||Mulet) random-if(smallScreen&&Android) fuzzy(255
!= mfenced-8.html mfenced-8-ref.html
== mfenced-9.html mfenced-9-ref.html
fails-if(/^Windows\x20NT\x205\.1/.test(http.oscpu)) == mfenced-10.html mfenced-10-ref.html # Windows versions without Cambria Math, see bug 670592
fails-if(winWidget&&d2d) == mfenced-11.html mfenced-11-ref.html
== mfenced-11.html mfenced-11-ref.html
skip-if(Mulet) == mfenced-12.html mfenced-12-ref.html # MULET: Bug 1144079: Re-enable Mulet mochitests and reftests taskcluster-specific disables
== mi-mathvariant-1.xhtml mi-mathvariant-1-ref.xhtml
== mi-mathvariant-2.xhtml mi-mathvariant-2-ref.xhtml
@ -82,6 +83,8 @@ fails == stretchy-mover-2a.html stretchy-mover-2-ref.html
!= stretchy-mover-2b.html stretchy-mover-2-ref.html
== stretchy-mover-3.html stretchy-mover-3-ref.html
== stretchy-largeop-1.html stretchy-largeop-1-ref.html
== stretchy-largeop-2.html stretchy-largeop-2-ref.html
== stretchy-largeop-3.html stretchy-largeop-3-ref.html
== table-width-1.xhtml table-width-1-ref.xhtml
== table-width-2.html table-width-2-ref.html
== table-width-3.html table-width-3-ref.html
@ -139,9 +142,9 @@ random-if(winWidget&&!/^Windows\x20NT\x205\.1/.test(http.oscpu)) == semantics-1.
== mpadded-5.html mpadded-5-ref.html
== mpadded-1-2.html mpadded-1-2-ref.html
== mpadded-6.html mpadded-6-ref.html
fails-if(B2G||Mulet) == mpadded-7.html mpadded-7-ref.html # B2G: slight character width variation # MULET: Bug 1144079: Re-enable Mulet mochitests and reftests taskcluster-specific disables
fails-if(B2G) == mpadded-8.html mpadded-8-ref.html # B2G: slight character width variation
fails-if(B2G) == mpadded-9.html mpadded-9-ref.html # B2G: slight character width variation
fails-if(Mulet) == mpadded-7.html mpadded-7-ref.html # MULET: Bug 1144079: Re-enable Mulet mochitests and reftests taskcluster-specific disables
== mpadded-8.html mpadded-8-ref.html
== mpadded-9.html mpadded-9-ref.html
== math-display.html math-display-ref.html
== scriptlevel-1.html scriptlevel-1-ref.html
== scriptlevel-movablelimits-1.html scriptlevel-movablelimits-1-ref.html
@ -198,7 +201,7 @@ random-if(winWidget&&!d2d) == opentype-stretchy.html opentype-stretchy-ref.html
== operator-1.xhtml operator-1-ref.xhtml
== scriptshift-1.xhtml scriptshift-1-ref.xhtml
== number-size-1.xhtml number-size-1-ref.xhtml
random-if((B2G&&browserIsRemote)||Mulet) == multiscripts-1.html multiscripts-1-ref.html # B2G - slight height variation from font metrics # Initial mulet triage: parity with B2G/B2G Desktop
random-if((B2G&&browserIsRemote)||Mulet) fails-if(winWidget&&/^Windows\x20NT\x205\.1/.test(http.oscpu)) == multiscripts-1.html multiscripts-1-ref.html # B2G - slight height variation from font metrics # Initial mulet triage: parity with B2G/B2G Desktop
== 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
@ -345,23 +348,24 @@ fails-if(B2G||Mulet||Android||/^Windows\x20NT\x205\.1/.test(http.oscpu)||OSX) ==
== mfrac-A-7.html mfrac-A-7-ref.html
== mfrac-A-8.html mfrac-A-8-ref.html
== mfrac-B-1.html mfrac-B-1-ref.html
random-if(winWidget&&!/^Windows\x20NT\x205\.1/.test(http.oscpu)) == mfrac-B-2.html mfrac-B-2-3-ref.html
random-if(winWidget&&!/^Windows\x20NT\x205\.1/.test(http.oscpu)) == mfrac-B-3.html mfrac-B-2-3-ref.html
fails-if(winWidget) == mfrac-B-2.html mfrac-B-2-3-ref.html
fails-if(winWidget) == mfrac-B-3.html mfrac-B-2-3-ref.html
== mfrac-B-4.html mfrac-B-4-5-ref.html
== mfrac-B-5.html mfrac-B-4-5-ref.html
== mfrac-B-6.html mfrac-B-6-7-ref.html
== mfrac-B-7.html mfrac-B-6-7-ref.html
fuzzy-if(OSX,1,100) == mfrac-C-1.html mfrac-C-1-ref.html
random-if(winWidget&&!/^Windows\x20NT\x205\.1/.test(http.oscpu)) == mfrac-C-2.html mfrac-C-2-ref.html
fails-if(winWidget) == mfrac-C-2.html mfrac-C-2-ref.html
== mfrac-C-3.html mfrac-C-3-ref.html
== mfrac-C-4.html mfrac-C-4-ref.html
fuzzy-if(OSX,1,100) == mfrac-D-1.html mfrac-D-1-ref.html
random-if(winWidget&&!/^Windows\x20NT\x205\.1/.test(http.oscpu)) == mfrac-D-2.html mfrac-D-2-ref.html
fails-if(winWidget) == mfrac-D-2.html mfrac-D-2-ref.html
== mfrac-D-3.html mfrac-D-3-ref.html
== mfrac-D-4.html mfrac-D-4-ref.html
== mfrac-E-1.html mfrac-E-1-ref.html
test-pref(dom.webcomponents.enabled,true) == shadow-dom-1.html shadow-dom-1-ref.html
pref(font.size.inflation.emPerLine,25) == font-inflation-1.html font-inflation-1-ref.html
test-pref(font.minimum-size.x-math,40) == default-font.html default-font-ref.html
!= radicalbar-1.html about:blank
!= radicalbar-1a.html about:blank
!= radicalbar-1b.html about:blank

111
layout/reftests/mathml/stretchy-largeop-2-ref.html

@ -0,0 +1,111 @@
<!doctype html>
<!-- Test that non-stretchy largeops are bigger in display mode -->
<html>
<head>
<title>Largeop stretching</title>
<meta charset="utf-8"/>
</head>
<body>
<p>
<math displaystyle="true">
<mo id="mo0">&bigodot;</mo>
</math>
</p>
<p>
<math displaystyle="true">
<mo id="mo1">&bigoplus;</mo>
</math>
</p>
<p>
<math displaystyle="true">
<mo id="mo2">&#x2a03;</mo>
</math>
</p>
<p>
<math displaystyle="true">
<mo id="mo3">&#x2a05;</mo>
</math>
</p>
<p>
<math displaystyle="true">
<mo id="mo4">&#x2a07;</mo>
</math>
</p>
<p>
<math displaystyle="true">
<mo id="mo5">&#x2a08;</mo>
</math>
</p>
<p>
<math displaystyle="true">
<mo id="mo6">&#x2a09;</mo>
</math>
</p>
<p>
<math displaystyle="true">
<mo id="mo7">&#x2a0a;</mo>
</math>
</p>
<p>
<math displaystyle="true">
<mo id="mo8">&#x2afc;</mo>
</math>
</p>
<p>
<math displaystyle="true">
<mo id="mo9">&#x2aff;</mo>
</math>
</p>
<p>
<math>
<mo id="moRef0">&bigodot;</mo>
</math>
</p>
<p>
<math>
<mo id="moRef1">&bigoplus;</mo>
</math>
</p>
<p>
<math>
<mo id="moRef2">&#x2a03;</mo>
</math>
</p>
<p>
<math>
<mo id="moRef3">&#x2a05;</mo>
</math>
</p>
<p>
<math>
<mo id="moRef4">&#x2a07;</mo>
</math>
</p>
<p>
<math>
<mo id="moRef5">&#x2a08;</mo>
</math>
</p>
<p>
<math>
<mo id="moRef6">&#x2a09;</mo>
</math>
</p>
<p>
<math>
<mo id="moRef7">&#x2a0a;</mo>
</math>
</p>
<p>
<math>
<mo id="moRef8">&#x2afc;</mo>
</math>
</p>
<p>
<math>
<mo id="moRef9">&#x2aff;</mo>
</math>
</p>
</body>
</html>

137
layout/reftests/mathml/stretchy-largeop-2.html

@ -0,0 +1,137 @@
<!doctype html>
<!-- Test that non-stretchy largeops are bigger in display mode -->
<html class="reftest-wait">
<head>
<title>Largeop stretching</title>
<meta charset="utf-8"/>
<script type="text/javascript">
function verifyGreaterThan(aElement, aReference) {
/* Verify that the height of the element is greater than that of the
reference, and otherwise paint the element in red. */
var element = document.getElementById(aElement);
var ref = document.getElementById(aReference);
if (element.getBoundingClientRect().height -
ref.getBoundingClientRect().height <= 1) {
element.setAttribute("mathcolor", "red");
}
}
function doTest() {
/* Ensure that largeops are bigger in displaystyle */
var numTests = 10; // zero indexed
var opPrefix = "mo";
var refPrefix = "moRef";
for (var i = 0; i < numTests; i++)
{
verifyGreaterThan(opPrefix + i, refPrefix + i);
}
document.documentElement.removeAttribute("class");
}
</script>
</head>
<body onload="doTest();">
<p>
<math displaystyle="true">
<mo id="mo0">&bigodot;</mo>
</math>
</p>
<p>
<math displaystyle="true">
<mo id="mo1">&bigoplus;</mo>
</math>
</p>
<p>
<math displaystyle="true">
<mo id="mo2">&#x2a03;</mo>
</math>
</p>
<p>
<math displaystyle="true">
<mo id="mo3">&#x2a05;</mo>
</math>
</p>
<p>
<math displaystyle="true">
<mo id="mo4">&#x2a07;</mo>
</math>
</p>
<p>
<math displaystyle="true">
<mo id="mo5">&#x2a08;</mo>
</math>
</p>
<p>
<math displaystyle="true">
<mo id="mo6">&#x2a09;</mo>
</math>
</p>
<p>
<math displaystyle="true">
<mo id="mo7">&#x2a0a;</mo>
</math>
</p>
<p>
<math displaystyle="true">
<mo id="mo8">&#x2afc;</mo>
</math>
</p>
<p>
<math displaystyle="true">
<mo id="mo9">&#x2aff;</mo>
</math>
</p>
<p>
<math>
<mo id="moRef0">&bigodot;</mo>
</math>
</p>
<p>
<math>
<mo id="moRef1">&bigoplus;</mo>
</math>
</p>
<p>
<math>
<mo id="moRef2">&#x2a03;</mo>
</math>
</p>
<p>
<math>
<mo id="moRef3">&#x2a05;</mo>
</math>
</p>
<p>
<math>
<mo id="moRef4">&#x2a07;</mo>
</math>
</p>
<p>
<math>
<mo id="moRef5">&#x2a08;</mo>
</math>
</p>
<p>
<math>
<mo id="moRef6">&#x2a09;</mo>
</math>
</p>
<p>
<math>
<mo id="moRef7">&#x2a0a;</mo>
</math>
</p>
<p>
<math>
<mo id="moRef8">&#x2afc;</mo>
</math>
</p>
<p>
<math>
<mo id="moRef9">&#x2aff;</mo>
</math>
</p>
</body>
</html>

123
layout/reftests/mathml/stretchy-largeop-3-ref.html

@ -0,0 +1,123 @@
<!doctype html>
<!-- Test that non-stretchy largeops do not stretch -->
<html>
<head>
<title>Largeop stretching</title>
<meta charset="utf-8" />
</head>
<body>
<p>
<math displaystyle="true">
<mrow>
<mspace height="3em" />
<mo id="mo0">&bigodot;</mo>
</mrow>
</math>
</p>
<p>
<math displaystyle="true">
<mrow>
<mspace height="3em" />
<mo id="mo1">&bigoplus;</mo>
</mrow>
</math>
</p>
<p>
<math displaystyle="true">
<mrow>
<mspace height="3em" />
<mo id="mo2">&#x2a03;</mo>
</mrow>
</math>
</p>
<p>
<math displaystyle="true">
<mrow>
<mspace height="3em" />
<mo id="mo3">&#x2a05;</mo>
</mrow>
</math>
</p>
<p>
<math displaystyle="true">
<mrow>
<mspace height="3em" />
<mo id="mo4">&#x2a07;</mo>
</mrow>
</math>
</p>
<p>
<math displaystyle="true">
<mrow>
<mspace height="3em" />
<mo id="mo5">&#x2a08;</mo>
</mrow>
</math>
</p>
<p>
<math displaystyle="true">
<mrow>
<mspace height="3em" />
<mo id="mo6">&#x2a09;</mo>
</mrow>
</math>
</p>
<p>
<math displaystyle="true">
<mrow>
<mspace height="3em" />
<mo id="mo7">&#x2a0a;</mo>
</mrow>
</math>
</p>
<p>
<math displaystyle="true">
<mrow>
<mspace height="3em" />
<mo id="mo8">&#x2afc;</mo>
</mrow>
</math>
</p>
<p>
<math displaystyle="true">
<mrow>
<mspace height="3em" />
<mo id="mo9">&#x2aff;</mo>
</mrow>
</math>
</p>
<p>
<math displaystyle="true">
<mo id="moRef0">&bigodot;</mo>
</math>
<math displaystyle="true">
<mo id="moRef1">&bigoplus;</mo>
</math>
<math displaystyle="true">
<mo id="moRef2">&#x2a03;</mo>
</math>
<math displaystyle="true">
<mo id="moRef3">&#x2a05;</mo>
</math>
<math displaystyle="true">
<mo id="moRef4">&#x2a07;</mo>
</math>
<math displaystyle="true">
<mo id="moRef5">&#x2a08;</mo>
</math>
<math displaystyle="true">
<mo id="moRef6">&#x2a09;</mo>
</math>
<math displaystyle="true">
<mo id="moRef7">&#x2a0a;</mo>
</math>
<math displaystyle="true">
<mo id="moRef8">&#x2afc;</mo>
</math>
<math displaystyle="true">
<mo id="moRef9">&#x2aff;</mo>
</math>
</p>
</body>
</html>

156
layout/reftests/mathml/stretchy-largeop-3.html

@ -0,0 +1,156 @@
<!doctype html>
<!-- Test that non-stretchy largeops do not stretch -->
<html class="reftest-wait">
<head>
<title>Largeop stretching</title>
<meta charset="utf-8" />
<script type="text/javascript">
function almostEqual(aX, aY) {
var epsilon = 2;
return Math.abs(aX - aY) < epsilon;
}
function verifySize(aElement, aReference) {
/* Verify if the size of the element matches the reference, and
otherwise paint the element in red. */
var element = document.getElementById(aElement);
var ref = document.getElementById(aReference);
if (!almostEqual(element.getBoundingClientRect().height,
ref.getBoundingClientRect().height) ||
!almostEqual(element.getBoundingClientRect().width,
ref.getBoundingClientRect().width)) {
element.setAttribute("mathcolor", "red");
}
}
function doTest() {
/* Ensure that largeops are bigger in displaystyle */
var numTests = 10; // zero indexed
var opPrefix = "mo";
var refPrefix = "moRef";
for (var i = 0; i < numTests; i++)
{
verifySize(opPrefix + i, refPrefix + i);
}
document.documentElement.removeAttribute("class");
}
</script>
</head>
<body onload="doTest();">
<p>
<math displaystyle="true">
<mrow>
<mspace height="3em" />
<mo id="mo0">&bigodot;</mo>
</mrow>
</math>
</p>
<p>
<math displaystyle="true">
<mrow>
<mspace height="3em" />
<mo id="mo1">&bigoplus;</mo>
</mrow>
</math>
</p>
<p>
<math displaystyle="true">
<mrow>
<mspace height="3em" />
<mo id="mo2">&#x2a03;</mo>
</mrow>
</math>
</p>
<p>
<math displaystyle="true">
<mrow>
<mspace height="3em" />
<mo id="mo3">&#x2a05;</mo>
</mrow>
</math>
</p>
<p>
<math displaystyle="true">
<mrow>
<mspace height="3em" />
<mo id="mo4">&#x2a07;</mo>
</mrow>
</math>
</p>
<p>
<math displaystyle="true">
<mrow>
<mspace height="3em" />
<mo id="mo5">&#x2a08;</mo>
</mrow>
</math>
</p>
<p>
<math displaystyle="true">
<mrow>
<mspace height="3em" />
<mo id="mo6">&#x2a09;</mo>
</mrow>
</math>
</p>
<p>
<math displaystyle="true">
<mrow>
<mspace height="3em" />
<mo id="mo7">&#x2a0a;</mo>
</mrow>
</math>
</p>
<p>
<math displaystyle="true">
<mrow>
<mspace height="3em" />
<mo id="mo8">&#x2afc;</mo>
</mrow>
</math>
</p>
<p>
<math displaystyle="true">
<mrow>
<mspace height="3em" />
<mo id="mo9">&#x2aff;</mo>
</mrow>
</math>
</p>
<p>
<math displaystyle="true">
<mo id="moRef0">&bigodot;</mo>
</math>
<math displaystyle="true">
<mo id="moRef1">&bigoplus;</mo>
</math>
<math displaystyle="true">
<mo id="moRef2">&#x2a03;</mo>
</math>
<math displaystyle="true">
<mo id="moRef3">&#x2a05;</mo>
</math>
<math displaystyle="true">
<mo id="moRef4">&#x2a07;</mo>
</math>
<math displaystyle="true">
<mo id="moRef5">&#x2a08;</mo>
</math>
<math displaystyle="true">
<mo id="moRef6">&#x2a09;</mo>
</math>
<math displaystyle="true">
<mo id="moRef7">&#x2a0a;</mo>
</math>
<math displaystyle="true">
<mo id="moRef8">&#x2afc;</mo>
</math>
<math displaystyle="true">
<mo id="moRef9">&#x2aff;</mo>
</math>
</p>
</body>
</html>

7
layout/style/nsHTMLStyleSheet.cpp

@ -298,6 +298,13 @@ nsHTMLStyleSheet::RulesMatching(ElementRuleProcessorData* aData)
if (aData->mElement->GetAttr(kNameSpaceID_XML, nsGkAtoms::lang, lang)) {
ruleWalker->Forward(LangRuleFor(lang));
}
// Set the language to "x-math" on the <math> element, so that appropriate
// font settings are used for MathML.
if (aData->mElement->IsMathMLElement(nsGkAtoms::math)) {
nsGkAtoms::x_math->ToString(lang);
ruleWalker->Forward(LangRuleFor(lang));
}
}
// Test if style is dependent on content state

2
layout/style/nsHTMLStyleSheet.h

@ -132,6 +132,8 @@ public: // for mLangRuleTable structures only
// Rule to handle xml:lang attributes, of which we have exactly one
// per language string, maintained in mLangRuleTable.
// We also create one extra rule for the "x-math" language string, used on
// <math> elements.
class LangRule final : public nsIStyleRule {
private:
~LangRule() {}

1
layout/tools/reftest/reftest.js

@ -282,7 +282,6 @@ this.OnRefTestLoad = function OnRefTestLoad(win)
gBrowser.setAttribute("id", "browser");
gBrowser.setAttribute("type", "content-primary");
gBrowser.setAttribute("remote", gBrowserIsRemote ? "true" : "false");
gBrowser.setAttribute("mozasyncpanzoom", "true");
// Make sure the browser element is exactly 800x1000, no matter
// what size our window is
gBrowser.setAttribute("style", "padding: 0px; margin: 0px; border:none; min-width: 800px; min-height: 1000px; max-width: 800px; max-height: 1000px");

32
modules/libpref/init/all.js

@ -2204,7 +2204,10 @@ pref("intl.hyphenation-alias.no-*", "nb");
pref("intl.hyphenation-alias.nb-*", "nb");
pref("intl.hyphenation-alias.nn-*", "nn");
pref("font.mathfont-family", "Latin Modern Math, XITS Math, STIX Math, Cambria Math, Asana Math, TeX Gyre Bonum Math, TeX Gyre Pagella Math, TeX Gyre Termes Math, Neo Euler, Lucida Bright Math, MathJax_Main, STIXNonUnicode, STIXSizeOneSym, STIXGeneral, Standard Symbols L, DejaVu Sans");
pref("font.name.serif.x-math", "Latin Modern Math");
pref("font.name-list.serif.x-math", "Latin Modern Math, XITS Math, Cambria Math, TeX Gyre Bonum Math, TeX Gyre Pagella Math, TeX Gyre Schola, TeX Gyre Termes Math, STIX Math, Asana Math, MathJax_Main, STIXGeneral, DejaVu Serif, DejaVu Sans, Standard Symbols L, serif");
pref("font.name.sans-serif.x-math", "sans-serif");
pref("font.name.monospace.x-math", "monospace");
// Some CJK fonts have bad underline offset, their CJK character glyphs are overlapped (or adjoined) to its underline.
// These fonts are ignored the underline offset, instead of it, the underline is lowered to bottom of its em descent.
@ -2987,6 +2990,10 @@ pref("font.minimum-size.zh-TW", 0);
pref("font.size.variable.zh-TW", 16);
pref("font.size.fixed.zh-TW", 16);
// mathml.css sets font-size to "inherit" and font-family to "serif" so only
// font.name.*.x-math and font.minimum-size.x-math are really relevant.
pref("font.minimum-size.x-math", 0);
/*
* A value greater than zero enables font size inflation for
* pan-and-zoom UIs, so that the fonts in a block are at least the size
@ -3309,8 +3316,12 @@ pref("font.name-list.monospace.x-tibt", "Tibetan Machine Uni, Jomolhari, Microso
pref("font.minimum-size.th", 10);
pref("font.default.x-devanagari", "sans-serif");
pref("font.name.serif.x-math", "Latin Modern Math");
// We have special support for Monotype Symbol on Windows.
pref("font.mathfont-family", "MathJax_Main, STIXNonUnicode, STIXSizeOneSym, STIXGeneral, Asana Math, Symbol, DejaVu Sans, Cambria Math");
pref("font.name-list.serif.x-math", "Latin Modern Math, XITS Math, Cambria Math, TeX Gyre Bonum Math, TeX Gyre Pagella Math, TeX Gyre Schola, TeX Gyre Termes Math, STIX Math, Asana Math, MathJax_Main, STIXGeneral, DejaVu Serif, DejaVu Sans, Symbol, Times New Roman");
pref("font.name.sans-serif.x-math", "Arial");
pref("font.name.monospace.x-math", "Courier New");
pref("font.name.cursive.x-math", "Comic Sans MS");
// cleartype settings - false implies default system settings
@ -3743,8 +3754,13 @@ pref("font.size.variable.zh-CN", 15);
pref("font.size.variable.zh-HK", 15);
pref("font.size.variable.zh-TW", 15);
pref("font.name.serif.x-math", "Latin Modern Math");
// Apple's Symbol is Unicode so use it
pref("font.mathfont-family", "Latin Modern Math, XITS Math, STIX Math, Cambria Math, Asana Math, TeX Gyre Bonum Math, TeX Gyre Pagella Math, TeX Gyre Termes Math, Neo Euler, Lucida Bright Math, MathJax_Main, STIXNonUnicode, STIXSizeOneSym, STIXGeneral, Symbol, DejaVu Sans");
pref("font.name-list.serif.x-math", "Latin Modern Math, XITS Math, Cambria Math, TeX Gyre Bonum Math, TeX Gyre Pagella Math, TeX Gyre Schola, TeX Gyre Termes Math, STIX Math, Asana Math, MathJax_Main, STIXGeneral, DejaVu Serif, DejaVu Sans, Symbol, Times");
pref("font.name.sans-serif.x-math", "Helvetica");
pref("font.name.monospace.x-math", "Courier");
pref("font.name.cursive.x-math", "Apple Chancery");
pref("font.name.fantasy.x-math", "Papyrus");
// individual font faces to be treated as independent families
// names are Postscript names of each face
@ -4097,6 +4113,11 @@ pref("font.name.sans-serif.zh-TW", "Fira Sans");
pref("font.name.monospace.zh-TW", "Fira Mono");
pref("font.name-list.sans-serif.zh-TW", "Fira Sans,Droid Sans Fallback");
pref("font.name.serif.x-math", "Latin Modern Math");
pref("font.name-list.serif.x-math", "Latin Modern Math, XITS Math, Cambria Math, TeX Gyre Bonum Math, TeX Gyre Pagella Math, TeX Gyre Schola, TeX Gyre Termes Math, STIX Math, Asana Math, MathJax_Main, STIXGeneral, DejaVu Serif, DejaVu Sans, Charis SIL Compact");
pref("font.name.sans-serif.x-math", "Fira Sans");
pref("font.name.monospace.x-math", "Fira Mono");
#elif defined(ANDROID)
// We use the bundled fonts for Firefox for Android
@ -4170,6 +4191,11 @@ pref("font.name-list.serif.zh-TW", "Droid Serif, Droid Sans Fallback");
pref("font.name-list.sans-serif.zh-TW", "Roboto, Droid Sans, Noto Sans TC, Noto Sans SC, Droid Sans Fallback");
pref("font.name-list.monospace.zh-TW", "Droid Sans Fallback");
pref("font.name.serif.x-math", "Latin Modern Math");
pref("font.name-list.serif.x-math", "Latin Modern Math, XITS Math, Cambria Math, TeX Gyre Bonum Math, TeX Gyre Pagella Math, TeX Gyre Schola, TeX Gyre Termes Math, STIX Math, Asana Math, MathJax_Main, STIXGeneral, DejaVu Serif, DejaVu Sans, Charis SIL Compact");
pref("font.name.sans-serif.x-math", "Clear Sans");
pref("font.name.monospace.x-math", "Droid Sans Mono");
#endif
#if OS_ARCH==AIX

2
view/nsViewManager.cpp

@ -757,7 +757,7 @@ nsViewManager::DispatchEvent(WidgetGUIEvent *aEvent,
mouseEvent->mMessage != eMouseEnterIntoWidget) ||
aEvent->HasKeyEventMessage() ||
aEvent->HasIMEEventMessage() ||
aEvent->mMessage == NS_PLUGIN_INPUT_EVENT) {
aEvent->mMessage == ePluginInputEvent) {
gLastUserEventTime = PR_IntervalToMicroseconds(PR_IntervalNow());
}

17
widget/EventMessageList.h

@ -260,10 +260,10 @@ NS_EVENT_MESSAGE(eCanPlay, eMediaEventFirst + 11)
NS_EVENT_MESSAGE(eCanPlayThrough, eMediaEventFirst + 12)
NS_EVENT_MESSAGE(eSeeking, eMediaEventFirst + 13)
NS_EVENT_MESSAGE(eSeeked, eMediaEventFirst + 14)
NS_EVENT_MESSAGE(NS_TIMEUPDATE, eMediaEventFirst + 15)
NS_EVENT_MESSAGE(NS_ENDED, eMediaEventFirst + 16)
NS_EVENT_MESSAGE(NS_RATECHANGE, eMediaEventFirst + 17)
NS_EVENT_MESSAGE(NS_DURATIONCHANGE, eMediaEventFirst + 18)
NS_EVENT_MESSAGE(eTimeUpdate, eMediaEventFirst + 15)
NS_EVENT_MESSAGE(eEnded, eMediaEventFirst + 16)
NS_EVENT_MESSAGE(eRateChange, eMediaEventFirst + 17)
NS_EVENT_MESSAGE(eDurationChange, eMediaEventFirst + 18)
NS_EVENT_MESSAGE(NS_VOLUMECHANGE, eMediaEventFirst + 19)
// paint notification events
@ -289,14 +289,13 @@ NS_EVENT_MESSAGE(NS_SIMPLE_GESTURE_EDGE_CANCELED, NS_SIMPLE_GESTURE_EVENT_START
NS_EVENT_MESSAGE(NS_SIMPLE_GESTURE_EDGE_COMPLETED, NS_SIMPLE_GESTURE_EVENT_START + 14)
// These are used to send native events to plugins.
NS_EVENT_MESSAGE(NS_PLUGIN_EVENT_START, 3600)
NS_EVENT_MESSAGE(NS_PLUGIN_INPUT_EVENT, NS_PLUGIN_EVENT_START)
NS_EVENT_MESSAGE(NS_PLUGIN_FOCUS_EVENT, NS_PLUGIN_EVENT_START + 1)
NS_EVENT_MESSAGE(ePluginEventFirst, 3600)
NS_EVENT_MESSAGE(ePluginInputEvent, ePluginEventFirst)
// Events to manipulate selection (WidgetSelectionEvent)
NS_EVENT_MESSAGE(NS_SELECTION_EVENT_START, 3700)
NS_EVENT_MESSAGE(eSelectionEventFirst, 3700)
// Clear any previous selection and set the given range as the selection
NS_EVENT_MESSAGE(NS_SELECTION_SET, NS_SELECTION_EVENT_START)
NS_EVENT_MESSAGE(NS_SELECTION_SET, eSelectionEventFirst)
// Events of commands for the contents
NS_EVENT_MESSAGE(NS_CONTENT_COMMAND_EVENT_START, 3800)

2
widget/windows/nsWindowBase.cpp

@ -23,7 +23,7 @@ nsWindowBase::DispatchPluginEvent(const MSG& aMsg)
if (!PluginHasFocus()) {
return false;
}
WidgetPluginEvent pluginEvent(true, NS_PLUGIN_INPUT_EVENT, this);
WidgetPluginEvent pluginEvent(true, ePluginInputEvent, this);
nsIntPoint point(0, 0);
InitEvent(pluginEvent, &point);
NPEvent npEvent;

Loading…
Cancel
Save