<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[199980] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/199980">199980</a></dd>
<dt>Author</dt> <dd>fred.wang@free.fr</dd>
<dt>Date</dt> <dd>2016-04-25 02:46:31 -0700 (Mon, 25 Apr 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Refactor RenderMathMLMenclose.
https://bugs.webkit.org/show_bug.cgi?id=155019

Patch by Frederic Wang &lt;fwang@igalia.com&gt; on 2016-04-25
Reviewed by Sergio Villar Senin.

Source/WebCore:

Tests: mathml/presentation/menclose-notation-equivalence.html
       mathml/presentation/menclose-notation-values.html

We rewrite RenderMathMLMenclose so that layout functions correctly override the
behavior of RenderMathMLRow. We try and rely on the draft  of the MathML in HTML5
implementation note, to make easier to get consistency with other rendering engines
in the future. All notations are now drawn with GraphicContext functions instead of
mixing them with CSS style. To save memory space, the list of known notations are
now saved on a short integer using bit masks instead of a vector of string names.
Finally, we remove support for the radical notation so that we no longer need to
create an anonymous RenderMathMLRoot.

* mathml/MathMLMencloseElement.cpp: Remove code for some special notations and just
reimplement parsing of the notation attribute.
(WebCore::MathMLMencloseElement::MathMLMencloseElement): By default, the notation is longdiv.
(WebCore::MathMLMencloseElement::parseAttribute): By default, the list of notation is empty.
If there is no notation attribute, the default value longdiv is used.
Otherwise, we parse the notation attribute and add each notation, using some equivalences
for box, actuarial and madruwb.
(WebCore::MathMLMencloseElement::isPresentationAttribute): Deleted. No need to define
specific style for some notation.
(WebCore::MathMLMencloseElement::finishParsingChildren): Deleted. No need to add an
anonymous square root.
(WebCore::MathMLMencloseElement::collectStyleForPresentationAttribute): Deleted. No need to
define specific style for some notation.
(WebCore::MathMLMencloseElement::longDivLeftPadding): Deleted. RenderMathMLMenclose uses an
arbitrary size instead of measure a glyph.
* mathml/MathMLMencloseElement.h: Define simple bit mask for each notation, add a short
integer to store the list of notations together with helper functions. Remove old code.
* rendering/mathml/RenderMathMLMenclose.cpp: Rewrite RenderMathMLMenclose so that layout
functions correctly override the behavior of RenderMathMLRow.
(WebCore::RenderMathMLMenclose::RenderMathMLMenclose): Init m_ascent to 0.
(WebCore::RenderMathMLMenclose::ruleThickness): For now, we use the fallback value used by
for other bars. We may refine that in the future.
(WebCore::RenderMathMLMenclose::getSpaceAroundContent): Helper function to retrieve the
space to add around the content, depending on the notations specified. Note that for
notation circle, this spacing depends on the content size.
(WebCore::RenderMathMLMenclose::computePreferredLogicalWidths): Reimplement this function.
This is just adding left/right spacing around the content.
(WebCore::RenderMathMLMenclose::layoutBlock): Reimplement this function. We do the normal
RenderMathMLRow layout, adjust spacing and child position and
calculate m_ascent and m_contentRect.
(WebCore::RenderMathMLMenclose::firstLineBaseline): Implement this function.
We just return m_ascent.
(WebCore::drawLine): Helper function to draw a line using strokePath.
(WebCore::RenderMathMLMenclose::paint): We reimplement this function to draw
all notations using GraphicContext.
(WebCore::RenderMathMLMenclose::addChild): Deleted. No need to manage anonymous renderers.
(WebCore::RenderMathMLMenclose::updateLogicalHeight): Deleted. Height is now calculated
in layoutBlock.
(WebCore::RenderMathMLMenclose::checkNotationalValuesValidity): Deleted.
* rendering/mathml/RenderMathMLMenclose.h: Update member definitions.
* rendering/mathml/RenderMathMLRoot.cpp: We no longer need anonymous roots.
(WebCore::RenderMathMLRoot::RenderMathMLRoot): Deleted.
* rendering/mathml/RenderMathMLRoot.h: We no longer need anonymous roots.
* rendering/mathml/RenderMathMLRow.cpp: Allow to get the exact metrics of the chid row,
for use in RenderMathMLRoot.
(WebCore::RenderMathMLRow::computeLineVerticalStretch): rename parameters.
(WebCore::RenderMathMLRow::layoutRowItems): Set parameters to the final ascent, descent and
logical width of the chid row. Set the temporary logical width for RenderMathMenclose before
laying the children out.
(WebCore::RenderMathMLRow::layoutBlock): Rename parameters ; add a dummy logicalWidth
parameter.
* rendering/mathml/RenderMathMLRow.h: Make some functions accessible or overridable by
RenderMathMLRoot. Make layoutRowItems return the final ascent, descent and logical width
after the chid row is laid out.
* rendering/mathml/RenderMathMLSquareRoot.cpp: We no longer need anonymous roots.
(WebCore::RenderMathMLSquareRoot::RenderMathMLSquareRoot): Deleted.
(WebCore::RenderMathMLSquareRoot::createAnonymousWithParentRenderer): Deleted.
* rendering/mathml/RenderMathMLSquareRoot.h: We no longer need anonymous roots.

LayoutTests:

* mathml/presentation/menclose-notation-attribute-set1.html: Removed.
This is replaced with menclose-notation-values.
* mathml/presentation/menclose-notation-attribute-set1-expected.txt: Removed.
This is replaced with menclose-notation-values.
* mathml/presentation/menclose-notation-attribute-set2-expected-mismatch.html: Removed.
This is replaced with menclose-notation-values.
* mathml/presentation/menclose-notation-attribute-set2.html: Removed.
This is replaced with menclose-notation-values.
* mathml/presentation/menclose-notation-values.html: Added.
This test verifies the rendering of various menclose notations.
* mathml/presentation/menclose-notation-equivalence.html: Added.
This test verifies some equivalence for the notation attribute value.
* mathml/presentation/menclose-notation-equivalence-expected.html: Added.
* mathml/presentation/menclose-notation-radical.html: Update the test now that support for
the radical notation is removed.
* mathml/presentation/menclose-notation-radical-expected.html: ditto.
* platform/gtk/mathml/presentation/menclose-notation-default-longdiv-expected.png: Update
reference due to small changes in longdiv implementation.
* platform/gtk/mathml/presentation/menclose-notation-default-longdiv-expected.txt: ditto.
* platform/mac/mathml/presentation/menclose-notation-default-longdiv-expected.png: ditto.
* platform/mac/mathml/presentation/menclose-notation-default-longdiv-expected.txt: ditto.
* platform/ios-simulator/mathml/presentation/menclose-notation-default-longdiv-expected.txt: ditto
* platform/gtk/mathml/presentation/menclose-notation-values-expected.png: Added.
* platform/gtk/mathml/presentation/menclose-notation-values-expected.txt: Added.
* platform/mac/mathml/presentation/menclose-notation-values-expected.png: Added.
* platform/mac/mathml/presentation/menclose-notation-values-expected.txt: Added.
* platform/ios-simulator/mathml/presentation/menclose-notation-values-expected.txt: Added.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsmathmlpresentationmenclosenotationradicalexpectedhtml">trunk/LayoutTests/mathml/presentation/menclose-notation-radical-expected.html</a></li>
<li><a href="#trunkLayoutTestsmathmlpresentationmenclosenotationradicalhtml">trunk/LayoutTests/mathml/presentation/menclose-notation-radical.html</a></li>
<li><a href="#trunkLayoutTestsplatformgtkmathmlpresentationmenclosenotationdefaultlongdivexpectedpng">trunk/LayoutTests/platform/gtk/mathml/presentation/menclose-notation-default-longdiv-expected.png</a></li>
<li><a href="#trunkLayoutTestsplatformgtkmathmlpresentationmenclosenotationdefaultlongdivexpectedtxt">trunk/LayoutTests/platform/gtk/mathml/presentation/menclose-notation-default-longdiv-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatormathmlpresentationmenclosenotationdefaultlongdivexpectedtxt">trunk/LayoutTests/platform/ios-simulator/mathml/presentation/menclose-notation-default-longdiv-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacmathmlpresentationmenclosenotationdefaultlongdivexpectedpng">trunk/LayoutTests/platform/mac/mathml/presentation/menclose-notation-default-longdiv-expected.png</a></li>
<li><a href="#trunkLayoutTestsplatformmacmathmlpresentationmenclosenotationdefaultlongdivexpectedtxt">trunk/LayoutTests/platform/mac/mathml/presentation/menclose-notation-default-longdiv-expected.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoremathmlMathMLMencloseElementcpp">trunk/Source/WebCore/mathml/MathMLMencloseElement.cpp</a></li>
<li><a href="#trunkSourceWebCoremathmlMathMLMencloseElementh">trunk/Source/WebCore/mathml/MathMLMencloseElement.h</a></li>
<li><a href="#trunkSourceWebCorerenderingmathmlRenderMathMLMenclosecpp">trunk/Source/WebCore/rendering/mathml/RenderMathMLMenclose.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingmathmlRenderMathMLMencloseh">trunk/Source/WebCore/rendering/mathml/RenderMathMLMenclose.h</a></li>
<li><a href="#trunkSourceWebCorerenderingmathmlRenderMathMLRootcpp">trunk/Source/WebCore/rendering/mathml/RenderMathMLRoot.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingmathmlRenderMathMLRooth">trunk/Source/WebCore/rendering/mathml/RenderMathMLRoot.h</a></li>
<li><a href="#trunkSourceWebCorerenderingmathmlRenderMathMLRowcpp">trunk/Source/WebCore/rendering/mathml/RenderMathMLRow.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingmathmlRenderMathMLRowh">trunk/Source/WebCore/rendering/mathml/RenderMathMLRow.h</a></li>
<li><a href="#trunkSourceWebCorerenderingmathmlRenderMathMLSquareRootcpp">trunk/Source/WebCore/rendering/mathml/RenderMathMLSquareRoot.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingmathmlRenderMathMLSquareRooth">trunk/Source/WebCore/rendering/mathml/RenderMathMLSquareRoot.h</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsmathmlpresentationmenclosenotationequivalenceexpectedhtml">trunk/LayoutTests/mathml/presentation/menclose-notation-equivalence-expected.html</a></li>
<li><a href="#trunkLayoutTestsmathmlpresentationmenclosenotationequivalencehtml">trunk/LayoutTests/mathml/presentation/menclose-notation-equivalence.html</a></li>
<li><a href="#trunkLayoutTestsmathmlpresentationmenclosenotationvalueshtml">trunk/LayoutTests/mathml/presentation/menclose-notation-values.html</a></li>
<li><a href="#trunkLayoutTestsplatformgtkmathmlpresentationmenclosenotationvaluesexpectedpng">trunk/LayoutTests/platform/gtk/mathml/presentation/menclose-notation-values-expected.png</a></li>
<li><a href="#trunkLayoutTestsplatformgtkmathmlpresentationmenclosenotationvaluesexpectedtxt">trunk/LayoutTests/platform/gtk/mathml/presentation/menclose-notation-values-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatormathmlpresentationmenclosenotationvaluesexpectedtxt">trunk/LayoutTests/platform/ios-simulator/mathml/presentation/menclose-notation-values-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacmathmlpresentationmenclosenotationvaluesexpectedpng">trunk/LayoutTests/platform/mac/mathml/presentation/menclose-notation-values-expected.png</a></li>
<li><a href="#trunkLayoutTestsplatformmacmathmlpresentationmenclosenotationvaluesexpectedtxt">trunk/LayoutTests/platform/mac/mathml/presentation/menclose-notation-values-expected.txt</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsmathmlpresentationmenclosenotationattributeset1expectedtxt">trunk/LayoutTests/mathml/presentation/menclose-notation-attribute-set1-expected.txt</a></li>
<li><a href="#trunkLayoutTestsmathmlpresentationmenclosenotationattributeset1html">trunk/LayoutTests/mathml/presentation/menclose-notation-attribute-set1.html</a></li>
<li><a href="#trunkLayoutTestsmathmlpresentationmenclosenotationattributeset2expectedmismatchhtml">trunk/LayoutTests/mathml/presentation/menclose-notation-attribute-set2-expected-mismatch.html</a></li>
<li><a href="#trunkLayoutTestsmathmlpresentationmenclosenotationattributeset2html">trunk/LayoutTests/mathml/presentation/menclose-notation-attribute-set2.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (199979 => 199980)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-04-25 07:39:13 UTC (rev 199979)
+++ trunk/LayoutTests/ChangeLog        2016-04-25 09:46:31 UTC (rev 199980)
</span><span class="lines">@@ -1,3 +1,38 @@
</span><ins>+2016-04-25  Frederic Wang  &lt;fwang@igalia.com&gt;
+
+        Refactor RenderMathMLMenclose.
+        https://bugs.webkit.org/show_bug.cgi?id=155019
+
+        Reviewed by Sergio Villar Senin.
+
+        * mathml/presentation/menclose-notation-attribute-set1.html: Removed.
+        This is replaced with menclose-notation-values.
+        * mathml/presentation/menclose-notation-attribute-set1-expected.txt: Removed.
+        This is replaced with menclose-notation-values.
+        * mathml/presentation/menclose-notation-attribute-set2-expected-mismatch.html: Removed.
+        This is replaced with menclose-notation-values.
+        * mathml/presentation/menclose-notation-attribute-set2.html: Removed.
+        This is replaced with menclose-notation-values.
+        * mathml/presentation/menclose-notation-values.html: Added.
+        This test verifies the rendering of various menclose notations.
+        * mathml/presentation/menclose-notation-equivalence.html: Added.
+        This test verifies some equivalence for the notation attribute value.
+        * mathml/presentation/menclose-notation-equivalence-expected.html: Added.
+        * mathml/presentation/menclose-notation-radical.html: Update the test now that support for
+        the radical notation is removed.
+        * mathml/presentation/menclose-notation-radical-expected.html: ditto.
+        * platform/gtk/mathml/presentation/menclose-notation-default-longdiv-expected.png: Update
+        reference due to small changes in longdiv implementation.
+        * platform/gtk/mathml/presentation/menclose-notation-default-longdiv-expected.txt: ditto.
+        * platform/mac/mathml/presentation/menclose-notation-default-longdiv-expected.png: ditto.
+        * platform/mac/mathml/presentation/menclose-notation-default-longdiv-expected.txt: ditto.
+        * platform/ios-simulator/mathml/presentation/menclose-notation-default-longdiv-expected.txt: ditto
+        * platform/gtk/mathml/presentation/menclose-notation-values-expected.png: Added.
+        * platform/gtk/mathml/presentation/menclose-notation-values-expected.txt: Added.
+        * platform/mac/mathml/presentation/menclose-notation-values-expected.png: Added.
+        * platform/mac/mathml/presentation/menclose-notation-values-expected.txt: Added.
+        * platform/ios-simulator/mathml/presentation/menclose-notation-values-expected.txt: Added.
+
</ins><span class="cx"> 2016-04-24  Gyuyoung Kim  &lt;gyuyoung.kim@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         [EFL] Some media tests have been failed after bumping gstreamer ver.
</span></span></pre></div>
<a id="trunkLayoutTestsmathmlpresentationmenclosenotationattributeset1expectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/mathml/presentation/menclose-notation-attribute-set1-expected.txt (199979 => 199980)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/mathml/presentation/menclose-notation-attribute-set1-expected.txt        2016-04-25 07:39:13 UTC (rev 199979)
+++ trunk/LayoutTests/mathml/presentation/menclose-notation-attribute-set1-expected.txt        2016-04-25 09:46:31 UTC (rev 199980)
</span><span class="lines">@@ -1,47 +0,0 @@
</span><del>-Tests that left, right, top, bottom, box, roundedbox, madruwb, actuarial attribute value is applied for menclose
-
-On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
-
-
-PASS window.getComputedStyle(document.getElementById('mathmenclose1'),null).getPropertyValue('border-left-style') is &quot;solid&quot;
-PASS window.getComputedStyle(document.getElementById('mathmenclose1'),null).getPropertyValue('border-left-width') is &quot;1px&quot;
-PASS window.getComputedStyle(document.getElementById('mathmenclose1'),null).getPropertyValue('border-right-style') is &quot;none&quot;
-PASS window.getComputedStyle(document.getElementById('mathmenclose1'),null).getPropertyValue('border-right-width') is &quot;0px&quot;
-PASS window.getComputedStyle(document.getElementById('mathmenclose2'),null).getPropertyValue('border-right-style') is &quot;solid&quot;
-PASS window.getComputedStyle(document.getElementById('mathmenclose2'),null).getPropertyValue('border-right-width') is &quot;1px&quot;
-PASS window.getComputedStyle(document.getElementById('mathmenclose2'),null).getPropertyValue('border-left-style') is &quot;none&quot;
-PASS window.getComputedStyle(document.getElementById('mathmenclose2'),null).getPropertyValue('border-left-width') is &quot;0px&quot;
-PASS window.getComputedStyle(document.getElementById('mathmenclose3'),null).getPropertyValue('border-top-style') is &quot;solid&quot;
-PASS window.getComputedStyle(document.getElementById('mathmenclose3'),null).getPropertyValue('border-top-width') is &quot;1px&quot;
-PASS window.getComputedStyle(document.getElementById('mathmenclose3'),null).getPropertyValue('border-bottom-style') is &quot;none&quot;
-PASS window.getComputedStyle(document.getElementById('mathmenclose3'),null).getPropertyValue('border-bottom-width') is &quot;0px&quot;
-PASS window.getComputedStyle(document.getElementById('mathmenclose4'),null).getPropertyValue('border-bottom-style') is &quot;solid&quot;
-PASS window.getComputedStyle(document.getElementById('mathmenclose4'),null).getPropertyValue('border-bottom-width') is &quot;1px&quot;
-PASS window.getComputedStyle(document.getElementById('mathmenclose4'),null).getPropertyValue('border-top-style') is &quot;none&quot;
-PASS window.getComputedStyle(document.getElementById('mathmenclose4'),null).getPropertyValue('border-top-width') is &quot;0px&quot;
-PASS window.getComputedStyle(document.getElementById('mathmenclose5'),null).getPropertyValue('border') is &quot;1px solid rgb(0, 0, 0)&quot;
-PASS window.getComputedStyle(document.getElementById('mathmenclose6'),null).getPropertyValue('border') is &quot;1px solid rgb(0, 0, 0)&quot;
-PASS window.getComputedStyle(document.getElementById('mathmenclose6'),null).getPropertyValue('border-radius') is &quot;5px&quot;
-PASS window.getComputedStyle(document.getElementById('mathmenclose7'),null).getPropertyValue('border-right-style') is &quot;solid&quot;
-PASS window.getComputedStyle(document.getElementById('mathmenclose7'),null).getPropertyValue('border-right-width') is &quot;1px&quot;
-PASS window.getComputedStyle(document.getElementById('mathmenclose7'),null).getPropertyValue('border-bottom-style') is &quot;solid&quot;
-PASS window.getComputedStyle(document.getElementById('mathmenclose7'),null).getPropertyValue('border-bottom-width') is &quot;1px&quot;
-PASS window.getComputedStyle(document.getElementById('mathmenclose7'),null).getPropertyValue('border-top-style') is &quot;none&quot;
-PASS window.getComputedStyle(document.getElementById('mathmenclose7'),null).getPropertyValue('border-top-width') is &quot;0px&quot;
-PASS window.getComputedStyle(document.getElementById('mathmenclose8'),null).getPropertyValue('border-right-style') is &quot;solid&quot;
-PASS window.getComputedStyle(document.getElementById('mathmenclose8'),null).getPropertyValue('border-right-width') is &quot;1px&quot;
-PASS window.getComputedStyle(document.getElementById('mathmenclose8'),null).getPropertyValue('border-top-style') is &quot;solid&quot;
-PASS window.getComputedStyle(document.getElementById('mathmenclose8'),null).getPropertyValue('border-top-width') is &quot;1px&quot;
-PASS window.getComputedStyle(document.getElementById('mathmenclose8'),null).getPropertyValue('border-bottom-style') is &quot;none&quot;
-PASS window.getComputedStyle(document.getElementById('mathmenclose8'),null).getPropertyValue('border-bottom-width') is &quot;0px&quot;
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
-
-
-
-
-
-
-
</del></span></pre></div>
<a id="trunkLayoutTestsmathmlpresentationmenclosenotationattributeset1html"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/mathml/presentation/menclose-notation-attribute-set1.html (199979 => 199980)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/mathml/presentation/menclose-notation-attribute-set1.html        2016-04-25 07:39:13 UTC (rev 199979)
+++ trunk/LayoutTests/mathml/presentation/menclose-notation-attribute-set1.html        2016-04-25 09:46:31 UTC (rev 199980)
</span><span class="lines">@@ -1,86 +0,0 @@
</span><del>-&lt;!DOCTYPE html&gt;
-&lt;html&gt;
-    &lt;head&gt;
-        &lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
-        &lt;script&gt;
-            function runTest() {
-                description('Tests that left, right, top, bottom, box, roundedbox, madruwb, actuarial attribute value is applied for menclose');
-
-                shouldBeEqualToString(&quot;window.getComputedStyle(document.getElementById('mathmenclose1'),null).getPropertyValue('border-left-style')&quot;,&quot;solid&quot;);
-                shouldBeEqualToString(&quot;window.getComputedStyle(document.getElementById('mathmenclose1'),null).getPropertyValue('border-left-width')&quot;,&quot;1px&quot;);
-                shouldBeEqualToString(&quot;window.getComputedStyle(document.getElementById('mathmenclose1'),null).getPropertyValue('border-right-style')&quot;,&quot;none&quot;);
-                shouldBeEqualToString(&quot;window.getComputedStyle(document.getElementById('mathmenclose1'),null).getPropertyValue('border-right-width')&quot;,&quot;0px&quot;);
-                shouldBeEqualToString(&quot;window.getComputedStyle(document.getElementById('mathmenclose2'),null).getPropertyValue('border-right-style')&quot;,&quot;solid&quot;);
-                shouldBeEqualToString(&quot;window.getComputedStyle(document.getElementById('mathmenclose2'),null).getPropertyValue('border-right-width')&quot;,&quot;1px&quot;);
-                shouldBeEqualToString(&quot;window.getComputedStyle(document.getElementById('mathmenclose2'),null).getPropertyValue('border-left-style')&quot;,&quot;none&quot;);
-                shouldBeEqualToString(&quot;window.getComputedStyle(document.getElementById('mathmenclose2'),null).getPropertyValue('border-left-width')&quot;,&quot;0px&quot;);
-                shouldBeEqualToString(&quot;window.getComputedStyle(document.getElementById('mathmenclose3'),null).getPropertyValue('border-top-style')&quot;,&quot;solid&quot;);
-                shouldBeEqualToString(&quot;window.getComputedStyle(document.getElementById('mathmenclose3'),null).getPropertyValue('border-top-width')&quot;,&quot;1px&quot;);
-                shouldBeEqualToString(&quot;window.getComputedStyle(document.getElementById('mathmenclose3'),null).getPropertyValue('border-bottom-style')&quot;,&quot;none&quot;);
-                shouldBeEqualToString(&quot;window.getComputedStyle(document.getElementById('mathmenclose3'),null).getPropertyValue('border-bottom-width')&quot;,&quot;0px&quot;);
-                shouldBeEqualToString(&quot;window.getComputedStyle(document.getElementById('mathmenclose4'),null).getPropertyValue('border-bottom-style')&quot;,&quot;solid&quot;);
-                shouldBeEqualToString(&quot;window.getComputedStyle(document.getElementById('mathmenclose4'),null).getPropertyValue('border-bottom-width')&quot;,&quot;1px&quot;);
-                shouldBeEqualToString(&quot;window.getComputedStyle(document.getElementById('mathmenclose4'),null).getPropertyValue('border-top-style')&quot;,&quot;none&quot;);
-                shouldBeEqualToString(&quot;window.getComputedStyle(document.getElementById('mathmenclose4'),null).getPropertyValue('border-top-width')&quot;,&quot;0px&quot;);
-                shouldBeEqualToString(&quot;window.getComputedStyle(document.getElementById('mathmenclose5'),null).getPropertyValue('border')&quot;,&quot;1px solid rgb(0, 0, 0)&quot;);
-                shouldBeEqualToString(&quot;window.getComputedStyle(document.getElementById('mathmenclose6'),null).getPropertyValue('border')&quot;,&quot;1px solid rgb(0, 0, 0)&quot;);
-                shouldBeEqualToString(&quot;window.getComputedStyle(document.getElementById('mathmenclose6'),null).getPropertyValue('border-radius')&quot;,&quot;5px&quot;);
-                shouldBeEqualToString(&quot;window.getComputedStyle(document.getElementById('mathmenclose7'),null).getPropertyValue('border-right-style')&quot;,&quot;solid&quot;);
-                shouldBeEqualToString(&quot;window.getComputedStyle(document.getElementById('mathmenclose7'),null).getPropertyValue('border-right-width')&quot;,&quot;1px&quot;);
-                shouldBeEqualToString(&quot;window.getComputedStyle(document.getElementById('mathmenclose7'),null).getPropertyValue('border-bottom-style')&quot;,&quot;solid&quot;);
-                shouldBeEqualToString(&quot;window.getComputedStyle(document.getElementById('mathmenclose7'),null).getPropertyValue('border-bottom-width')&quot;,&quot;1px&quot;);
-                shouldBeEqualToString(&quot;window.getComputedStyle(document.getElementById('mathmenclose7'),null).getPropertyValue('border-top-style')&quot;,&quot;none&quot;);
-                shouldBeEqualToString(&quot;window.getComputedStyle(document.getElementById('mathmenclose7'),null).getPropertyValue('border-top-width')&quot;,&quot;0px&quot;);
-                shouldBeEqualToString(&quot;window.getComputedStyle(document.getElementById('mathmenclose8'),null).getPropertyValue('border-right-style')&quot;,&quot;solid&quot;);
-                shouldBeEqualToString(&quot;window.getComputedStyle(document.getElementById('mathmenclose8'),null).getPropertyValue('border-right-width')&quot;,&quot;1px&quot;);
-                shouldBeEqualToString(&quot;window.getComputedStyle(document.getElementById('mathmenclose8'),null).getPropertyValue('border-top-style')&quot;,&quot;solid&quot;);
-                shouldBeEqualToString(&quot;window.getComputedStyle(document.getElementById('mathmenclose8'),null).getPropertyValue('border-top-width')&quot;,&quot;1px&quot;);
-                                shouldBeEqualToString(&quot;window.getComputedStyle(document.getElementById('mathmenclose8'),null).getPropertyValue('border-bottom-style')&quot;,&quot;none&quot;);
-                shouldBeEqualToString(&quot;window.getComputedStyle(document.getElementById('mathmenclose8'),null).getPropertyValue('border-bottom-width')&quot;,&quot;0px&quot;);              
-                isSuccessfullyParsed();                                
-            }
-        &lt;/script&gt;
-    &lt;/head&gt;
-    &lt;body onload=&quot;runTest()&quot;&gt;
-        &lt;p&gt;
-            &lt;math&gt;
-                &lt;menclose notation=&quot;left&quot; id=&quot;mathmenclose1&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;
-            &lt;/math&gt;
-        &lt;/p&gt;
-        &lt;p&gt;
-            &lt;math&gt;
-                &lt;menclose notation=&quot;right&quot; id=&quot;mathmenclose2&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;
-            &lt;/math&gt;
-        &lt;/p&gt;
-        &lt;p&gt;
-            &lt;math&gt;
-                &lt;menclose notation=&quot;top&quot; id=&quot;mathmenclose3&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;
-            &lt;/math&gt;
-        &lt;/p&gt;
-        &lt;p&gt;
-            &lt;math&gt;
-                &lt;menclose notation=&quot;bottom&quot; id=&quot;mathmenclose4&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;
-            &lt;/math&gt;
-        &lt;/p&gt;
-        &lt;p&gt;
-            &lt;math&gt;
-                &lt;menclose notation=&quot;box&quot; id=&quot;mathmenclose5&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;
-            &lt;/math&gt;
-        &lt;/p&gt;
-        &lt;p&gt;
-            &lt;math&gt;
-                &lt;menclose notation=&quot;roundedbox&quot; id=&quot;mathmenclose6&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;
-            &lt;/math&gt;
-        &lt;/p&gt;
-        &lt;p&gt;
-            &lt;math&gt;
-                &lt;menclose notation=&quot;madruwb&quot; id=&quot;mathmenclose7&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;
-            &lt;/math&gt;
-        &lt;/p&gt;
-        &lt;p&gt;
-            &lt;math&gt;
-                &lt;menclose notation=&quot;actuarial&quot; id=&quot;mathmenclose8&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;
-            &lt;/math&gt;
-        &lt;/p&gt;
-    &lt;/body&gt;
-&lt;/html&gt;
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsmathmlpresentationmenclosenotationattributeset2expectedmismatchhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/mathml/presentation/menclose-notation-attribute-set2-expected-mismatch.html (199979 => 199980)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/mathml/presentation/menclose-notation-attribute-set2-expected-mismatch.html        2016-04-25 07:39:13 UTC (rev 199979)
+++ trunk/LayoutTests/mathml/presentation/menclose-notation-attribute-set2-expected-mismatch.html        2016-04-25 09:46:31 UTC (rev 199980)
</span><span class="lines">@@ -1,10 +0,0 @@
</span><del>-&lt;!DOCTYPE html&gt;
-&lt;html&gt;
-    &lt;body&gt;
-        &lt;p&gt;
-            &lt;math&gt;
-                &lt;mrow&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/mrow&gt;
-            &lt;/math&gt;
-        &lt;p&gt;        
-    &lt;/body&gt;
-&lt;/html&gt;
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsmathmlpresentationmenclosenotationattributeset2html"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/mathml/presentation/menclose-notation-attribute-set2.html (199979 => 199980)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/mathml/presentation/menclose-notation-attribute-set2.html        2016-04-25 07:39:13 UTC (rev 199979)
+++ trunk/LayoutTests/mathml/presentation/menclose-notation-attribute-set2.html        2016-04-25 09:46:31 UTC (rev 199980)
</span><span class="lines">@@ -1,13 +0,0 @@
</span><del>-&lt;!DOCTYPE html&gt;
-&lt;html&gt;
-    &lt;head&gt;
-        &lt;title&gt;menclose notation downdiagonalstrike test&lt;/title&gt;
-    &lt;/head&gt;
-    &lt;body&gt;
-        &lt;p&gt;
-            &lt;math&gt;
-                &lt;menclose notation=&quot;downdiagonalstrike&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;
-            &lt;/math&gt;
-        &lt;/p&gt;                
-    &lt;/body&gt;
-&lt;/html&gt;
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsmathmlpresentationmenclosenotationequivalenceexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/mathml/presentation/menclose-notation-equivalence-expected.html (0 => 199980)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/mathml/presentation/menclose-notation-equivalence-expected.html                                (rev 0)
+++ trunk/LayoutTests/mathml/presentation/menclose-notation-equivalence-expected.html        2016-04-25 09:46:31 UTC (rev 199980)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+  &lt;head&gt;
+    &lt;title&gt;menclose equivalence of notation values&lt;/title&gt;
+  &lt;/head&gt;
+  &lt;body&gt;
+    &lt;!-- Order does not matter --&gt;
+    &lt;math&gt;&lt;mrow&gt;&lt;menclose notation=&quot;horizontalstrike circle top &quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;&lt;/mrow&gt;&lt;/math&gt;
+
+    &lt;!-- Duplicate does not matter --&gt;
+    &lt;math&gt;&lt;mrow&gt;&lt;menclose notation=&quot;top longdiv circle actuarial left&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;&lt;/mrow&gt;&lt;/math&gt;
+
+    &lt;!-- Invalid values are ignored --&gt;
+    &lt;math&gt;&lt;mrow&gt;&lt;menclose notation=&quot;circle box&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;&lt;/mrow&gt;&lt;/math&gt;
+
+    &lt;!-- box is like left right top bottom --&gt;
+    &lt;math&gt;&lt;mrow&gt;&lt;menclose notation=&quot;left right top bottom&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;&lt;/mrow&gt;&lt;/math&gt;
+
+    &lt;!-- actuarial is like right top --&gt;
+    &lt;math&gt;&lt;mrow&gt;&lt;menclose notation=&quot;right top&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;&lt;/mrow&gt;&lt;/math&gt;
+
+    &lt;!-- madruwb is like right bottom --&gt;
+    &lt;math&gt;&lt;mrow&gt;&lt;menclose notation=&quot;right bottom&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;&lt;/mrow&gt;&lt;/math&gt;
+
+    &lt;!-- menclose notations are independent of overall directionality --&gt;
+    &lt;math&gt;&lt;mrow&gt;&lt;menclose notation=&quot;left updiagonalstrike&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;&lt;/mrow&gt;&lt;/math&gt;
+
+  &lt;/body&gt;
+&lt;/html&gt;
</ins><span class="cx">Property changes on: trunk/LayoutTests/mathml/presentation/menclose-notation-equivalence-expected.html
</span><span class="cx">___________________________________________________________________
</span></span></pre></div>
<a id="svnmimetype"></a>
<div class="addfile"><h4>Added: svn:mime-type</h4></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4>Added: svn:eol-style</h4></div>
<a id="trunkLayoutTestsmathmlpresentationmenclosenotationequivalencehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/mathml/presentation/menclose-notation-equivalence.html (0 => 199980)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/mathml/presentation/menclose-notation-equivalence.html                                (rev 0)
+++ trunk/LayoutTests/mathml/presentation/menclose-notation-equivalence.html        2016-04-25 09:46:31 UTC (rev 199980)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+  &lt;head&gt;
+    &lt;title&gt;menclose equivalence of notation values&lt;/title&gt;
+  &lt;/head&gt;
+  &lt;body&gt;
+    &lt;!-- Order does not matter --&gt;
+    &lt;math&gt;&lt;mrow&gt;&lt;menclose notation=&quot;top circle horizontalstrike&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;&lt;/mrow&gt;&lt;/math&gt;
+
+    &lt;!-- Duplicate does not matter --&gt;
+    &lt;math&gt;&lt;mrow&gt;&lt;menclose notation=&quot;top longdiv circle actuarial top circle left longdiv circle top left&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;&lt;/mrow&gt;&lt;/math&gt;
+
+    &lt;!-- Invalid values are ignored --&gt;
+    &lt;math&gt;&lt;mrow&gt;&lt;menclose notation=&quot;circle triangle box&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;&lt;/mrow&gt;&lt;/math&gt;
+
+    &lt;!-- box is like left right top bottom --&gt;
+    &lt;math&gt;&lt;mrow&gt;&lt;menclose notation=&quot;box&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;&lt;/mrow&gt;&lt;/math&gt;
+
+    &lt;!-- actuarial is like right top --&gt;
+    &lt;math&gt;&lt;mrow&gt;&lt;menclose notation=&quot;actuarial&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;&lt;/mrow&gt;&lt;/math&gt;
+
+    &lt;!-- madruwb is like right bottom --&gt;
+    &lt;math&gt;&lt;mrow&gt;&lt;menclose notation=&quot;madruwb&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;&lt;/mrow&gt;&lt;/math&gt;
+
+    &lt;!-- menclose notations are independent of overall directionality --&gt;
+    &lt;math dir=&quot;rtl&quot;&gt;&lt;mrow&gt;&lt;menclose notation=&quot;left updiagonalstrike&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;&lt;/mrow&gt;&lt;/math&gt;
+
+  &lt;/body&gt;
+&lt;/html&gt;
</ins><span class="cx">Property changes on: trunk/LayoutTests/mathml/presentation/menclose-notation-equivalence.html
</span><span class="cx">___________________________________________________________________
</span></span></pre></div>
<a id="svnmimetype"></a>
<div class="addfile"><h4>Added: svn:mime-type</h4></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4>Added: svn:eol-style</h4></div>
<a id="trunkLayoutTestsmathmlpresentationmenclosenotationradicalexpectedhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/mathml/presentation/menclose-notation-radical-expected.html (199979 => 199980)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/mathml/presentation/menclose-notation-radical-expected.html        2016-04-25 07:39:13 UTC (rev 199979)
+++ trunk/LayoutTests/mathml/presentation/menclose-notation-radical-expected.html        2016-04-25 09:46:31 UTC (rev 199980)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx">     &lt;/head&gt;
</span><span class="cx">     &lt;body&gt;
</span><span class="cx">         &lt;p&gt;
</span><del>-            &lt;math&gt;&lt;mrow&gt;&lt;msqrt&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/msqrt&gt;&lt;/mrow&gt;&lt;/math&gt;
</del><ins>+            &lt;math&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;/math&gt;
</ins><span class="cx">         &lt;/p&gt;
</span><span class="cx">     &lt;/body&gt;
</span><del>-&lt;/html&gt;
</del><span class="cx">\ No newline at end of file
</span><ins>+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsmathmlpresentationmenclosenotationradicalhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/mathml/presentation/menclose-notation-radical.html (199979 => 199980)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/mathml/presentation/menclose-notation-radical.html        2016-04-25 07:39:13 UTC (rev 199979)
+++ trunk/LayoutTests/mathml/presentation/menclose-notation-radical.html        2016-04-25 09:46:31 UTC (rev 199980)
</span><span class="lines">@@ -4,8 +4,9 @@
</span><span class="cx">         &lt;title&gt;menclose notation radical test&lt;/title&gt;
</span><span class="cx">     &lt;/head&gt;
</span><span class="cx">     &lt;body&gt;
</span><ins>+        &lt;!-- We removed support for the radical notation, so this menclose element should render the same as an mrow element. --&gt;
</ins><span class="cx">         &lt;p&gt;
</span><span class="cx">             &lt;math&gt;&lt;mrow&gt;&lt;menclose notation=&quot;radical&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;&lt;/mrow&gt;&lt;/math&gt;
</span><span class="cx">         &lt;/p&gt;
</span><span class="cx">     &lt;/body&gt;
</span><del>-&lt;/html&gt;
</del><span class="cx">\ No newline at end of file
</span><ins>+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsmathmlpresentationmenclosenotationvalueshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/mathml/presentation/menclose-notation-values.html (0 => 199980)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/mathml/presentation/menclose-notation-values.html                                (rev 0)
+++ trunk/LayoutTests/mathml/presentation/menclose-notation-values.html        2016-04-25 09:46:31 UTC (rev 199980)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;title&gt;menclose notations&lt;/title&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+      &lt;!-- Test each individual notation --&gt;
+      &lt;math&gt;&lt;mrow&gt;&lt;menclose notation=&quot;longdiv&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;&lt;/mrow&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mrow&gt;&lt;menclose notation=&quot;actuarial&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;&lt;/mrow&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mrow&gt;&lt;menclose notation=&quot;box&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;&lt;/mrow&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mrow&gt;&lt;menclose notation=&quot;roundedbox&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;&lt;/mrow&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mrow&gt;&lt;menclose notation=&quot;circle&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;&lt;/mrow&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mrow&gt;&lt;menclose notation=&quot;left&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;&lt;/mrow&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mrow&gt;&lt;menclose notation=&quot;right&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;&lt;/mrow&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mrow&gt;&lt;menclose notation=&quot;top&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;&lt;/mrow&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mrow&gt;&lt;menclose notation=&quot;bottom&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;&lt;/mrow&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mrow&gt;&lt;menclose notation=&quot;updiagonalstrike&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;&lt;/mrow&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mrow&gt;&lt;menclose notation=&quot;downdiagonalstrike&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;&lt;/mrow&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mrow&gt;&lt;menclose notation=&quot;verticalstrike&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;&lt;/mrow&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mrow&gt;&lt;menclose notation=&quot;horizontalstrike&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;&lt;/mrow&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mrow&gt;&lt;menclose notation=&quot;madruwb&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;&lt;/mrow&gt;&lt;/math&gt;
+
+      &lt;!-- Test combinations of several notations --&gt;
+      &lt;math&gt;&lt;mrow&gt;&lt;menclose notation=&quot;longdiv circle updiagonalstrike&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;&lt;/mrow&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mrow&gt;&lt;menclose notation=&quot;roundedbox updiagonalstrike horizontalstrike&quot;&gt;&lt;mspace width=&quot;100px&quot; height=&quot;50px&quot; mathbackground=&quot;red&quot;/&gt;&lt;/menclose&gt;&lt;/mrow&gt;&lt;/math&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins><span class="cx">Property changes on: trunk/LayoutTests/mathml/presentation/menclose-notation-values.html
</span><span class="cx">___________________________________________________________________
</span></span></pre></div>
<a id="svnmimetype"></a>
<div class="addfile"><h4>Added: svn:mime-type</h4></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4>Added: svn:eol-style</h4></div>
<a id="trunkLayoutTestsplatformgtkmathmlpresentationmenclosenotationdefaultlongdivexpectedpng"></a>
<div class="binary"><h4>Modified: trunk/LayoutTests/platform/gtk/mathml/presentation/menclose-notation-default-longdiv-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkLayoutTestsplatformgtkmathmlpresentationmenclosenotationdefaultlongdivexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/gtk/mathml/presentation/menclose-notation-default-longdiv-expected.txt (199979 => 199980)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/gtk/mathml/presentation/menclose-notation-default-longdiv-expected.txt        2016-04-25 07:39:13 UTC (rev 199979)
+++ trunk/LayoutTests/platform/gtk/mathml/presentation/menclose-notation-default-longdiv-expected.txt        2016-04-25 09:46:31 UTC (rev 199980)
</span><span class="lines">@@ -1,11 +1,11 @@
</span><span class="cx"> layer at (0,0) size 800x600
</span><span class="cx">   RenderView at (0,0) size 800x600
</span><del>-layer at (0,0) size 800x91
-  RenderBlock {HTML} at (0,0) size 800x91
-    RenderBody {BODY} at (8,16) size 784x59
-      RenderBlock {P} at (0,0) size 784x59
-        RenderMathMLMath {math} at (0,0) size 102x56 [padding: 0 1 0 1]
-          RenderMathMLRow {mrow} at (1,0) size 100x56
-            RenderMathMLMenclose {menclose} at (0,0) size 100x56 [padding: 6 0 0 6]
-              RenderMathMLSpace {mspace} at (6,6) size 100x50 [bgcolor=#FF0000]
</del><ins>+layer at (0,0) size 800x89
+  RenderBlock {HTML} at (0,0) size 800x89
+    RenderBody {BODY} at (8,16) size 784x57
+      RenderBlock {P} at (0,0) size 784x57
+        RenderMathMLMath {math} at (0,0) size 114x58 [padding: 0 1 0 1]
+          RenderMathMLRow {mrow} at (1,0) size 112x58
+            RenderMathMLMenclose {menclose} at (0,0) size 112x58
+              RenderMathMLSpace {mspace} at (7,3) size 101x51 [bgcolor=#FF0000]
</ins><span class="cx">         RenderText {#text} at (0,0) size 0x0
</span></span></pre></div>
<a id="trunkLayoutTestsplatformgtkmathmlpresentationmenclosenotationvaluesexpectedpng"></a>
<div class="binary"><h4>Added: trunk/LayoutTests/platform/gtk/mathml/presentation/menclose-notation-values-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx">Property changes on: trunk/LayoutTests/platform/gtk/mathml/presentation/menclose-notation-values-expected.png
</span><span class="cx">___________________________________________________________________
</span><a id="svnmimetype"></a>
<div class="addfile"><h4>Added: svn:mime-type</h4></div>
<a id="trunkLayoutTestsplatformgtkmathmlpresentationmenclosenotationvaluesexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/gtk/mathml/presentation/menclose-notation-values-expected.txt (0 => 199980)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/gtk/mathml/presentation/menclose-notation-values-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/gtk/mathml/presentation/menclose-notation-values-expected.txt        2016-04-25 09:46:31 UTC (rev 199980)
</span><span class="lines">@@ -0,0 +1,99 @@
</span><ins>+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x219
+  RenderBlock {HTML} at (0,0) size 800x219
+    RenderBody {BODY} at (8,8) size 784x203
+      RenderMathMLMath {math} at (0,8) size 114x58 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 112x58
+          RenderMathMLMenclose {menclose} at (0,0) size 112x58
+            RenderMathMLSpace {mspace} at (7,3) size 101x51 [bgcolor=#FF0000]
+      RenderText {#text} at (113,48) size 5x17
+        text run at (113,48) width 5: &quot; &quot;
+      RenderMathMLMath {math} at (117,8) size 110x58 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 108x58
+          RenderMathMLMenclose {menclose} at (0,0) size 108x58
+            RenderMathMLSpace {mspace} at (3,3) size 101x51 [bgcolor=#FF0000]
+      RenderText {#text} at (226,48) size 5x17
+        text run at (226,48) width 5: &quot; &quot;
+      RenderMathMLMath {math} at (230,8) size 111x58 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 108x58
+          RenderMathMLMenclose {menclose} at (0,0) size 108x58
+            RenderMathMLSpace {mspace} at (3,3) size 101x51 [bgcolor=#FF0000]
+      RenderText {#text} at (340,48) size 5x17
+        text run at (340,48) width 5: &quot; &quot;
+      RenderMathMLMath {math} at (344,8) size 111x58 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 108x58
+          RenderMathMLMenclose {menclose} at (0,0) size 108x58
+            RenderMathMLSpace {mspace} at (3,3) size 101x51 [bgcolor=#FF0000]
+      RenderText {#text} at (454,48) size 5x17
+        text run at (454,48) width 5: &quot; &quot;
+      RenderMathMLMath {math} at (458,0) size 147x74 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 144x74
+          RenderMathMLMenclose {menclose} at (0,0) size 144x74
+            RenderMathMLSpace {mspace} at (21,11) size 101x51 [bgcolor=#FF0000]
+      RenderText {#text} at (604,48) size 5x17
+        text run at (604,48) width 5: &quot; &quot;
+      RenderMathMLMath {math} at (608,9) size 107x57 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 104x57
+          RenderMathMLMenclose {menclose} at (0,0) size 104x57
+            RenderMathMLSpace {mspace} at (3,3) size 101x51 [bgcolor=#FF0000]
+      RenderText {#text} at (0,0) size 0x0
+      RenderMathMLMath {math} at (0,74) size 106x57 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 104x57
+          RenderMathMLMenclose {menclose} at (0,0) size 104x57
+            RenderMathMLSpace {mspace} at (0,3) size 100x51 [bgcolor=#FF0000]
+      RenderText {#text} at (105,113) size 5x17
+        text run at (105,113) width 5: &quot; &quot;
+      RenderMathMLMath {math} at (109,73) size 110x54 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 107x54
+          RenderMathMLMenclose {menclose} at (0,0) size 107x54
+            RenderMathMLSpace {mspace} at (3,3) size 101x51 [bgcolor=#FF0000]
+      RenderText {#text} at (218,113) size 5x17
+        text run at (218,113) width 5: &quot; &quot;
+      RenderMathMLMath {math} at (222,77) size 109x54 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 107x54
+          RenderMathMLMenclose {menclose} at (0,0) size 107x54
+            RenderMathMLSpace {mspace} at (3,0) size 101x50 [bgcolor=#FF0000]
+      RenderText {#text} at (330,113) size 5x17
+        text run at (330,113) width 5: &quot; &quot;
+      RenderMathMLMath {math} at (334,77) size 104x51 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 101x51
+          RenderMathMLMenclose {menclose} at (0,0) size 101x51
+            RenderMathMLSpace {mspace} at (0,0) size 101x51 [bgcolor=#FF0000]
+      RenderText {#text} at (437,113) size 5x17
+        text run at (437,113) width 5: &quot; &quot;
+      RenderMathMLMath {math} at (441,77) size 104x51 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 101x51
+          RenderMathMLMenclose {menclose} at (0,0) size 101x51
+            RenderMathMLSpace {mspace} at (0,0) size 101x51 [bgcolor=#FF0000]
+      RenderText {#text} at (544,113) size 5x17
+        text run at (544,113) width 5: &quot; &quot;
+      RenderMathMLMath {math} at (548,77) size 103x50 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 100x50
+          RenderMathMLMenclose {menclose} at (0,0) size 100x50
+            RenderMathMLSpace {mspace} at (0,0) size 100x50 [bgcolor=#FF0000]
+      RenderText {#text} at (650,113) size 5x17
+        text run at (650,113) width 5: &quot; &quot;
+      RenderMathMLMath {math} at (654,77) size 103x50 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 100x50
+          RenderMathMLMenclose {menclose} at (0,0) size 100x50
+            RenderMathMLSpace {mspace} at (0,0) size 100x50 [bgcolor=#FF0000]
+      RenderText {#text} at (0,0) size 0x0
+      RenderMathMLMath {math} at (0,139) size 110x58 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 108x58
+          RenderMathMLMenclose {menclose} at (0,0) size 108x58
+            RenderMathMLSpace {mspace} at (3,3) size 101x51 [bgcolor=#FF0000]
+      RenderText {#text} at (109,178) size 5x17
+        text run at (109,178) width 5: &quot; &quot;
+      RenderText {#text} at (0,0) size 0x0
+      RenderMathMLMath {math} at (113,130) size 146x74 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 144x74
+          RenderMathMLMenclose {menclose} at (0,0) size 144x74
+            RenderMathMLSpace {mspace} at (21,11) size 101x51 [bgcolor=#FF0000]
+      RenderText {#text} at (258,178) size 5x17
+        text run at (258,178) width 5: &quot; &quot;
+      RenderMathMLMath {math} at (262,138) size 111x58 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 108x58
+          RenderMathMLMenclose {menclose} at (0,0) size 108x58
+            RenderMathMLSpace {mspace} at (3,3) size 101x51 [bgcolor=#FF0000]
+      RenderText {#text} at (0,0) size 0x0
</ins><span class="cx">Property changes on: trunk/LayoutTests/platform/gtk/mathml/presentation/menclose-notation-values-expected.txt
</span><span class="cx">___________________________________________________________________
</span></span></pre></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4>Added: svn:eol-style</h4></div>
<a id="trunkLayoutTestsplatformiossimulatormathmlpresentationmenclosenotationdefaultlongdivexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/ios-simulator/mathml/presentation/menclose-notation-default-longdiv-expected.txt (199979 => 199980)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/mathml/presentation/menclose-notation-default-longdiv-expected.txt        2016-04-25 07:39:13 UTC (rev 199979)
+++ trunk/LayoutTests/platform/ios-simulator/mathml/presentation/menclose-notation-default-longdiv-expected.txt        2016-04-25 09:46:31 UTC (rev 199980)
</span><span class="lines">@@ -1,11 +1,11 @@
</span><span class="cx"> layer at (0,0) size 800x600
</span><span class="cx">   RenderView at (0,0) size 800x600
</span><del>-layer at (0,0) size 800x93
-  RenderBlock {HTML} at (0,0) size 800x93
-    RenderBody {BODY} at (8,16) size 784x61
-      RenderBlock {P} at (0,0) size 784x61
-        RenderMathMLMath {math} at (0,0) size 102x56 [padding: 0 1 0 1]
-          RenderMathMLRow {mrow} at (1,0) size 100x56
-            RenderMathMLMenclose {menclose} at (0,0) size 100x56 [padding: 6 0 0 5]
-              RenderMathMLSpace {mspace} at (5,6) size 100x50 [bgcolor=#FF0000]
</del><ins>+layer at (0,0) size 800x91
+  RenderBlock {HTML} at (0,0) size 800x91
+    RenderBody {BODY} at (8,16) size 784x59
+      RenderBlock {P} at (0,0) size 784x59
+        RenderMathMLMath {math} at (0,0) size 114x58 [padding: 0 1 0 1]
+          RenderMathMLRow {mrow} at (1,0) size 112x58
+            RenderMathMLMenclose {menclose} at (0,0) size 112x58
+              RenderMathMLSpace {mspace} at (7,3) size 101x51 [bgcolor=#FF0000]
</ins><span class="cx">         RenderText {#text} at (0,0) size 0x0
</span></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatormathmlpresentationmenclosenotationvaluesexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator/mathml/presentation/menclose-notation-values-expected.txt (0 => 199980)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/mathml/presentation/menclose-notation-values-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator/mathml/presentation/menclose-notation-values-expected.txt        2016-04-25 09:46:31 UTC (rev 199980)
</span><span class="lines">@@ -0,0 +1,99 @@
</span><ins>+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x221
+  RenderBlock {HTML} at (0,0) size 800x221
+    RenderBody {BODY} at (8,8) size 784x205
+      RenderMathMLMath {math} at (0,8) size 114x58 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 112x58
+          RenderMathMLMenclose {menclose} at (0,0) size 112x58
+            RenderMathMLSpace {mspace} at (7,3) size 101x51 [bgcolor=#FF0000]
+      RenderText {#text} at (113,47) size 5x19
+        text run at (113,47) width 5: &quot; &quot;
+      RenderMathMLMath {math} at (117,8) size 110x58 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 108x58
+          RenderMathMLMenclose {menclose} at (0,0) size 108x58
+            RenderMathMLSpace {mspace} at (3,3) size 101x51 [bgcolor=#FF0000]
+      RenderText {#text} at (226,47) size 5x19
+        text run at (226,47) width 5: &quot; &quot;
+      RenderMathMLMath {math} at (230,8) size 111x58 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 108x58
+          RenderMathMLMenclose {menclose} at (0,0) size 108x58
+            RenderMathMLSpace {mspace} at (3,3) size 101x51 [bgcolor=#FF0000]
+      RenderText {#text} at (340,47) size 5x19
+        text run at (340,47) width 5: &quot; &quot;
+      RenderMathMLMath {math} at (344,8) size 111x58 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 108x58
+          RenderMathMLMenclose {menclose} at (0,0) size 108x58
+            RenderMathMLSpace {mspace} at (3,3) size 101x51 [bgcolor=#FF0000]
+      RenderText {#text} at (454,47) size 5x19
+        text run at (454,47) width 5: &quot; &quot;
+      RenderMathMLMath {math} at (458,0) size 147x74 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 144x74
+          RenderMathMLMenclose {menclose} at (0,0) size 144x74
+            RenderMathMLSpace {mspace} at (21,11) size 101x51 [bgcolor=#FF0000]
+      RenderText {#text} at (604,47) size 5x19
+        text run at (604,47) width 5: &quot; &quot;
+      RenderMathMLMath {math} at (608,9) size 107x57 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 104x57
+          RenderMathMLMenclose {menclose} at (0,0) size 104x57
+            RenderMathMLSpace {mspace} at (3,3) size 101x51 [bgcolor=#FF0000]
+      RenderText {#text} at (0,0) size 0x0
+      RenderMathMLMath {math} at (0,74) size 106x57 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 104x57
+          RenderMathMLMenclose {menclose} at (0,0) size 104x57
+            RenderMathMLSpace {mspace} at (0,3) size 100x51 [bgcolor=#FF0000]
+      RenderText {#text} at (105,112) size 5x19
+        text run at (105,112) width 5: &quot; &quot;
+      RenderMathMLMath {math} at (109,73) size 110x54 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 107x54
+          RenderMathMLMenclose {menclose} at (0,0) size 107x54
+            RenderMathMLSpace {mspace} at (3,3) size 101x51 [bgcolor=#FF0000]
+      RenderText {#text} at (218,112) size 5x19
+        text run at (218,112) width 5: &quot; &quot;
+      RenderMathMLMath {math} at (222,77) size 109x54 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 107x54
+          RenderMathMLMenclose {menclose} at (0,0) size 107x54
+            RenderMathMLSpace {mspace} at (3,0) size 101x50 [bgcolor=#FF0000]
+      RenderText {#text} at (330,112) size 5x19
+        text run at (330,112) width 5: &quot; &quot;
+      RenderMathMLMath {math} at (334,77) size 104x51 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 101x51
+          RenderMathMLMenclose {menclose} at (0,0) size 101x51
+            RenderMathMLSpace {mspace} at (0,0) size 101x51 [bgcolor=#FF0000]
+      RenderText {#text} at (437,112) size 5x19
+        text run at (437,112) width 5: &quot; &quot;
+      RenderMathMLMath {math} at (441,77) size 104x51 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 101x51
+          RenderMathMLMenclose {menclose} at (0,0) size 101x51
+            RenderMathMLSpace {mspace} at (0,0) size 101x51 [bgcolor=#FF0000]
+      RenderText {#text} at (544,112) size 5x19
+        text run at (544,112) width 5: &quot; &quot;
+      RenderMathMLMath {math} at (548,77) size 103x50 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 100x50
+          RenderMathMLMenclose {menclose} at (0,0) size 100x50
+            RenderMathMLSpace {mspace} at (0,0) size 100x50 [bgcolor=#FF0000]
+      RenderText {#text} at (650,112) size 5x19
+        text run at (650,112) width 5: &quot; &quot;
+      RenderMathMLMath {math} at (654,77) size 103x50 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 100x50
+          RenderMathMLMenclose {menclose} at (0,0) size 100x50
+            RenderMathMLSpace {mspace} at (0,0) size 100x50 [bgcolor=#FF0000]
+      RenderText {#text} at (0,0) size 0x0
+      RenderMathMLMath {math} at (0,141) size 110x58 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 108x58
+          RenderMathMLMenclose {menclose} at (0,0) size 108x58
+            RenderMathMLSpace {mspace} at (3,3) size 101x51 [bgcolor=#FF0000]
+      RenderText {#text} at (109,179) size 5x19
+        text run at (109,179) width 5: &quot; &quot;
+      RenderText {#text} at (0,0) size 0x0
+      RenderMathMLMath {math} at (113,132) size 146x74 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 144x74
+          RenderMathMLMenclose {menclose} at (0,0) size 144x74
+            RenderMathMLSpace {mspace} at (21,11) size 101x51 [bgcolor=#FF0000]
+      RenderText {#text} at (258,179) size 5x19
+        text run at (258,179) width 5: &quot; &quot;
+      RenderMathMLMath {math} at (262,140) size 111x58 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 108x58
+          RenderMathMLMenclose {menclose} at (0,0) size 108x58
+            RenderMathMLSpace {mspace} at (3,3) size 101x51 [bgcolor=#FF0000]
+      RenderText {#text} at (0,0) size 0x0
</ins><span class="cx">Property changes on: trunk/LayoutTests/platform/ios-simulator/mathml/presentation/menclose-notation-values-expected.txt
</span><span class="cx">___________________________________________________________________
</span></span></pre></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4>Added: svn:eol-style</h4></div>
<a id="trunkLayoutTestsplatformmacmathmlpresentationmenclosenotationdefaultlongdivexpectedpng"></a>
<div class="binary"><h4>Modified: trunk/LayoutTests/platform/mac/mathml/presentation/menclose-notation-default-longdiv-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacmathmlpresentationmenclosenotationdefaultlongdivexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/mathml/presentation/menclose-notation-default-longdiv-expected.txt (199979 => 199980)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/mathml/presentation/menclose-notation-default-longdiv-expected.txt        2016-04-25 07:39:13 UTC (rev 199979)
+++ trunk/LayoutTests/platform/mac/mathml/presentation/menclose-notation-default-longdiv-expected.txt        2016-04-25 09:46:31 UTC (rev 199980)
</span><span class="lines">@@ -1,11 +1,11 @@
</span><span class="cx"> layer at (0,0) size 800x600
</span><span class="cx">   RenderView at (0,0) size 800x600
</span><del>-layer at (0,0) size 800x92
-  RenderBlock {HTML} at (0,0) size 800x92
-    RenderBody {BODY} at (8,16) size 784x60
-      RenderBlock {P} at (0,0) size 784x60
-        RenderMathMLMath {math} at (0,0) size 102x56 [padding: 0 1 0 1]
-          RenderMathMLRow {mrow} at (1,0) size 100x56
-            RenderMathMLMenclose {menclose} at (0,0) size 100x56 [padding: 6 0 0 5]
-              RenderMathMLSpace {mspace} at (5,6) size 100x50 [bgcolor=#FF0000]
</del><ins>+layer at (0,0) size 800x90
+  RenderBlock {HTML} at (0,0) size 800x90
+    RenderBody {BODY} at (8,16) size 784x58
+      RenderBlock {P} at (0,0) size 784x58
+        RenderMathMLMath {math} at (0,0) size 114x58 [padding: 0 1 0 1]
+          RenderMathMLRow {mrow} at (1,0) size 112x58
+            RenderMathMLMenclose {menclose} at (0,0) size 112x58
+              RenderMathMLSpace {mspace} at (7,3) size 101x51 [bgcolor=#FF0000]
</ins><span class="cx">         RenderText {#text} at (0,0) size 0x0
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacmathmlpresentationmenclosenotationvaluesexpectedpng"></a>
<div class="binary"><h4>Added: trunk/LayoutTests/platform/mac/mathml/presentation/menclose-notation-values-expected.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx">Property changes on: trunk/LayoutTests/platform/mac/mathml/presentation/menclose-notation-values-expected.png
</span><span class="cx">___________________________________________________________________
</span><a id="svnexecutable"></a>
<div class="addfile"><h4>Added: svn:executable</h4></div>
<a id="svnmimetype"></a>
<div class="addfile"><h4>Added: svn:mime-type</h4></div>
<a id="trunkLayoutTestsplatformmacmathmlpresentationmenclosenotationvaluesexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/mac/mathml/presentation/menclose-notation-values-expected.txt (0 => 199980)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/mathml/presentation/menclose-notation-values-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/mac/mathml/presentation/menclose-notation-values-expected.txt        2016-04-25 09:46:31 UTC (rev 199980)
</span><span class="lines">@@ -0,0 +1,99 @@
</span><ins>+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x220
+  RenderBlock {HTML} at (0,0) size 800x220
+    RenderBody {BODY} at (8,8) size 784x204
+      RenderMathMLMath {math} at (0,8) size 114x58 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 112x58
+          RenderMathMLMenclose {menclose} at (0,0) size 112x58
+            RenderMathMLSpace {mspace} at (7,3) size 101x51 [bgcolor=#FF0000]
+      RenderText {#text} at (113,48) size 5x18
+        text run at (113,48) width 5: &quot; &quot;
+      RenderMathMLMath {math} at (117,8) size 110x58 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 108x58
+          RenderMathMLMenclose {menclose} at (0,0) size 108x58
+            RenderMathMLSpace {mspace} at (3,3) size 101x51 [bgcolor=#FF0000]
+      RenderText {#text} at (226,48) size 5x18
+        text run at (226,48) width 5: &quot; &quot;
+      RenderMathMLMath {math} at (230,8) size 111x58 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 108x58
+          RenderMathMLMenclose {menclose} at (0,0) size 108x58
+            RenderMathMLSpace {mspace} at (3,3) size 101x51 [bgcolor=#FF0000]
+      RenderText {#text} at (340,48) size 5x18
+        text run at (340,48) width 5: &quot; &quot;
+      RenderMathMLMath {math} at (344,8) size 111x58 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 108x58
+          RenderMathMLMenclose {menclose} at (0,0) size 108x58
+            RenderMathMLSpace {mspace} at (3,3) size 101x51 [bgcolor=#FF0000]
+      RenderText {#text} at (454,48) size 5x18
+        text run at (454,48) width 5: &quot; &quot;
+      RenderMathMLMath {math} at (458,0) size 147x74 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 144x74
+          RenderMathMLMenclose {menclose} at (0,0) size 144x74
+            RenderMathMLSpace {mspace} at (21,11) size 101x51 [bgcolor=#FF0000]
+      RenderText {#text} at (604,48) size 5x18
+        text run at (604,48) width 5: &quot; &quot;
+      RenderMathMLMath {math} at (608,9) size 107x57 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 104x57
+          RenderMathMLMenclose {menclose} at (0,0) size 104x57
+            RenderMathMLSpace {mspace} at (3,3) size 101x51 [bgcolor=#FF0000]
+      RenderText {#text} at (0,0) size 0x0
+      RenderMathMLMath {math} at (0,74) size 106x57 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 104x57
+          RenderMathMLMenclose {menclose} at (0,0) size 104x57
+            RenderMathMLSpace {mspace} at (0,3) size 100x51 [bgcolor=#FF0000]
+      RenderText {#text} at (105,113) size 5x18
+        text run at (105,113) width 5: &quot; &quot;
+      RenderMathMLMath {math} at (109,73) size 110x54 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 107x54
+          RenderMathMLMenclose {menclose} at (0,0) size 107x54
+            RenderMathMLSpace {mspace} at (3,3) size 101x51 [bgcolor=#FF0000]
+      RenderText {#text} at (218,113) size 5x18
+        text run at (218,113) width 5: &quot; &quot;
+      RenderMathMLMath {math} at (222,77) size 109x54 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 107x54
+          RenderMathMLMenclose {menclose} at (0,0) size 107x54
+            RenderMathMLSpace {mspace} at (3,0) size 101x50 [bgcolor=#FF0000]
+      RenderText {#text} at (330,113) size 5x18
+        text run at (330,113) width 5: &quot; &quot;
+      RenderMathMLMath {math} at (334,77) size 104x51 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 101x51
+          RenderMathMLMenclose {menclose} at (0,0) size 101x51
+            RenderMathMLSpace {mspace} at (0,0) size 101x51 [bgcolor=#FF0000]
+      RenderText {#text} at (437,113) size 5x18
+        text run at (437,113) width 5: &quot; &quot;
+      RenderMathMLMath {math} at (441,77) size 104x51 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 101x51
+          RenderMathMLMenclose {menclose} at (0,0) size 101x51
+            RenderMathMLSpace {mspace} at (0,0) size 101x51 [bgcolor=#FF0000]
+      RenderText {#text} at (544,113) size 5x18
+        text run at (544,113) width 5: &quot; &quot;
+      RenderMathMLMath {math} at (548,77) size 103x50 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 100x50
+          RenderMathMLMenclose {menclose} at (0,0) size 100x50
+            RenderMathMLSpace {mspace} at (0,0) size 100x50 [bgcolor=#FF0000]
+      RenderText {#text} at (650,113) size 5x18
+        text run at (650,113) width 5: &quot; &quot;
+      RenderMathMLMath {math} at (654,77) size 103x50 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 100x50
+          RenderMathMLMenclose {menclose} at (0,0) size 100x50
+            RenderMathMLSpace {mspace} at (0,0) size 100x50 [bgcolor=#FF0000]
+      RenderText {#text} at (0,0) size 0x0
+      RenderMathMLMath {math} at (0,140) size 110x58 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 108x58
+          RenderMathMLMenclose {menclose} at (0,0) size 108x58
+            RenderMathMLSpace {mspace} at (3,3) size 101x51 [bgcolor=#FF0000]
+      RenderText {#text} at (109,179) size 5x18
+        text run at (109,179) width 5: &quot; &quot;
+      RenderText {#text} at (0,0) size 0x0
+      RenderMathMLMath {math} at (113,131) size 146x74 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 144x74
+          RenderMathMLMenclose {menclose} at (0,0) size 144x74
+            RenderMathMLSpace {mspace} at (21,11) size 101x51 [bgcolor=#FF0000]
+      RenderText {#text} at (258,179) size 5x18
+        text run at (258,179) width 5: &quot; &quot;
+      RenderMathMLMath {math} at (262,139) size 111x58 [padding: 0 1 0 1]
+        RenderMathMLRow {mrow} at (1,0) size 108x58
+          RenderMathMLMenclose {menclose} at (0,0) size 108x58
+            RenderMathMLSpace {mspace} at (3,3) size 101x51 [bgcolor=#FF0000]
+      RenderText {#text} at (0,0) size 0x0
</ins><span class="cx">Property changes on: trunk/LayoutTests/platform/mac/mathml/presentation/menclose-notation-values-expected.txt
</span><span class="cx">___________________________________________________________________
</span></span></pre></div>
<a id="svnexecutable"></a>
<div class="addfile"><h4>Added: svn:executable</h4></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4>Added: svn:eol-style</h4></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (199979 => 199980)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-04-25 07:39:13 UTC (rev 199979)
+++ trunk/Source/WebCore/ChangeLog        2016-04-25 09:46:31 UTC (rev 199980)
</span><span class="lines">@@ -1,5 +1,83 @@
</span><span class="cx"> 2016-04-25  Frederic Wang  &lt;fwang@igalia.com&gt;
</span><span class="cx"> 
</span><ins>+        Refactor RenderMathMLMenclose.
+        https://bugs.webkit.org/show_bug.cgi?id=155019
+
+        Reviewed by Sergio Villar Senin.
+
+        Tests: mathml/presentation/menclose-notation-equivalence.html
+               mathml/presentation/menclose-notation-values.html
+
+        We rewrite RenderMathMLMenclose so that layout functions correctly override the
+        behavior of RenderMathMLRow. We try and rely on the draft  of the MathML in HTML5
+        implementation note, to make easier to get consistency with other rendering engines
+        in the future. All notations are now drawn with GraphicContext functions instead of
+        mixing them with CSS style. To save memory space, the list of known notations are
+        now saved on a short integer using bit masks instead of a vector of string names.
+        Finally, we remove support for the radical notation so that we no longer need to
+        create an anonymous RenderMathMLRoot.
+
+        * mathml/MathMLMencloseElement.cpp: Remove code for some special notations and just
+        reimplement parsing of the notation attribute.
+        (WebCore::MathMLMencloseElement::MathMLMencloseElement): By default, the notation is longdiv.
+        (WebCore::MathMLMencloseElement::parseAttribute): By default, the list of notation is empty.
+        If there is no notation attribute, the default value longdiv is used.
+        Otherwise, we parse the notation attribute and add each notation, using some equivalences
+        for box, actuarial and madruwb.
+        (WebCore::MathMLMencloseElement::isPresentationAttribute): Deleted. No need to define
+        specific style for some notation.
+        (WebCore::MathMLMencloseElement::finishParsingChildren): Deleted. No need to add an
+        anonymous square root.
+        (WebCore::MathMLMencloseElement::collectStyleForPresentationAttribute): Deleted. No need to
+        define specific style for some notation.
+        (WebCore::MathMLMencloseElement::longDivLeftPadding): Deleted. RenderMathMLMenclose uses an
+        arbitrary size instead of measure a glyph.
+        * mathml/MathMLMencloseElement.h: Define simple bit mask for each notation, add a short
+        integer to store the list of notations together with helper functions. Remove old code.
+        * rendering/mathml/RenderMathMLMenclose.cpp: Rewrite RenderMathMLMenclose so that layout
+        functions correctly override the behavior of RenderMathMLRow.
+        (WebCore::RenderMathMLMenclose::RenderMathMLMenclose): Init m_ascent to 0.
+        (WebCore::RenderMathMLMenclose::ruleThickness): For now, we use the fallback value used by
+        for other bars. We may refine that in the future.
+        (WebCore::RenderMathMLMenclose::getSpaceAroundContent): Helper function to retrieve the
+        space to add around the content, depending on the notations specified. Note that for
+        notation circle, this spacing depends on the content size.
+        (WebCore::RenderMathMLMenclose::computePreferredLogicalWidths): Reimplement this function.
+        This is just adding left/right spacing around the content.
+        (WebCore::RenderMathMLMenclose::layoutBlock): Reimplement this function. We do the normal
+        RenderMathMLRow layout, adjust spacing and child position and
+        calculate m_ascent and m_contentRect.
+        (WebCore::RenderMathMLMenclose::firstLineBaseline): Implement this function.
+        We just return m_ascent.
+        (WebCore::drawLine): Helper function to draw a line using strokePath.
+        (WebCore::RenderMathMLMenclose::paint): We reimplement this function to draw
+        all notations using GraphicContext.
+        (WebCore::RenderMathMLMenclose::addChild): Deleted. No need to manage anonymous renderers.
+        (WebCore::RenderMathMLMenclose::updateLogicalHeight): Deleted. Height is now calculated
+        in layoutBlock.
+        (WebCore::RenderMathMLMenclose::checkNotationalValuesValidity): Deleted.
+        * rendering/mathml/RenderMathMLMenclose.h: Update member definitions.
+        * rendering/mathml/RenderMathMLRoot.cpp: We no longer need anonymous roots.
+        (WebCore::RenderMathMLRoot::RenderMathMLRoot): Deleted.
+        * rendering/mathml/RenderMathMLRoot.h: We no longer need anonymous roots.
+        * rendering/mathml/RenderMathMLRow.cpp: Allow to get the exact metrics of the chid row,
+        for use in RenderMathMLRoot.
+        (WebCore::RenderMathMLRow::computeLineVerticalStretch): rename parameters.
+        (WebCore::RenderMathMLRow::layoutRowItems): Set parameters to the final ascent, descent and
+        logical width of the chid row. Set the temporary logical width for RenderMathMenclose before
+        laying the children out.
+        (WebCore::RenderMathMLRow::layoutBlock): Rename parameters ; add a dummy logicalWidth
+        parameter.
+        * rendering/mathml/RenderMathMLRow.h: Make some functions accessible or overridable by
+        RenderMathMLRoot. Make layoutRowItems return the final ascent, descent and logical width
+        after the chid row is laid out.
+        * rendering/mathml/RenderMathMLSquareRoot.cpp: We no longer need anonymous roots.
+        (WebCore::RenderMathMLSquareRoot::RenderMathMLSquareRoot): Deleted.
+        (WebCore::RenderMathMLSquareRoot::createAnonymousWithParentRenderer): Deleted.
+        * rendering/mathml/RenderMathMLSquareRoot.h: We no longer need anonymous roots.
+
+2016-04-25  Frederic Wang  &lt;fwang@igalia.com&gt;
+
</ins><span class="cx">         Minor refactoring in RenderMathMLOperator
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=156906
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoremathmlMathMLMencloseElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/mathml/MathMLMencloseElement.cpp (199979 => 199980)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/mathml/MathMLMencloseElement.cpp        2016-04-25 07:39:13 UTC (rev 199979)
+++ trunk/Source/WebCore/mathml/MathMLMencloseElement.cpp        2016-04-25 09:46:31 UTC (rev 199980)
</span><span class="lines">@@ -1,5 +1,6 @@
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2014 Gurpreet Kaur (k.gurpreet@samsung.com). All rights reserved.
</span><ins>+ * Copyright (C) 2016 Igalia S.L.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -29,20 +30,16 @@
</span><span class="cx"> #include &quot;MathMLMencloseElement.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;MathMLNames.h&quot;
</span><del>-#include &quot;RenderElement.h&quot;
</del><span class="cx"> #include &quot;RenderMathMLMenclose.h&quot;
</span><del>-#include &quot;RenderObject.h&quot;
-#include &quot;TextRun.h&quot;
-#include &lt;wtf/Ref.h&gt;
-#include &lt;wtf/text/StringBuilder.h&gt;
</del><span class="cx"> 
</span><del>-
</del><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> MathMLMencloseElement::MathMLMencloseElement(const QualifiedName&amp; tagName, Document&amp; document)
</span><span class="cx">     : MathMLInlineContainerElement(tagName, document)
</span><del>-    , m_isRadicalValue(false)
</del><span class="cx"> {
</span><ins>+    // By default we draw a longdiv.
+    clearNotations();
+    addNotation(LongDiv);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Ref&lt;MathMLMencloseElement&gt; MathMLMencloseElement::create(const QualifiedName&amp; tagName, Document&amp; document)
</span><span class="lines">@@ -55,89 +52,60 @@
</span><span class="cx">     return createRenderer&lt;RenderMathMLMenclose&gt;(*this, WTFMove(style));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool MathMLMencloseElement::isPresentationAttribute(const QualifiedName&amp; name) const
</del><ins>+void MathMLMencloseElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</ins><span class="cx"> {
</span><del>-    if (name == MathMLNames::notationAttr)
-        return true;
-    return MathMLElement::isPresentationAttribute(name);
-}
-
-void MathMLMencloseElement::finishParsingChildren()
-{
-    MathMLInlineContainerElement::finishParsingChildren();
-    // When notation value is a radical and menclose does not have any child 
-    // then we add anonymous squareroot child to menclose so that square root
-    // symbol can be rendered.
-    if (m_isRadicalValue &amp;&amp; !firstElementChild())
-        renderer()-&gt;addChild(nullptr, nullptr);
-}
-
-void MathMLMencloseElement::collectStyleForPresentationAttribute(const QualifiedName&amp; name, const AtomicString&amp; value, MutableStyleProperties&amp; style)
-{
-    String val = value;
-    if (val.isEmpty())
-        return;
</del><span class="cx">     if (name == MathMLNames::notationAttr) {
</span><del>-        val.split(' ', m_notationValues);
-        size_t notationValueSize = m_notationValues.size();
-        for (size_t i = 0; i &lt; notationValueSize; i++) {
-            if (m_notationValues[i] == &quot;top&quot; || m_notationValues[i] == &quot;longdiv&quot;) {
-                if (m_notationValues[i] == &quot;longdiv&quot;)
-                    addPropertyToPresentationAttributeStyle(style, CSSPropertyPaddingLeft, longDivLeftPadding());
-                addPropertyToPresentationAttributeStyle(style, CSSPropertyBorderTopStyle, &quot;solid&quot;);
-                addPropertyToPresentationAttributeStyle(style, CSSPropertyBorderTopWidth, &quot;thin&quot;);
-                addPropertyToPresentationAttributeStyle(style, CSSPropertyPaddingTop, &quot;.3ex&quot;);
-            } else if (m_notationValues[i] == &quot;bottom&quot;) {
-                addPropertyToPresentationAttributeStyle(style, CSSPropertyBorderBottomStyle, &quot;solid&quot;);
-                addPropertyToPresentationAttributeStyle(style, CSSPropertyBorderBottomWidth, &quot;thin&quot;);
-                addPropertyToPresentationAttributeStyle(style, CSSPropertyPaddingBottom, &quot;.3ex&quot;);
-            } else if (m_notationValues[i] == &quot;left&quot;) {
-                addPropertyToPresentationAttributeStyle(style, CSSPropertyBorderLeftStyle, &quot;solid&quot;);
-                addPropertyToPresentationAttributeStyle(style, CSSPropertyBorderLeftWidth, &quot;thin&quot;);
-                addPropertyToPresentationAttributeStyle(style, CSSPropertyPaddingLeft, &quot;.3ex&quot;);
-            } else if (m_notationValues[i] == &quot;right&quot;) {
-                addPropertyToPresentationAttributeStyle(style, CSSPropertyBorderRightStyle, &quot;solid&quot;);
-                addPropertyToPresentationAttributeStyle(style, CSSPropertyBorderRightWidth, &quot;thin&quot;);
-                addPropertyToPresentationAttributeStyle(style, CSSPropertyPaddingRight, &quot;.3ex&quot;);
-            } else if (m_notationValues[i] == &quot;box&quot; || m_notationValues[i] == &quot;roundedbox&quot;) {
-                addPropertyToPresentationAttributeStyle(style, CSSPropertyBorderStyle, &quot;solid&quot;);
-                addPropertyToPresentationAttributeStyle(style, CSSPropertyBorderWidth, &quot;thin&quot;);
-                addPropertyToPresentationAttributeStyle(style, CSSPropertyPadding, &quot;.3ex&quot;);
-                if (m_notationValues[i] == &quot;roundedbox&quot;)
-                    addPropertyToPresentationAttributeStyle(style, CSSPropertyBorderRadius, ASCIILiteral(&quot;5px&quot;));
-            } else if (m_notationValues[i] == &quot;actuarial&quot; || m_notationValues[i] == &quot;madruwb&quot;) {
-                addPropertyToPresentationAttributeStyle(style, CSSPropertyBorderRightStyle, &quot;solid&quot;);
-                addPropertyToPresentationAttributeStyle(style, CSSPropertyBorderRightWidth, &quot;thin&quot;);
-                addPropertyToPresentationAttributeStyle(style, CSSPropertyPaddingRight, &quot;.3ex&quot;);
-                if (m_notationValues[i] == &quot;actuarial&quot;) {
-                    addPropertyToPresentationAttributeStyle(style, CSSPropertyBorderTopStyle, &quot;solid&quot;);
-                    addPropertyToPresentationAttributeStyle(style, CSSPropertyBorderTopWidth, &quot;thin&quot;);
-                    addPropertyToPresentationAttributeStyle(style, CSSPropertyPaddingTop, &quot;.3ex&quot;);
-                } else if (m_notationValues[i] == &quot;madruwb&quot;) {
-                    addPropertyToPresentationAttributeStyle(style, CSSPropertyBorderBottomStyle, &quot;solid&quot;);
-                    addPropertyToPresentationAttributeStyle(style, CSSPropertyBorderBottomWidth, &quot;thin&quot;);
-                    addPropertyToPresentationAttributeStyle(style, CSSPropertyPaddingBottom, &quot;.3ex&quot;);
-                }
-            } else if (m_notationValues[i] == &quot;radical&quot;)
-                m_isRadicalValue = true;
</del><ins>+        clearNotations();
+        if (!hasAttribute(name)) {
+            addNotation(LongDiv); // default value is longdiv
+            return;
</ins><span class="cx">         }
</span><del>-    } else
-        MathMLInlineContainerElement::collectStyleForPresentationAttribute(name, value, style);
-}
-
-
-String MathMLMencloseElement::longDivLeftPadding() const
-{
-    StringBuilder padding;
-    String closingBrace(&quot;)&quot;, String::ConstructFromLiteral);
-    TextRun run(closingBrace);
-    Node* node = parentNode();
-    if (node &amp;&amp; node-&gt;renderer()) {
-        const FontCascade&amp; font = node-&gt;renderer()-&gt;style().fontCascade();
-        padding.appendNumber(font.width(run));
-        padding.appendLiteral(&quot;px&quot;);
</del><ins>+        Vector&lt;String&gt; notationsList;
+        String(value).split(' ', notationsList);
+        for (auto&amp; notation : notationsList) {
+            if (notation == &quot;longdiv&quot;) {
+                addNotation(LongDiv);
+            } else if (notation == &quot;roundedbox&quot;) {
+                addNotation(RoundedBox);
+            } else if (notation == &quot;circle&quot;) {
+                addNotation(Circle);
+            } else if (notation == &quot;left&quot;) {
+                addNotation(Left);
+            } else if (notation == &quot;right&quot;) {
+                addNotation(Right);
+            } else if (notation == &quot;top&quot;) {
+                addNotation(Top);
+            } else if (notation == &quot;bottom&quot;) {
+                addNotation(Bottom);
+            } else if (notation == &quot;updiagonalstrike&quot;) {
+                addNotation(UpDiagonalStrike);
+            } else if (notation == &quot;downdiagonalstrike&quot;) {
+                addNotation(DownDiagonalStrike);
+            } else if (notation == &quot;verticalstrike&quot;) {
+                addNotation(VerticalStrike);
+            } else if (notation == &quot;horizontalstrike&quot;) {
+                addNotation(HorizontalStrike);
+            } else if (notation == &quot;updiagonalarrow&quot;) {
+                addNotation(UpDiagonalArrow);
+            } else if (notation == &quot;phasorangle&quot;) {
+                addNotation(PhasorAngle);
+            } else if (notation == &quot;box&quot;) {
+                addNotation(Left);
+                addNotation(Right);
+                addNotation(Top);
+                addNotation(Bottom);
+            } else if (notation == &quot;actuarial&quot;) {
+                addNotation(Right);
+                addNotation(Top);
+            } else if (notation == &quot;madruwb&quot;) {
+                addNotation(Right);
+                addNotation(Bottom);
+            }
+        }
+        return;
</ins><span class="cx">     }
</span><del>-    return padding.toString();
</del><ins>+
+    MathMLInlineContainerElement::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoremathmlMathMLMencloseElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/mathml/MathMLMencloseElement.h (199979 => 199980)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/mathml/MathMLMencloseElement.h        2016-04-25 07:39:13 UTC (rev 199979)
+++ trunk/Source/WebCore/mathml/MathMLMencloseElement.h        2016-04-25 09:46:31 UTC (rev 199980)
</span><span class="lines">@@ -1,5 +1,6 @@
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2014 Gurpreet Kaur (k.gurpreet@samsung.com). All rights reserved.
</span><ins>+ * Copyright (C) 2016 Igalia S.L.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -27,6 +28,7 @@
</span><span class="cx"> #define MathMLMencloseElement_h
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(MATHML)
</span><ins>+#include &quot;Element.h&quot;
</ins><span class="cx"> #include &quot;MathMLInlineContainerElement.h&quot;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -34,20 +36,32 @@
</span><span class="cx"> class MathMLMencloseElement final: public MathMLInlineContainerElement {
</span><span class="cx"> public:
</span><span class="cx">     static Ref&lt;MathMLMencloseElement&gt; create(const QualifiedName&amp; tagName, Document&amp;);
</span><del>-    const Vector&lt;String&gt;&amp; notationValues() const { return m_notationValues; }
-    bool isRadical() const { return m_isRadicalValue; }
-    String longDivLeftPadding() const;
-    bool isDefaultLongDiv() const { return !hasAttribute(MathMLNames::notationAttr); }
</del><ins>+    void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) final;
</ins><span class="cx"> 
</span><ins>+    enum MencloseNotationFlag {
+        LongDiv = 1 &lt;&lt; 1,
+        RoundedBox = 1 &lt;&lt; 2,
+        Circle = 1 &lt;&lt; 3,
+        Left = 1 &lt;&lt; 4,
+        Right = 1 &lt;&lt; 5,
+        Top = 1 &lt;&lt; 6,
+        Bottom = 1 &lt;&lt; 7,
+        UpDiagonalStrike = 1 &lt;&lt; 8,
+        DownDiagonalStrike = 1 &lt;&lt; 9,
+        VerticalStrike = 1 &lt;&lt; 10,
+        HorizontalStrike = 1 &lt;&lt; 11,
+        UpDiagonalArrow = 1 &lt;&lt; 12, // FIXME: updiagonalarrow is not implemented. See http://wkb.ug/127466
+        PhasorAngle = 1 &lt;&lt; 13 // FIXME: phasorangle is not implemented. See http://wkb.ug/127466
+        // We do not implement the Radical notation. Authors should instead use the &lt;msqrt&gt; element.
+    };
+    bool hasNotation(MencloseNotationFlag notationFlag) const { return m_notationFlags &amp; notationFlag; }
+
</ins><span class="cx"> private:
</span><span class="cx">     MathMLMencloseElement(const QualifiedName&amp;, Document&amp;);
</span><del>-    RenderPtr&lt;RenderElement&gt; createElementRenderer(std::unique_ptr&lt;RenderStyle&gt;, const RenderTreePosition&amp;) override;
-    bool isPresentationAttribute(const QualifiedName&amp;) const override;
-    void collectStyleForPresentationAttribute(const QualifiedName&amp;, const AtomicString&amp;, MutableStyleProperties&amp;) override;
-    void finishParsingChildren() override;
-
-    Vector&lt;String&gt; m_notationValues;
-    bool m_isRadicalValue;
</del><ins>+    RenderPtr&lt;RenderElement&gt; createElementRenderer(std::unique_ptr&lt;RenderStyle&gt;, const RenderTreePosition&amp;) final;
+    void clearNotations() { m_notationFlags = 0; }
+    void addNotation(MencloseNotationFlag notationFlag) { m_notationFlags |= notationFlag; }
+    unsigned short m_notationFlags;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingmathmlRenderMathMLMenclosecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/mathml/RenderMathMLMenclose.cpp (199979 => 199980)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/mathml/RenderMathMLMenclose.cpp        2016-04-25 07:39:13 UTC (rev 199979)
+++ trunk/Source/WebCore/rendering/mathml/RenderMathMLMenclose.cpp        2016-04-25 09:46:31 UTC (rev 199980)
</span><span class="lines">@@ -1,5 +1,6 @@
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2014 Gurpreet Kaur (k.gurpreet@samsung.com). All rights reserved.
</span><ins>+ * Copyright (C) 2016 Igalia S.L.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -29,136 +30,315 @@
</span><span class="cx"> #include &quot;RenderMathMLMenclose.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;GraphicsContext.h&quot;
</span><del>-#include &quot;MathMLMencloseElement.h&quot;
</del><ins>+#include &quot;MathMLNames.h&quot;
</ins><span class="cx"> #include &quot;PaintInfo.h&quot;
</span><del>-#include &quot;RenderMathMLSquareRoot.h&quot;
</del><span class="cx"> #include &lt;wtf/MathExtras.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> using namespace MathMLNames;
</span><span class="cx"> 
</span><ins>+// The MathML in HTML5 implementation note suggests drawing the left part of longdiv with a parenthesis.
+// For now, we use a Bezier curve and this somewhat arbitrary value.
+const unsigned short longDivLeftSpace = 10;
+
</ins><span class="cx"> RenderMathMLMenclose::RenderMathMLMenclose(Element&amp; element, std::unique_ptr&lt;RenderStyle&gt; style)
</span><span class="cx">     : RenderMathMLRow(element, WTFMove(style))
</span><ins>+    , m_ascent(0)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void RenderMathMLMenclose::addChild(RenderObject* newChild, RenderObject* beforeChild)
</del><ins>+// This arbitrary thickness value is used for the parameter \xi_8 from the MathML in HTML5 implementation note.
+// For now, we take:
+// - OverbarVerticalGap = UnderbarVerticalGap = 3\xi_8
+// - OverbarRuleThickness = UnderbarRuleThickness = \xi_8
+// - OverbarExtraAscender = UnderbarExtraAscender = \xi_8
+// FIXME: OverBar and UnderBar parameters should be read from the MATH tables.
+// See https://bugs.webkit.org/show_bug.cgi?id=122297
+LayoutUnit RenderMathMLMenclose::ruleThickness() const
</ins><span class="cx"> {
</span><del>-    MathMLMencloseElement* menclose = downcast&lt;MathMLMencloseElement&gt;(element());
-    // Allow an anonymous RenderMathMLSquareRoot to handle drawing the radical
-    // notation, rather than duplicating the code needed to paint a root.
-    if (!firstChild() &amp;&amp; menclose-&gt;isRadical())        
-        RenderMathMLBlock::addChild(RenderMathMLSquareRoot::createAnonymousWithParentRenderer(*this).leakPtr());
-    
-    if (newChild) {
-        if (firstChild() &amp;&amp; menclose-&gt;isRadical())
-            downcast&lt;RenderElement&gt;(*firstChild()).addChild(newChild, beforeChild &amp;&amp; beforeChild-&gt;parent() == firstChild() ? beforeChild : nullptr);
-        else
-            RenderMathMLBlock::addChild(newChild, beforeChild);
</del><ins>+    return 0.05f * style().fontCascade().size();
+}
+
+void RenderMathMLMenclose::getSpaceAroundContent(LayoutUnit contentWidth, LayoutUnit contentHeight, LayoutUnit&amp; leftSpace, LayoutUnit&amp; rightSpace, LayoutUnit&amp; topSpace, LayoutUnit&amp; bottomSpace) const
+{
+    leftSpace = rightSpace = topSpace = bottomSpace = 0;
+
+    LayoutUnit thickness = ruleThickness();
+
+    // In the MathML in HTML5 implementation note, the &quot;left&quot; notation is described as follows:
+    // - left side is 3\xi_8 padding + \xi_8 border + \xi_8 margin = 5\xi_8
+    // - top space is Overbar Vertical Gap + Overbar Rule Thickness = 3\xi_8 + \xi_8 = 4\xi_8
+    // - bottom space is Underbar Vertical Gap + Underbar Rule Thickness = 3\xi_8 + \xi_8 = 4\xi_8
+    // The &quot;right&quot; notation is symmetric.
+    if (hasNotation(MathMLMencloseElement::Left))
+        leftSpace = std::max(leftSpace, 5 * thickness);
+    if (hasNotation(MathMLMencloseElement::Right))
+        rightSpace = std::max(rightSpace, 5 * thickness);
+    if (hasNotation(MathMLMencloseElement::Left) || hasNotation(MathMLMencloseElement::Right)) {
+        LayoutUnit extraSpace = 4 * thickness;
+        topSpace = std::max(topSpace, extraSpace);
+        bottomSpace = std::max(bottomSpace, extraSpace);
</ins><span class="cx">     }
</span><ins>+
+    // In the MathML in HTML5 implementation note, the &quot;top&quot; notation is described as follows:
+    // - left and right space are 4\xi_8
+    // - top side is Vertical Gap + Rule Thickness + Extra Ascender = 3\xi_8 + \xi_8 + \xi_8 = 5\xi_8
+    // The &quot;bottom&quot; notation is symmetric.
+    if (hasNotation(MathMLMencloseElement::Top))
+        topSpace = std::max(topSpace, 5 * thickness);
+    if (hasNotation(MathMLMencloseElement::Bottom))
+        bottomSpace = std::max(bottomSpace, 5 * thickness);
+    if (hasNotation(MathMLMencloseElement::Top) || hasNotation(MathMLMencloseElement::Bottom)) {
+        LayoutUnit extraSpace = 4 * thickness;
+        leftSpace = std::max(leftSpace, extraSpace);
+        rightSpace = std::max(rightSpace, extraSpace);
+    }
+
+    // For longdiv, we use our own rules for now:
+    // - top space is like &quot;top&quot; notation
+    // - bottom space is like &quot;bottom&quot; notation
+    // - right space is like &quot;right&quot; notation
+    // - left space is longDivLeftSpace * \xi_8
+    if (hasNotation(MathMLMencloseElement::LongDiv)) {
+        topSpace = std::max(topSpace, 5 * thickness);
+        bottomSpace = std::max(bottomSpace, 5 * thickness);
+        leftSpace = std::max(leftSpace, longDivLeftSpace * thickness);
+        rightSpace = std::max(rightSpace, 4 * thickness);
+    }
+
+    // In the MathML in HTML5 implementation note, the &quot;rounded&quot; notation is described as follows:
+    // - top/bottom/left/right side have 3\xi_8 padding + \xi_8 border + \xi_8 margin = 5\xi_8
+    if (hasNotation(MathMLMencloseElement::RoundedBox)) {
+        LayoutUnit extraSpace = 5 * thickness;
+        leftSpace = std::max(leftSpace, extraSpace);
+        rightSpace = std::max(rightSpace, extraSpace);
+        topSpace = std::max(topSpace, extraSpace);
+        bottomSpace = std::max(bottomSpace, extraSpace);
+    }
+
+    // In the MathML in HTML5 implementation note, the &quot;rounded&quot; notation is described as follows:
+    // - top/bottom/left/right spaces are \xi_8/2
+    if (hasNotation(MathMLMencloseElement::UpDiagonalStrike) || hasNotation(MathMLMencloseElement::DownDiagonalStrike)) {
+        LayoutUnit extraSpace = thickness / 2;
+        leftSpace = std::max(leftSpace, extraSpace);
+        rightSpace = std::max(rightSpace, extraSpace);
+        topSpace = std::max(topSpace, extraSpace);
+        bottomSpace = std::max(bottomSpace, extraSpace);
+    }
+
+    // In the MathML in HTML5 implementation note, the &quot;circle&quot; notation is described as follows:
+    // - We draw the ellipse of axes the axes of symmetry of this ink box
+    // - The radii of the ellipse are \sqrt{2}contentWidth/2 and \sqrt{2}contentHeight/2
+    // - The thickness of the ellipse is \xi_8
+    // - We add extra margin of \xi_8
+    // Then for example the top space is \sqrt{2}contentHeight/2 - contentHeight/2 + \xi_8/2 + \xi_8.
+    if (hasNotation(MathMLMencloseElement::Circle)) {
+        LayoutUnit extraSpace = (contentWidth * (sqrtOfTwoFloat - 1) + 3 * thickness) / 2;
+        leftSpace = std::max(leftSpace, extraSpace);
+        rightSpace = std::max(rightSpace, extraSpace);
+        extraSpace = (contentHeight * (sqrtOfTwoFloat - 1) + 3 * thickness) / 2;
+        topSpace = std::max(topSpace, extraSpace);
+        bottomSpace = std::max(bottomSpace, extraSpace);
+    }
+
+    // In the MathML in HTML5 implementation note, the &quot;vertical&quot; and &quot;horizontal&quot; notations do not add space around the content.
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RenderMathMLMenclose::computePreferredLogicalWidths()
</span><span class="cx"> {
</span><span class="cx">     ASSERT(preferredLogicalWidthsDirty());
</span><span class="cx"> 
</span><del>-    RenderMathMLBlock::computePreferredLogicalWidths();
-    const int paddingTop = 6;
</del><ins>+    RenderMathMLRow::computePreferredLogicalWidths();
</ins><span class="cx"> 
</span><del>-    MathMLMencloseElement* menclose = downcast&lt;MathMLMencloseElement&gt;(element());
-    const Vector&lt;String&gt;&amp; notationValues = menclose-&gt;notationValues();
-    size_t notationalValueSize = notationValues.size();
-    for (size_t i = 0; i &lt; notationalValueSize; i++) {
-        if (notationValues[i] == &quot;circle&quot;) {
-            m_minPreferredLogicalWidth = minPreferredLogicalWidth() * sqrtOfTwoFloat;
-            m_maxPreferredLogicalWidth = maxPreferredLogicalWidth() * sqrtOfTwoFloat;
-        }
-    }
</del><ins>+    LayoutUnit preferredWidth = m_maxPreferredLogicalWidth;
+    LayoutUnit leftSpace, rightSpace, dummy;
+    getSpaceAroundContent(preferredWidth, 0, leftSpace, rightSpace, dummy, dummy);
+    m_minPreferredLogicalWidth = m_maxPreferredLogicalWidth = leftSpace + preferredWidth + rightSpace;
</ins><span class="cx"> 
</span><del>-    if (menclose-&gt;isDefaultLongDiv()) {
-        style().setPaddingTop(Length(paddingTop, Fixed));
-        style().setPaddingLeft(Length(menclose-&gt;longDivLeftPadding().toInt(), Fixed));
-    }
</del><span class="cx">     setPreferredLogicalWidthsDirty(false);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void RenderMathMLMenclose::updateLogicalHeight()
</del><ins>+void RenderMathMLMenclose::layoutBlock(bool relayoutChildren, LayoutUnit)
</ins><span class="cx"> {
</span><del>-    MathMLMencloseElement* menclose = downcast&lt;MathMLMencloseElement&gt;(element());
-    const Vector&lt;String&gt;&amp; notationValues = menclose-&gt;notationValues();
-    size_t notationalValueSize = notationValues.size();
-    for (size_t i = 0; i &lt; notationalValueSize; i++)
-        if (notationValues[i] == &quot;circle&quot;)
-            setLogicalHeight(logicalHeight() * sqrtOfTwoFloat);
</del><ins>+    ASSERT(needsLayout());
+
+    if (!relayoutChildren &amp;&amp; simplifiedLayout())
+        return;
+
+    LayoutUnit contentAscent = 0;
+    LayoutUnit contentDescent = 0;
+    RenderMathMLRow::computeLineVerticalStretch(contentAscent, contentDescent);
+    RenderMathMLRow::layoutRowItems(contentAscent, contentDescent);
+    LayoutUnit contentWidth = logicalWidth();
+
+    LayoutUnit leftSpace, rightSpace, topSpace, bottomSpace;
+    getSpaceAroundContent(contentWidth, contentAscent + contentDescent, leftSpace, rightSpace, topSpace, bottomSpace);
+    setLogicalWidth(leftSpace + contentWidth + rightSpace);
+    m_ascent = topSpace + contentAscent;
+    LayoutUnit descent = contentDescent + bottomSpace;
+    LayoutPoint contentLocation(leftSpace, m_ascent - contentAscent);
+    for (RenderBox* child = firstChildBox(); child; child = child-&gt;nextSiblingBox())
+        child-&gt;setLocation(child-&gt;location() + contentLocation);
+
+    setLogicalHeight(m_ascent + descent);
+
+    m_contentRect = LayoutRect(leftSpace, topSpace, contentWidth, contentAscent + contentDescent);
+
+    clearNeedsLayout();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+Optional&lt;int&gt; RenderMathMLMenclose::firstLineBaseline() const
+{
+    return Optional&lt;int&gt;(static_cast&lt;int&gt;(lroundf(m_ascent)));
+}
+
+// GraphicsContext::drawLine does not seem appropriate to draw menclose lines.
+// To avoid unexpected behaviors and inconsistency with other notations, we just use strokePath.
+static void drawLine(PaintInfo&amp; info, const LayoutUnit&amp; xStart, const LayoutUnit&amp; yStart, const LayoutUnit&amp; xEnd, const LayoutUnit&amp; yEnd)
+{
+    Path line;
+    line.moveTo(LayoutPoint(xStart, yStart));
+    line.addLineTo(LayoutPoint(xEnd, yEnd));
+    info.context().strokePath(line);
+}
+
</ins><span class="cx"> void RenderMathMLMenclose::paint(PaintInfo&amp; info, const LayoutPoint&amp; paintOffset)
</span><span class="cx"> {
</span><del>-    RenderMathMLBlock::paint(info, paintOffset);
</del><ins>+    RenderMathMLRow::paint(info, paintOffset);
</ins><span class="cx"> 
</span><span class="cx">     if (info.context().paintingDisabled() || info.phase != PaintPhaseForeground || style().visibility() != VISIBLE)
</span><span class="cx">         return;
</span><del>-    
-    MathMLMencloseElement* menclose = downcast&lt;MathMLMencloseElement&gt;(element());
-    const Vector&lt;String&gt;&amp; notationValues = menclose-&gt;notationValues();
-    size_t notationalValueSize = notationValues.size();
-    bool isDefaultLongDiv = menclose-&gt;isDefaultLongDiv();
-    if ((notationalValueSize &amp;&amp; checkNotationalValuesValidity(notationValues)) || isDefaultLongDiv) {
-        IntRect rect = absoluteBoundingBoxRect();
-        int left = rect.x();
-        int top = rect.y();
-        int boxWidth = rect.width();
-        int boxHeight = rect.height();
-        int halfboxWidth = rect.width() / 2;
-        int halfboxHeight = rect.height() / 2;
</del><span class="cx"> 
</span><del>-        GraphicsContextStateSaver stateSaver(info.context());
-        info.context().setStrokeThickness(1);
-        info.context().setStrokeStyle(SolidStroke);
-        info.context().setStrokeColor(style().visitedDependentColor(CSSPropertyColor));
-        // TODO add support for notation value updiagonalarrow https://bugs.webkit.org/show_bug.cgi?id=127466
-        for (size_t i = 0; i &lt; notationalValueSize; i++) {
-            if (notationValues[i] == &quot;updiagonalstrike&quot;)
-                info.context().drawLine(IntPoint(left, top + boxHeight), IntPoint(left + boxWidth, top));
-            else if (notationValues[i] == &quot;downdiagonalstrike&quot;)
-                info.context().drawLine(IntPoint(left, top), IntPoint(left + boxWidth, top + boxHeight));
-            else if (notationValues[i] == &quot;verticalstrike&quot;)
-                info.context().drawLine(IntPoint(left + halfboxWidth, top), IntPoint(left + halfboxWidth, top + boxHeight));
-            else if (notationValues[i] == &quot;horizontalstrike&quot;)
-                info.context().drawLine(IntPoint(left, top + halfboxHeight), IntPoint(left + boxWidth, top + halfboxHeight));
-            else if (notationValues[i] == &quot;circle&quot;) {
-                info.context().setFillColor(Color::transparent);
-                info.context().drawEllipse(rect);
-            } else if (notationValues[i] == &quot;longdiv&quot;)
-                isDefaultLongDiv = true;
-        }
-        if (isDefaultLongDiv) {
-            Path root;
-            int midxPoint = 0;
-            root.moveTo(FloatPoint(left, top));
-            int childLeft = firstChild() ? firstChild()-&gt;absoluteBoundingBoxRect().x() : 0;
-            if (childLeft)
-                midxPoint= childLeft - left;
-            else
-                midxPoint = style().paddingLeft().value();
-            root.addBezierCurveTo(FloatPoint(left, top), FloatPoint(left + midxPoint, top + halfboxHeight), FloatPoint(left, top + boxHeight));
-            info.context().strokePath(root);
-            if (isDefaultLongDiv)
-                info.context().drawLine(IntPoint(left, top), IntPoint(left + boxWidth + midxPoint, top));
-        }
</del><ins>+    LayoutUnit thickness = ruleThickness();
+    GraphicsContextStateSaver stateSaver(info.context());
+
+    info.context().setStrokeThickness(thickness);
+    info.context().setStrokeStyle(SolidStroke);
+    info.context().setStrokeColor(style().visitedDependentColor(CSSPropertyColor));
+    info.context().setFillColor(Color::transparent);
+    info.applyTransform(AffineTransform().translate(paintOffset + location()));
+
+    // In the MathML in HTML5 implementation note, the &quot;left&quot; notation is described as follows:
+    // - center of the left vertical bar is at 3\xi_8 padding + \xi_8 border/2 = 7\xi_8/2
+    // - top space is Overbar Vertical Gap + Overbar Rule Thickness = 3\xi_8 + \xi_8 = 4\xi_8
+    // - bottom space is Underbar Vertical Gap + Underbar Rule Thickness = 3\xi_8 + \xi_8 = 4\xi_8
+    if (hasNotation(MathMLMencloseElement::Left)) {
+        LayoutUnit x = m_contentRect.x() - 7 * thickness / 2;
+        LayoutUnit yStart = m_contentRect.y() - 4 * thickness;
+        LayoutUnit yEnd = m_contentRect.maxY() + 4 * thickness;
+        drawLine(info, x, yStart, x, yEnd);
</ins><span class="cx">     }
</span><del>-}
</del><span class="cx"> 
</span><del>-bool RenderMathMLMenclose::checkNotationalValuesValidity(const Vector&lt;String&gt;&amp; attr) const
-{
-    size_t attrSize = attr.size();
-    for (size_t i = 0; i &lt; attrSize; i++) {
-        if (attr[i] == &quot;updiagonalstrike&quot; || attr[i] == &quot;downdiagonalstrike&quot; || attr[i] == &quot;horizontalstrike&quot; || attr[i] == &quot;verticalstrike&quot;
-            || attr[i] == &quot;circle&quot; || attr[i] == &quot;longdiv&quot;)
-            return true;
</del><ins>+    // In the MathML in HTML5 implementation note, the &quot;right&quot; notation is described as follows:
+    // - center of the right vertical bar is at 3\xi_8 padding + \xi_8 border/2 = 7\xi_8/2
+    // - top space is Overbar Vertical Gap + Overbar Rule Thickness = 3\xi_8 + \xi_8 = 4\xi_8
+    // - bottom space is Underbar Vertical Gap + Underbar Rule Thickness = 3\xi_8 + \xi_8 = 4\xi_8
+    if (hasNotation(MathMLMencloseElement::Right)) {
+        LayoutUnit x = m_contentRect.maxX() + 7 * thickness / 2;
+        LayoutUnit yStart = m_contentRect.y() - 4 * thickness;
+        LayoutUnit yEnd = m_contentRect.maxY() + 4 * thickness;
+        drawLine(info, x, yStart, x, yEnd);
</ins><span class="cx">     }
</span><del>-    return false;
</del><ins>+
+    // In the MathML in HTML5 implementation note, the &quot;vertical&quot; notation is horizontally centered.
+    if (hasNotation(MathMLMencloseElement::VerticalStrike)) {
+        LayoutUnit x = m_contentRect.x() + (m_contentRect.width() - thickness) / 2;
+        LayoutUnit yStart = m_contentRect.y();
+        LayoutUnit yEnd = m_contentRect.maxY();
+        drawLine(info, x, yStart, x, yEnd);
+    }
+
+    // In the MathML in HTML5 implementation note, the &quot;top&quot; notation is described as follows:
+    // - middle of the top horizontal bar is at Vertical Gap + Rule Thickness / 2 = 7\xi_8/2
+    // - left and right spaces have size 4\xi_8
+    if (hasNotation(MathMLMencloseElement::Top)) {
+        LayoutUnit y = m_contentRect.y() - 7 * thickness / 2;
+        LayoutUnit xStart = m_contentRect.x() - 4 * thickness;
+        LayoutUnit xEnd = m_contentRect.maxX() + 4 * thickness;
+        drawLine(info, xStart, y, xEnd, y);
+    }
+
+    // In the MathML in HTML5 implementation note, the &quot;bottom&quot; notation is described as follows:
+    // - middle of the bottom horizontal bar is at Vertical Gap + Rule Thickness / 2 = 7\xi_8/2
+    // - left and right spaces have size 4\xi_8
+    if (hasNotation(MathMLMencloseElement::Bottom)) {
+        LayoutUnit y = m_contentRect.maxY() + 7 * thickness / 2;
+        LayoutUnit xStart = m_contentRect.x() - 4 * thickness;
+        LayoutUnit xEnd = m_contentRect.maxX() + 4 * thickness;
+        drawLine(info, xStart, y, xEnd, y);
+    }
+
+    // In the MathML in HTML5 implementation note, the &quot;vertical&quot; notation is vertically centered.
+    if (hasNotation(MathMLMencloseElement::HorizontalStrike)) {
+        LayoutUnit y = m_contentRect.y() + (m_contentRect.height() - thickness) / 2;
+        LayoutUnit xStart = m_contentRect.x();
+        LayoutUnit xEnd = m_contentRect.maxX();
+        drawLine(info, xStart, y, xEnd, y);
+    }
+
+    // In the MathML in HTML5 implementation note, the &quot;updiagonalstrike&quot; goes from the bottom left corner
+    // to the top right corner.
+    if (hasNotation(MathMLMencloseElement::UpDiagonalStrike))
+        drawLine(info, m_contentRect.x(), m_contentRect.maxY(), m_contentRect.maxX(), m_contentRect.y());
+
+    // In the MathML in HTML5 implementation note, the &quot;downdiagonalstrike&quot; goes from the top left corner
+    // to the bottom right corner.
+    if (hasNotation(MathMLMencloseElement::DownDiagonalStrike))
+        drawLine(info, m_contentRect.x(), m_contentRect.y(), m_contentRect.maxX(), m_contentRect.maxY());
+
+    // In the MathML in HTML5 implementation note, the &quot;roundedbox&quot; has radii size 3\xi_8 and is obtained
+    // by inflating the content box by 3\xi_8 + \xi_8/2 = 7\xi_8/2
+    if (hasNotation(MathMLMencloseElement::RoundedBox)) {
+        LayoutSize radiiSize(3 * thickness, 3 * thickness);
+        RoundedRect::Radii radii(radiiSize, radiiSize, radiiSize, radiiSize);
+        RoundedRect roundedRect(m_contentRect, radii);
+        roundedRect.inflate(7 * thickness / 2);
+        Path path;
+        path.addRoundedRect(roundedRect);
+        info.context().strokePath(path);
+    }
+
+    // For longdiv, we use our own rules for now:
+    // - top space is like &quot;top&quot; notation
+    // - bottom space is like &quot;bottom&quot; notation
+    // - right space is like &quot;right&quot; notation
+    // - left space is longDivLeftSpace * \xi_8
+    // - We subtract half of the thickness from these spaces to obtain &quot;top&quot;, &quot;bottom&quot;, &quot;left&quot;
+    //   and &quot;right&quot; coordinates.
+    // - The top bar is drawn from &quot;right&quot; to &quot;left&quot; and positioned at vertical offset &quot;top&quot;.
+    // - The left part is draw as a quadratic Bezier curve with end points going from &quot;top&quot; to
+    //   &quot;bottom&quot; and positioned at horizontal offset &quot;left&quot;.
+    // - In order to force the curvature of the left part, we use a middle point that is vertically
+    //   centered and shifted towards the right by longDivLeftSpace * \xi_8
+    if (hasNotation(MathMLMencloseElement::LongDiv)) {
+        LayoutUnit top = m_contentRect.y() - 7 * thickness / 2;
+        LayoutUnit bottom = m_contentRect.maxY() + 7 * thickness / 2;
+        LayoutUnit left = m_contentRect.x() - longDivLeftSpace * thickness + thickness / 2;
+        LayoutUnit right = m_contentRect.maxX() + 4 * thickness;
+        LayoutUnit midX = left + longDivLeftSpace * thickness;
+        LayoutUnit midY = (top + bottom) / 2;
+        Path path;
+        path.moveTo(LayoutPoint(right, top));
+        path.addLineTo(LayoutPoint(left, top));
+        path.addQuadCurveTo(LayoutPoint(midX, midY), FloatPoint(left, bottom));
+        info.context().strokePath(path);
+    }
+
+    // In the MathML in HTML5 implementation note, the &quot;circle&quot; notation is described as follows:
+    // - The center and axes are the same as the content bounding box.
+    // - The width of the bounding box is \xi_8/2 + contentWidth * \sqrt{2} + \xi_8/2
+    // - The height is \xi_8/2 + contentHeight * \sqrt{2} + \xi_8/2
+    if (hasNotation(MathMLMencloseElement::Circle)) {
+        LayoutRect ellipseRect;
+        ellipseRect.setWidth(m_contentRect.width() * sqrtOfTwoFloat + thickness);
+        ellipseRect.setHeight(m_contentRect.height() * sqrtOfTwoFloat + thickness);
+        ellipseRect.setX(m_contentRect.x() - (ellipseRect.width() - m_contentRect.width()) / 2);
+        ellipseRect.setY(m_contentRect.y() - (ellipseRect.height() - m_contentRect.height()) / 2);
+        Path path;
+        path.addEllipse(ellipseRect);
+        info.context().strokePath(path);
+    }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingmathmlRenderMathMLMencloseh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/mathml/RenderMathMLMenclose.h (199979 => 199980)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/mathml/RenderMathMLMenclose.h        2016-04-25 07:39:13 UTC (rev 199979)
+++ trunk/Source/WebCore/rendering/mathml/RenderMathMLMenclose.h        2016-04-25 09:46:31 UTC (rev 199980)
</span><span class="lines">@@ -1,5 +1,6 @@
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2014 Gurpreet Kaur (k.gurpreet@samsung.com). All rights reserved.
</span><ins>+ * Copyright (C) 2016 Igalia S.L.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -27,6 +28,7 @@
</span><span class="cx"> #define RenderMathMLMenclose_h
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(MATHML)
</span><ins>+#include &quot;MathMLMencloseElement.h&quot;
</ins><span class="cx"> #include &quot;RenderMathMLRow.h&quot;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -36,13 +38,19 @@
</span><span class="cx">     RenderMathMLMenclose(Element&amp;, std::unique_ptr&lt;RenderStyle&gt;);
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    bool isRenderMathMLMenclose() const final { return true; }
</del><span class="cx">     const char* renderName() const final { return &quot;RenderMathMLMenclose&quot;; }
</span><ins>+    void computePreferredLogicalWidths() final;
+    void layoutBlock(bool relayoutChildren, LayoutUnit pageLogicalHeight = 0) final;
+    Optional&lt;int&gt; firstLineBaseline() const final;
</ins><span class="cx">     void paint(PaintInfo&amp;, const LayoutPoint&amp;) final;
</span><del>-    void updateLogicalHeight() override;
-    void addChild(RenderObject* newChild, RenderObject* beforeChild = nullptr) override;
-    void computePreferredLogicalWidths() final;
-    bool checkNotationalValuesValidity(const Vector&lt;String&gt;&amp;) const;
</del><ins>+
+    LayoutUnit ruleThickness() const;
+    bool hasNotation(MathMLMencloseElement::MencloseNotationFlag notationFlag) const { return downcast&lt;MathMLMencloseElement&gt;(element())-&gt;hasNotation(notationFlag); }
+
+    void getSpaceAroundContent(LayoutUnit contentWidth, LayoutUnit contentHeight, LayoutUnit&amp; leftSpace, LayoutUnit&amp; rightSpace, LayoutUnit&amp; topSpace, LayoutUnit&amp; bottomSpace) const;
+
+    LayoutUnit m_ascent;
+    LayoutRect m_contentRect;
</ins><span class="cx"> };
</span><span class="cx">     
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingmathmlRenderMathMLRootcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/mathml/RenderMathMLRoot.cpp (199979 => 199980)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/mathml/RenderMathMLRoot.cpp        2016-04-25 07:39:13 UTC (rev 199979)
+++ trunk/Source/WebCore/rendering/mathml/RenderMathMLRoot.cpp        2016-04-25 09:46:31 UTC (rev 199980)
</span><span class="lines">@@ -60,11 +60,6 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RenderMathMLRoot::RenderMathMLRoot(Document&amp; document, std::unique_ptr&lt;RenderStyle&gt; style)
-    : RenderMathMLBlock(document, WTFMove(style))
-{
-}
-
</del><span class="cx"> RenderMathMLRootWrapper* RenderMathMLRoot::baseWrapper() const
</span><span class="cx"> {
</span><span class="cx">     ASSERT(!isEmpty());
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingmathmlRenderMathMLRooth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/mathml/RenderMathMLRoot.h (199979 => 199980)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/mathml/RenderMathMLRoot.h        2016-04-25 07:39:13 UTC (rev 199979)
+++ trunk/Source/WebCore/rendering/mathml/RenderMathMLRoot.h        2016-04-25 09:46:31 UTC (rev 199980)
</span><span class="lines">@@ -43,7 +43,6 @@
</span><span class="cx"> 
</span><span class="cx"> public:
</span><span class="cx">     RenderMathMLRoot(Element&amp;, std::unique_ptr&lt;RenderStyle&gt;);
</span><del>-    RenderMathMLRoot(Document&amp;, std::unique_ptr&lt;RenderStyle&gt;);
</del><span class="cx"> 
</span><span class="cx">     void addChild(RenderObject* newChild, RenderObject* beforeChild = 0) override;
</span><span class="cx">     void styleDidChange(StyleDifference, const RenderStyle* oldStyle) override;
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingmathmlRenderMathMLRowcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/mathml/RenderMathMLRow.cpp (199979 => 199980)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/mathml/RenderMathMLRow.cpp        2016-04-25 07:39:13 UTC (rev 199979)
+++ trunk/Source/WebCore/rendering/mathml/RenderMathMLRow.cpp        2016-04-25 09:46:31 UTC (rev 199980)
</span><span class="lines">@@ -70,7 +70,7 @@
</span><span class="cx">     return Optional&lt;int&gt;(static_cast&lt;int&gt;(lroundf(ascentForChild(*baselineChild) + baselineChild-&gt;logicalTop())));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void RenderMathMLRow::computeLineVerticalStretch(int&amp; stretchHeightAboveBaseline, int&amp; stretchDepthBelowBaseline)
</del><ins>+void RenderMathMLRow::computeLineVerticalStretch(LayoutUnit&amp; ascent, LayoutUnit&amp; descent)
</ins><span class="cx"> {
</span><span class="cx">     for (RenderBox* child = firstChildBox(); child; child = child-&gt;nextSiblingBox()) {
</span><span class="cx">         if (is&lt;RenderMathMLBlock&gt;(child)) {
</span><span class="lines">@@ -84,14 +84,14 @@
</span><span class="cx">         LayoutUnit childHeightAboveBaseline = ascentForChild(*child);
</span><span class="cx">         LayoutUnit childDepthBelowBaseline = child-&gt;logicalHeight() - childHeightAboveBaseline;
</span><span class="cx"> 
</span><del>-        stretchHeightAboveBaseline = std::max&lt;LayoutUnit&gt;(stretchHeightAboveBaseline, childHeightAboveBaseline);
-        stretchDepthBelowBaseline = std::max&lt;LayoutUnit&gt;(stretchDepthBelowBaseline, childDepthBelowBaseline);
</del><ins>+        ascent = std::max&lt;LayoutUnit&gt;(ascent, childHeightAboveBaseline);
+        descent = std::max&lt;LayoutUnit&gt;(descent, childDepthBelowBaseline);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // We ensure a minimal stretch size.
</span><del>-    if (stretchHeightAboveBaseline + stretchDepthBelowBaseline &lt;= 0) {
-        stretchHeightAboveBaseline = style().fontSize();
-        stretchDepthBelowBaseline = 0;
</del><ins>+    if (ascent + descent &lt;= 0) {
+        ascent = style().fontSize();
+        descent = 0;
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -110,7 +110,7 @@
</span><span class="cx">     setPreferredLogicalWidthsDirty(false);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void RenderMathMLRow::layoutRowItems(int stretchHeightAboveBaseline, int stretchDepthBelowBaseline)
</del><ins>+void RenderMathMLRow::layoutRowItems(LayoutUnit&amp; ascent, LayoutUnit&amp; descent)
</ins><span class="cx"> {
</span><span class="cx">     // We first stretch the vertical operators.
</span><span class="cx">     // For inline formulas, we can then calculate the logical width.
</span><span class="lines">@@ -122,7 +122,7 @@
</span><span class="cx">         if (is&lt;RenderMathMLBlock&gt;(child)) {
</span><span class="cx">             auto renderOperator = downcast&lt;RenderMathMLBlock&gt;(child)-&gt;unembellishedOperator();
</span><span class="cx">             if (renderOperator &amp;&amp; renderOperator-&gt;hasOperatorFlag(MathMLOperatorDictionary::Stretchy) &amp;&amp; renderOperator-&gt;isVertical())
</span><del>-                renderOperator-&gt;stretchTo(stretchHeightAboveBaseline, stretchDepthBelowBaseline);
</del><ins>+                renderOperator-&gt;stretchTo(ascent, descent);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         child-&gt;layoutIfNeeded();
</span><span class="lines">@@ -131,9 +131,9 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     width += borderEnd() + paddingEnd();
</span><del>-    // FIXME: RenderMathMLRoot and RenderMathMLEnclose classes should also recalculate the exact logical width instead of using the preferred width.
-    // See https://bugs.webkit.org/show_bug.cgi?id=130326
-    if ((!isRenderMathMLMath() || style().display() == INLINE) &amp;&amp; !isRenderMathMLRoot() &amp;&amp; !isRenderMathMLMenclose())
</del><ins>+    // FIXME: RenderMathMLRoot classes should also recalculate the exact logical width instead of using the preferred width.
+    // See http://webkit.org/b/153987
+    if ((!isRenderMathMLMath() || style().display() == INLINE) &amp;&amp; !isRenderMathMLRoot())
</ins><span class="cx">         setLogicalWidth(width);
</span><span class="cx"> 
</span><span class="cx">     LayoutUnit verticalOffset = borderTop() + paddingTop();
</span><span class="lines">@@ -175,6 +175,9 @@
</span><span class="cx">         LayoutUnit startOffset = maxAscent - ascent;
</span><span class="cx">         child-&gt;setLocation(child-&gt;location() + LayoutPoint(centerBlockOffset, startOffset));
</span><span class="cx">     }
</span><ins>+
+    ascent = maxAscent;
+    descent = maxDescent;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RenderMathMLRow::layoutBlock(bool relayoutChildren, LayoutUnit)
</span><span class="lines">@@ -184,15 +187,15 @@
</span><span class="cx">     if (!relayoutChildren &amp;&amp; simplifiedLayout())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    int stretchHeightAboveBaseline = 0;
-    int stretchDepthBelowBaseline = 0;
-    computeLineVerticalStretch(stretchHeightAboveBaseline, stretchDepthBelowBaseline);
</del><ins>+    LayoutUnit ascent = 0;
+    LayoutUnit descent = 0;
+    computeLineVerticalStretch(ascent, descent);
</ins><span class="cx"> 
</span><span class="cx">     recomputeLogicalWidth();
</span><span class="cx"> 
</span><span class="cx">     setLogicalHeight(borderAndPaddingLogicalHeight() + scrollbarLogicalHeight());
</span><span class="cx"> 
</span><del>-    layoutRowItems(stretchHeightAboveBaseline, stretchDepthBelowBaseline);
</del><ins>+    layoutRowItems(ascent, descent);
</ins><span class="cx"> 
</span><span class="cx">     updateLogicalHeight();
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingmathmlRenderMathMLRowh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/mathml/RenderMathMLRow.h (199979 => 199980)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/mathml/RenderMathMLRow.h        2016-04-25 07:39:13 UTC (rev 199979)
+++ trunk/Source/WebCore/rendering/mathml/RenderMathMLRow.h        2016-04-25 09:46:31 UTC (rev 199980)
</span><span class="lines">@@ -42,17 +42,18 @@
</span><span class="cx"> 
</span><span class="cx">     void updateOperatorProperties();
</span><span class="cx"> 
</span><del>-    void layoutBlock(bool relayoutChildren, LayoutUnit pageLogicalHeight = 0) final;
-    void paintChildren(PaintInfo&amp; forSelf, const LayoutPoint&amp;, PaintInfo&amp; forChild, bool usePrintRect) final;
-    Optional&lt;int&gt; firstLineBaseline() const final;
</del><ins>+    void layoutBlock(bool relayoutChildren, LayoutUnit pageLogicalHeight = 0) override;
+    void paintChildren(PaintInfo&amp; forSelf, const LayoutPoint&amp;, PaintInfo&amp; forChild, bool usePrintRect) override;
+    Optional&lt;int&gt; firstLineBaseline() const override;
</ins><span class="cx"> 
</span><ins>+protected:
+    void layoutRowItems(LayoutUnit&amp; ascent, LayoutUnit&amp; descent);
+    void computeLineVerticalStretch(LayoutUnit&amp; ascent, LayoutUnit&amp; descent);
+    void computePreferredLogicalWidths() override;
+
</ins><span class="cx"> private:
</span><span class="cx">     bool isRenderMathMLRow() const final { return true; }
</span><span class="cx">     const char* renderName() const override { return isAnonymous() ? &quot;RenderMathMLRow (anonymous)&quot; : &quot;RenderMathMLRow&quot;; }
</span><del>-
-    void layoutRowItems(int stretchHeightAboveBaseline, int stretchDepthBelowBaseline);
-    void computeLineVerticalStretch(int&amp; stretchHeightAboveBaseline, int&amp; stretchDepthBelowBaseline);
-    void computePreferredLogicalWidths() override;
</del><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingmathmlRenderMathMLSquareRootcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/mathml/RenderMathMLSquareRoot.cpp (199979 => 199980)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/mathml/RenderMathMLSquareRoot.cpp        2016-04-25 07:39:13 UTC (rev 199979)
+++ trunk/Source/WebCore/rendering/mathml/RenderMathMLSquareRoot.cpp        2016-04-25 09:46:31 UTC (rev 199980)
</span><span class="lines">@@ -39,17 +39,5 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RenderMathMLSquareRoot::RenderMathMLSquareRoot(Document&amp; document, std::unique_ptr&lt;RenderStyle&gt; style)
-    : RenderMathMLRoot(document, WTFMove(style))
-{
</del><span class="cx"> }
</span><del>-
-RenderPtr&lt;RenderMathMLSquareRoot&gt; RenderMathMLSquareRoot::createAnonymousWithParentRenderer(RenderMathMLMenclose&amp; parent)
-{
-    RenderPtr&lt;RenderMathMLSquareRoot&gt; squareRoot = createRenderer&lt;RenderMathMLSquareRoot&gt;(parent.document(), RenderStyle::createAnonymousStyleWithDisplay(&amp;parent.style(), FLEX));
-    squareRoot-&gt;initializeStyle();
-    return squareRoot;
-}
-
-}
</del><span class="cx"> #endif // ENABLE(MATHML)
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingmathmlRenderMathMLSquareRooth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/mathml/RenderMathMLSquareRoot.h (199979 => 199980)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/mathml/RenderMathMLSquareRoot.h        2016-04-25 07:39:13 UTC (rev 199979)
+++ trunk/Source/WebCore/rendering/mathml/RenderMathMLSquareRoot.h        2016-04-25 09:46:31 UTC (rev 199980)
</span><span class="lines">@@ -39,7 +39,6 @@
</span><span class="cx"> class RenderMathMLSquareRoot final : public RenderMathMLRoot {
</span><span class="cx"> public:
</span><span class="cx">     RenderMathMLSquareRoot(Element&amp;, std::unique_ptr&lt;RenderStyle&gt;);
</span><del>-    RenderMathMLSquareRoot(Document&amp;, std::unique_ptr&lt;RenderStyle&gt;);
</del><span class="cx">     static RenderPtr&lt;RenderMathMLSquareRoot&gt; createAnonymousWithParentRenderer(RenderMathMLMenclose&amp;);
</span><span class="cx">     
</span><span class="cx"> private:
</span></span></pre>
</div>
</div>

</body>
</html>