<!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>[169671] trunk/LayoutTests</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/169671">169671</a></dd>
<dt>Author</dt> <dd>fred.wang@free.fr</dd>
<dt>Date</dt> <dd>2014-06-07 01:10:43 -0700 (Sat, 07 Jun 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Add tests for dynamic changes in msqrt/mroot
https://bugs.webkit.org/show_bug.cgi?id=133557

Reviewed by Chris Fleizach.

This patch adds some tests to verify that a MathML msqrt/mroot element to which we applied dynamic additions and removals of children renders the same as its static equivalent and that no crashes happen.
Unfortunately, the existing code does not handle them very well so they are skipped until we do the refactoring of bug 119038.

* TestExpectations: skip the tests.
* mathml/roots-addChild-expected.html: Added.
* mathml/roots-addChild.html: Added.
* mathml/roots-removeChild-expected.html: Added.
* mathml/roots-removeChild.html: Added.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsTestExpectations">trunk/LayoutTests/TestExpectations</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsmathmlrootsaddChildexpectedhtml">trunk/LayoutTests/mathml/roots-addChild-expected.html</a></li>
<li><a href="#trunkLayoutTestsmathmlrootsaddChildhtml">trunk/LayoutTests/mathml/roots-addChild.html</a></li>
<li><a href="#trunkLayoutTestsmathmlrootsremoveChildexpectedhtml">trunk/LayoutTests/mathml/roots-removeChild-expected.html</a></li>
<li><a href="#trunkLayoutTestsmathmlrootsremoveChildhtml">trunk/LayoutTests/mathml/roots-removeChild.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (169670 => 169671)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2014-06-07 01:29:21 UTC (rev 169670)
+++ trunk/LayoutTests/ChangeLog        2014-06-07 08:10:43 UTC (rev 169671)
</span><span class="lines">@@ -1,3 +1,19 @@
</span><ins>+2014-06-07  Frédéric Wang  &lt;fred.wang@free.fr&gt;
+
+        Add tests for dynamic changes in msqrt/mroot
+        https://bugs.webkit.org/show_bug.cgi?id=133557
+
+        Reviewed by Chris Fleizach.
+
+        This patch adds some tests to verify that a MathML msqrt/mroot element to which we applied dynamic additions and removals of children renders the same as its static equivalent and that no crashes happen.
+        Unfortunately, the existing code does not handle them very well so they are skipped until we do the refactoring of bug 119038.
+
+        * TestExpectations: skip the tests.
+        * mathml/roots-addChild-expected.html: Added.
+        * mathml/roots-addChild.html: Added.
+        * mathml/roots-removeChild-expected.html: Added.
+        * mathml/roots-removeChild.html: Added.
+
</ins><span class="cx"> 2014-06-06  Gyuyoung Kim  &lt;gyuyoung.kim@samsung.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Scheme of content utils should be compared in an ASCII case-insensitive manner
</span></span></pre></div>
<a id="trunkLayoutTestsTestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/TestExpectations (169670 => 169671)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/TestExpectations        2014-06-07 01:29:21 UTC (rev 169670)
+++ trunk/LayoutTests/TestExpectations        2014-06-07 08:10:43 UTC (rev 169671)
</span><span class="lines">@@ -67,6 +67,11 @@
</span><span class="cx"> 
</span><span class="cx"> webkit.org/b/127860 [ Debug ] js/function-apply-aliased.html [ Skip ]
</span><span class="cx"> 
</span><ins>+# These tests verify dynamic manipulation of the mroot and msqrt elements.
+# Unfortunately, the current MathML code does not handle them well.
+webkit.org/b/119038 mathml/roots-addChild.html [ Skip ]
+webkit.org/b/119038 mathml/roots-removeChild.html [ Skip ]
+
</ins><span class="cx"> # This test verifies that a mismatch reftest will fail as intended if both results are same. (introduced in r93187)
</span><span class="cx"> fast/harness/sample-fail-mismatch-reftest.html [ WontFix ImageOnlyFailure ]
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsmathmlrootsaddChildexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/mathml/roots-addChild-expected.html (0 => 169671)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/mathml/roots-addChild-expected.html                                (rev 0)
+++ trunk/LayoutTests/mathml/roots-addChild-expected.html        2014-06-07 08:10:43 UTC (rev 169671)
</span><span class="lines">@@ -0,0 +1,90 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html&gt;
+  &lt;head&gt;
+    &lt;title&gt;MathML roots: adding children&lt;/title&gt;
+
+    &lt;style type=&quot;text/css&quot;&gt;
+      div { border: 1px solid; margin: .5em; }
+    &lt;/style&gt;
+  &lt;/head&gt;
+
+  &lt;body&gt;
+
+    &lt;!-- Test 1: insert in normal and reverse order. --&gt;
+    &lt;div id=&quot;test1&quot;&gt;Test 1:
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;mn&gt;6&lt;/mn&gt;&lt;mn&gt;7&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;mn&gt;6&lt;/mn&gt;&lt;mn&gt;7&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;mn&gt;6&lt;/mn&gt;&lt;mn&gt;7&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;mn&gt;6&lt;/mn&gt;&lt;mn&gt;7&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+    &lt;/div&gt;
+
+    &lt;!-- Test 2: insert an &lt;mn&gt; element at the first position in an &lt;mroot&gt;/&lt;msqrt&gt; element with various number of children. --&gt;
+    &lt;div id=&quot;test2&quot;&gt;Test 2:
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+    &lt;/div&gt;
+
+    &lt;!-- Test 3: insert an &lt;mn&gt; element at the last position in an &lt;mroot&gt;/&lt;msqrt&gt; element with various number of children. --&gt;
+    &lt;div id=&quot;test3&quot;&gt;Test 3:
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+    &lt;/div&gt;
+
+    &lt;!-- Test 4: insert an &lt;mn&gt; element at the second position in an &lt;mroot&gt;/&lt;msqrt&gt; element with various number of children. --&gt;
+    &lt;div id=&quot;test4&quot;&gt;Test 4:
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+    &lt;/div&gt;
+
+    &lt;!-- Test 5: insert an &lt;mn&gt; element at the penultimate position in an &lt;mroot&gt;/&lt;msqrt&gt; element with various number of children. --&gt;
+    &lt;div id=&quot;test5&quot;&gt;Test 5:
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+    &lt;/div&gt;
+
+    &lt;!-- Test 6: insert an &lt;mn&gt; element at the third position in an &lt;mroot&gt;/&lt;msqrt&gt; element with various number of children. --&gt;
+    &lt;div id=&quot;test6&quot;&gt;Test 6:
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+    &lt;/div&gt;
+
+    &lt;!-- Test 7: insert an &lt;mn&gt; element at the antipenultimate position in an &lt;mroot&gt;/&lt;msqrt&gt; element with various number of children. --&gt;
+    &lt;div id=&quot;test7&quot;&gt;Test 7:
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+    &lt;/div&gt;
+
+  &lt;/body&gt;
+&lt;/html&gt;
</ins><span class="cx">Property changes on: trunk/LayoutTests/mathml/roots-addChild-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="trunkLayoutTestsmathmlrootsaddChildhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/mathml/roots-addChild.html (0 => 169671)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/mathml/roots-addChild.html                                (rev 0)
+++ trunk/LayoutTests/mathml/roots-addChild.html        2014-06-07 08:10:43 UTC (rev 169671)
</span><span class="lines">@@ -0,0 +1,200 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html&gt;
+  &lt;head&gt;
+    &lt;title&gt;MathML roots: adding children&lt;/title&gt;
+
+    &lt;!-- This test verifies insertion of children into an &lt;mroot&gt;/&lt;msqrt&gt; element using DOM operations. It should not crash and should render the same as the equivalent static page. --&gt;
+
+    &lt;style type=&quot;text/css&quot;&gt;
+      div { border: 1px solid; margin: .5em; }
+    &lt;/style&gt;
+    &lt;script type=&quot;text/javascript&quot;&gt;
+      var mathmlNS = &quot;http://www.w3.org/1998/Math/MathML&quot;;
+
+      function newMn(n)
+      {
+        var t = document.createTextNode(n.toString());
+        var mn = document.createElementNS(mathmlNS, &quot;mn&quot;);
+        mn.appendChild(t);
+        return mn;
+      }
+
+      function test1()
+      {
+        var test1content = document.getElementById(&quot;test1content&quot;);
+        var mroot = document.getElementById(&quot;test1&quot;).getElementsByTagNameNS(mathmlNS, &quot;mroot&quot;);
+        var msqrt = document.getElementById(&quot;test1&quot;).getElementsByTagNameNS(mathmlNS, &quot;msqrt&quot;);
+        var i;
+
+        // We insert children in normal order.
+        for (i = 1; i &lt;= 7; i++) {
+          mroot[0].appendChild(newMn(i));
+          msqrt[0].appendChild(newMn(i));
+        }
+
+        // We insert children in reverse order.
+        for (i = 7; i &gt;= 1; i--) {
+          mroot[1].insertBefore(newMn(i), mroot[1].firstChild);
+          msqrt[1].insertBefore(newMn(i), msqrt[1].firstChild);
+        }
+      }
+
+      function test2()
+      {
+        var msqrt = document.getElementById(&quot;test2&quot;).getElementsByTagNameNS(mathmlNS, &quot;msqrt&quot;);
+        var mroot = document.getElementById(&quot;test2&quot;).getElementsByTagNameNS(mathmlNS, &quot;mroot&quot;);
+        var i;
+        for (i = 0; i &lt; msqrt.length; i++)
+          msqrt[i].insertBefore(newMn(1), msqrt[i].firstChild);
+        for (i = 0; i &lt; mroot.length; i++)
+          mroot[i].insertBefore(newMn(1), mroot[i].firstChild);
+      }
+
+      function test3()
+      {
+        var msqrt = document.getElementById(&quot;test3&quot;).getElementsByTagNameNS(mathmlNS, &quot;msqrt&quot;);
+        var mroot = document.getElementById(&quot;test3&quot;).getElementsByTagNameNS(mathmlNS, &quot;mroot&quot;);
+        var i;
+        for (i = 0; i &lt; msqrt.length; i++)
+          msqrt[i].appendChild(newMn(msqrt[i].childElementCount+1));
+        for (i = 0; i &lt; mroot.length; i++)
+          mroot[i].appendChild(newMn(mroot[i].childElementCount+1));
+      }
+
+      function test4()
+      {
+        var msqrt = document.getElementById(&quot;test4&quot;).getElementsByTagNameNS(mathmlNS, &quot;msqrt&quot;);
+        var mroot = document.getElementById(&quot;test4&quot;).getElementsByTagNameNS(mathmlNS, &quot;mroot&quot;);
+        var i;
+        for (i = 0; i &lt; msqrt.length; i++)
+          msqrt[i].insertBefore(newMn(2), msqrt[i].firstChild.nextSibling);
+        for (i = 0; i &lt; mroot.length; i++)
+          mroot[i].insertBefore(newMn(2), mroot[i].firstChild.nextSibling);
+      }
+
+      function test5()
+      {
+        var msqrt = document.getElementById(&quot;test5&quot;).getElementsByTagNameNS(mathmlNS, &quot;msqrt&quot;);
+        var mroot = document.getElementById(&quot;test5&quot;).getElementsByTagNameNS(mathmlNS, &quot;mroot&quot;);
+        var i;
+        for (i = 0; i &lt; msqrt.length; i++)
+          msqrt[i].insertBefore(newMn(msqrt[i].childElementCount), msqrt[i].lastChild);
+        for (i = 0; i &lt; mroot.length; i++)
+          mroot[i].insertBefore(newMn(mroot[i].childElementCount), mroot[i].lastChild);
+      }
+
+      function test6()
+      {
+        var msqrt = document.getElementById(&quot;test6&quot;).getElementsByTagNameNS(mathmlNS, &quot;msqrt&quot;);
+        var mroot = document.getElementById(&quot;test6&quot;).getElementsByTagNameNS(mathmlNS, &quot;mroot&quot;);
+        var i;
+        for (i = 0; i &lt; msqrt.length; i++)
+          msqrt[i].insertBefore(newMn(3), msqrt[i].firstChild.nextSibling.nextSibling);
+        for (i = 0; i &lt; mroot.length; i++)
+          mroot[i].insertBefore(newMn(3), mroot[i].firstChild.nextSibling.nextSibling);
+      }
+
+      function test7()
+      {
+        var msqrt = document.getElementById(&quot;test7&quot;).getElementsByTagNameNS(mathmlNS, &quot;msqrt&quot;);
+        var mroot = document.getElementById(&quot;test7&quot;).getElementsByTagNameNS(mathmlNS, &quot;mroot&quot;);
+        var i;
+        for (i = 0; i &lt; msqrt.length; i++)
+          msqrt[i].insertBefore(newMn(msqrt[i].childElementCount-1), msqrt[i].lastChild.previousSibling);
+        for (i = 0; i &lt; mroot.length; i++)
+          mroot[i].insertBefore(newMn(mroot[i].childElementCount-1), mroot[i].lastChild.previousSibling);
+      }
+
+      function run()
+      {
+        test1();
+        test2();
+        test3();
+        test4();
+        test5();
+        test6();
+        test7();
+      }
+    &lt;/script&gt;
+  &lt;/head&gt;
+
+  &lt;body onload=&quot;run()&quot;&gt;
+
+    &lt;!-- Test 1: insert in normal and reverse order. --&gt;
+    &lt;div id=&quot;test1&quot;&gt;Test 1:
+      &lt;math&gt;&lt;mroot&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;/msqrt&gt;&lt;/math&gt;
+    &lt;/div&gt;
+
+    &lt;!-- Test 2: insert an &lt;mn&gt; element at the first position in an &lt;mroot&gt;/&lt;msqrt&gt; element with various number of children. --&gt;
+    &lt;div id=&quot;test2&quot;&gt;Test 2:
+      &lt;math&gt;&lt;msqrt&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+    &lt;/div&gt;
+
+    &lt;!-- Test 3: insert an &lt;mn&gt; element at the last position in an &lt;mroot&gt;/&lt;msqrt&gt; element with various number of children. --&gt;
+    &lt;div id=&quot;test3&quot;&gt;Test 3:
+      &lt;math&gt;&lt;msqrt&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+    &lt;/div&gt;
+
+    &lt;!-- Test 4: insert an &lt;mn&gt; element at the second position in an &lt;mroot&gt;/&lt;msqrt&gt; element with various number of children. --&gt;
+    &lt;div id=&quot;test4&quot;&gt;Test 4:
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+    &lt;/div&gt;
+
+    &lt;!-- Test 5: insert an &lt;mn&gt; element at the penultimate position in an &lt;mroot&gt;/&lt;msqrt&gt; element with various number of children. --&gt;
+    &lt;div id=&quot;test5&quot;&gt;Test 5:
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+    &lt;/div&gt;
+
+    &lt;!-- Test 6: insert an &lt;mn&gt; element at the third position in an &lt;mroot&gt;/&lt;msqrt&gt; element with various number of children. --&gt;
+    &lt;div id=&quot;test6&quot;&gt;Test 6:
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+    &lt;/div&gt;
+
+    &lt;!-- Test 7: insert an &lt;mn&gt; element at the antipenultimate position in an &lt;mroot&gt;/&lt;msqrt&gt; element with various number of children. --&gt;
+    &lt;div id=&quot;test7&quot;&gt;Test 7:
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+    &lt;/div&gt;
+
+  &lt;/body&gt;
+&lt;/html&gt;
</ins><span class="cx">Property changes on: trunk/LayoutTests/mathml/roots-addChild.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="trunkLayoutTestsmathmlrootsremoveChildexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/mathml/roots-removeChild-expected.html (0 => 169671)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/mathml/roots-removeChild-expected.html                                (rev 0)
+++ trunk/LayoutTests/mathml/roots-removeChild-expected.html        2014-06-07 08:10:43 UTC (rev 169671)
</span><span class="lines">@@ -0,0 +1,60 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html&gt;
+  &lt;head&gt;
+    &lt;title&gt;MathML script elements: removing children&lt;/title&gt;
+
+    &lt;style type=&quot;text/css&quot;&gt;
+      div { border: 1px solid; margin: .5em; }
+    &lt;/style&gt;
+  &lt;/head&gt;
+
+  &lt;body&gt;
+
+    &lt;!-- Test 1: remove an element at the first position in an &lt;mroot&gt;/&lt;msqrt&gt; element with various number of children. --&gt;
+    &lt;div id=&quot;test1&quot;&gt;Test 1:
+      &lt;math&gt;&lt;msqrt&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+    &lt;/div&gt;
+
+    &lt;!-- Test 2: remove an &lt;mn&gt; element at the last position in an &lt;mroot&gt;/&lt;msqrt&gt; element with various number of children. --&gt;
+    &lt;div id=&quot;test2&quot;&gt;Test 2:
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+    &lt;/div&gt;
+
+    &lt;!-- Test 3: remove an element at the second position in an &lt;mroot&gt;/&lt;msqrt&gt; element with various number of children. --&gt;
+    &lt;div id=&quot;test3&quot;&gt;Test 3:
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+    &lt;/div&gt;
+
+    &lt;!-- Test 4: remove an element at the penultimate position in an &lt;mroot&gt;/&lt;msqrt&gt; element with various number of children. --&gt;
+    &lt;div id=&quot;test4&quot;&gt;Test 4:
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+    &lt;/div&gt;
+
+  &lt;/body&gt;
+&lt;/html&gt;
</ins><span class="cx">Property changes on: trunk/LayoutTests/mathml/roots-removeChild-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="trunkLayoutTestsmathmlrootsremoveChildhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/mathml/roots-removeChild.html (0 => 169671)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/mathml/roots-removeChild.html                                (rev 0)
+++ trunk/LayoutTests/mathml/roots-removeChild.html        2014-06-07 08:10:43 UTC (rev 169671)
</span><span class="lines">@@ -0,0 +1,125 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html&gt;
+  &lt;head&gt;
+    &lt;title&gt;MathML script elements: removing children&lt;/title&gt;
+
+    &lt;!-- This test verifies removal of children from an &lt;mroot&gt;/&lt;msqrt&gt; element using DOM operations. It should not crash and should render the same as the equivalent static page. --&gt;
+
+    &lt;style type=&quot;text/css&quot;&gt;
+      div { border: 1px solid; margin: .5em; }
+    &lt;/style&gt;
+    &lt;script type=&quot;text/javascript&quot;&gt;
+      var mathmlNS = &quot;http://www.w3.org/1998/Math/MathML&quot;;
+
+      function newMn(n)
+      {
+        var t = document.createTextNode(n.toString());
+        var mn = document.createElementNS(mathmlNS, &quot;mn&quot;);
+        mn.appendChild(t);
+        return mn;
+      }
+
+      function test1()
+      {
+        var msqrt = document.getElementById(&quot;test1&quot;).getElementsByTagNameNS(mathmlNS, &quot;msqrt&quot;);
+        var mroot = document.getElementById(&quot;test1&quot;).getElementsByTagNameNS(mathmlNS, &quot;mroot&quot;);
+        var i;
+        for (i = 0; i &lt; msqrt.length; i++)
+          msqrt[i].removeChild(msqrt[i].firstChild);
+        for (i = 0; i &lt; mroot.length; i++)
+          mroot[i].removeChild(mroot[i].firstChild);
+      }
+
+      function test2()
+      {
+        var msqrt = document.getElementById(&quot;test2&quot;).getElementsByTagNameNS(mathmlNS, &quot;msqrt&quot;);
+        var mroot = document.getElementById(&quot;test2&quot;).getElementsByTagNameNS(mathmlNS, &quot;mroot&quot;);
+        var i;
+        for (i = 0; i &lt; msqrt.length; i++)
+          msqrt[i].removeChild(msqrt[i].lastChild);
+        for (i = 0; i &lt; mroot.length; i++)
+          mroot[i].removeChild(mroot[i].lastChild);
+      }
+
+      function test3()
+      {
+        var msqrt = document.getElementById(&quot;test3&quot;).getElementsByTagNameNS(mathmlNS, &quot;msqrt&quot;);
+        var mroot = document.getElementById(&quot;test3&quot;).getElementsByTagNameNS(mathmlNS, &quot;mroot&quot;);
+        var i;
+        for (i = 0; i &lt; msqrt.length; i++)
+          msqrt[i].removeChild(msqrt[i].firstChild.nextSibling);
+        for (i = 0; i &lt; mroot.length; i++)
+          mroot[i].removeChild(mroot[i].firstChild.nextSibling);
+      }
+
+      function test4()
+      {
+        var msqrt = document.getElementById(&quot;test4&quot;).getElementsByTagNameNS(mathmlNS, &quot;msqrt&quot;);
+        var mroot = document.getElementById(&quot;test4&quot;).getElementsByTagNameNS(mathmlNS, &quot;mroot&quot;);
+        var i;
+        for (i = 0; i &lt; msqrt.length; i++)
+          msqrt[i].removeChild(msqrt[i].lastChild.previousSibling);
+        for (i = 0; i &lt; mroot.length; i++)
+          mroot[i].removeChild(mroot[i].lastChild.previousSibling);
+      }
+
+      function run()
+      {
+        test1();
+        test2();
+        test3();
+        test4();
+      }
+    &lt;/script&gt;
+  &lt;/head&gt;
+
+  &lt;body onload=&quot;run()&quot;&gt;
+
+    &lt;!-- Test 1: remove an element at the first position in an &lt;mroot&gt;/&lt;msqrt&gt; element with various number of children. --&gt;
+    &lt;div id=&quot;test1&quot;&gt;Test 1:
+      &lt;math&gt;&lt;msqrt&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+    &lt;/div&gt;
+
+    &lt;!-- Test 2: remove an &lt;mn&gt; element at the last position in an &lt;mroot&gt;/&lt;msqrt&gt; element with various number of children. --&gt;
+    &lt;div id=&quot;test2&quot;&gt;Test 2:
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;/mroot&gt;&lt;/math&gt;
+    &lt;/div&gt;
+
+    &lt;!-- Test 3: remove an element at the second position in an &lt;mroot&gt;/&lt;msqrt&gt; element with various number of children. --&gt;
+    &lt;div id=&quot;test3&quot;&gt;Test 3:
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+    &lt;/div&gt;
+
+    &lt;!-- Test 4: remove an element at the penultimate position in an &lt;mroot&gt;/&lt;msqrt&gt; element with various number of children. --&gt;
+    &lt;div id=&quot;test4&quot;&gt;Test 4:
+      &lt;math&gt;&lt;msqrt&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;msqrt&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/msqrt&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+      &lt;math&gt;&lt;mroot&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;mi&gt;X&lt;/mi&gt;&lt;mn&gt;4&lt;/mn&gt;&lt;/mroot&gt;&lt;/math&gt;
+    &lt;/div&gt;
+
+  &lt;/body&gt;
+&lt;/html&gt;
</ins><span class="cx">Property changes on: trunk/LayoutTests/mathml/roots-removeChild.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>
</div>

</body>
</html>