2007-08-25 Mitz Pettel <mitz@webkit.org>
authorbdash <bdash@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 25 Aug 2007 12:30:19 +0000 (12:30 +0000)
committerbdash <bdash@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 25 Aug 2007 12:30:19 +0000 (12:30 +0000)
        Reviewed by Dave Hyatt.

        - fix http://bugs.webkit.org/show_bug.cgi?id=15056
          REGRESSION (r21472): Digg Podcasts Episodes Render "Digg" counter incorrectly

        Covered by fast/parser/residual-style-close-across-n-blocks.html

        * html/HTMLParser.cpp:
        (WebCore::HTMLParser::handleResidualStyleCloseTagAcrossBlocks): If the
        residual style was closed before anything else in the block (so it does
        not apply to anything inside the block) avoid creating an empty element for
        it inside the block.

2007-08-25  Mitz Pettel  <mitz@webkit.org>

        Reviewed by Dave Hyatt.

        - updated test and results for http://bugs.webkit.org/show_bug.cgi?id=15056
          REGRESSION (r21472): Digg Podcasts Episodes Render "Digg" counter incorrectly

        * fast/parser/residual-style-close-across-n-blocks-expected.txt:
        * fast/parser/residual-style-close-across-n-blocks.html:
        * tables/mozilla/other/wa_table_tr_align-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@25236 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/fast/parser/residual-style-close-across-n-blocks-expected.txt
LayoutTests/fast/parser/residual-style-close-across-n-blocks.html
LayoutTests/tables/mozilla/other/wa_table_tr_align-expected.txt
WebCore/ChangeLog
WebCore/html/HTMLParser.cpp

index fa356cc..ce3c69c 100644 (file)
@@ -2,6 +2,17 @@
 
         Reviewed by Dave Hyatt.
 
+        - updated test and results for http://bugs.webkit.org/show_bug.cgi?id=15056
+          REGRESSION (r21472): Digg Podcasts Episodes Render "Digg" counter incorrectly
+
+        * fast/parser/residual-style-close-across-n-blocks-expected.txt:
+        * fast/parser/residual-style-close-across-n-blocks.html:
+        * tables/mozilla/other/wa_table_tr_align-expected.txt:
+
+2007-08-25  Mitz Pettel  <mitz@webkit.org>
+
+        Reviewed by Dave Hyatt.
+
         - test for http://bugs.webkit.org/show_bug.cgi?id=14972
           Moving cursor down in contentEditable section fails if styled line-height:1em
 
index 0520c64..35de23f 100644 (file)
@@ -6,8 +6,8 @@ PASS: 1<i>2<div>3<span>4<pre>5</i>6</pre>7</div>8 parsed as 1<i>2</i><div><i>3<s
 PASS: 1<i>2<div>3<pre>4<b>5</i>6</b>7</pre>8</div>9 parsed as 1<i>2</i><div><i>3</i><pre><i>4<b>5</b></i><b>6</b>7</pre>8</div>9 as expected.
 PASS: 1<i>2<div>3<pre>4<p>5</i>6</p>7</pre>8</div>9 parsed as 1<i>2</i><div><i>3</i><pre><i>4</i><p><i>5</i>6</p>7</pre>8</div>9 as expected.
 PASS: 1<i>2<div>3<object>4<p>5</i>6</p>7</object>8</div>9 parsed as 1<i>2<div>3<object>4<p>56</p>7</object>8</div>9</i> as expected.
-PASS: <a href="#1"><div><div><a href="#2"></a><p>Shouldn't be a link</p></div><p>Shouldn't be a link</p></div><p>Shouldn't be a link</p></a> parsed as <a href="#1"></a><div><a href="#1"></a><div><a href="#1"></a><a href="#2"></a><p>Shouldn't be a link</p></div><p>Shouldn't be a link</p></div><p>Shouldn't be a link</p> as expected.
+PASS: <a href="#1"><div><div><a href="#2"></a><p>Shouldn't be a link</p></div><p>Shouldn't be a link</p></div><p>Shouldn't be a link</p></a> parsed as <a href="#1"></a><div><a href="#1"></a><div><a href="#2"></a><p>Shouldn't be a link</p></div><p>Shouldn't be a link</p></div><p>Shouldn't be a link</p> as expected.
 PASS: <p><a>RED</p>RED<div>RED<p>RED<a>RED</a>BLACK</p>BLACK</div>BLACK parsed as <p><a>RED</a></p><a>RED</a><div><a>RED</a><p><a>RED</a><a>RED</a>BLACK</p>BLACK</div>BLACK as expected.
-PASS: <a href="#outside"><p>Outside link.</p><div><div><a href="#inside">Inside link.</a></div></div><p>After all links</p> parsed as <a href="#outside"><p>Outside link.</p></a><div><a href="#outside"></a><div><a href="#outside"></a><a href="#inside">Inside link.</a></div></div><p>After all links</p> as expected.
-PASS: <a href="http://webkit.org"><div><h3><a href="about:blank">This is a link.</a></h3>This is not a link under Firefox, but it is under Safari. parsed as <a href="http://webkit.org"></a><div><a href="http://webkit.org"></a><h3><a href="http://webkit.org"></a><a href="about:blank">This is a link.</a></h3>This is not a link under Firefox, but it is under Safari.</div> as expected.
+PASS: <a href="#outside"><p>Outside link.</p><div><div><a href="#inside">Inside link.</a></div></div><p>After all links</p> parsed as <a href="#outside"><p>Outside link.</p></a><div><a href="#outside"></a><div><a href="#inside">Inside link.</a></div></div><p>After all links</p> as expected.
+PASS: <a href="http://webkit.org"><div><h3><a href="about:blank">This is a link.</a></h3>This is not a link under Firefox, but it is under Safari. parsed as <a href="http://webkit.org"></a><div><a href="http://webkit.org"></a><h3><a href="about:blank">This is a link.</a></h3>This is not a link under Firefox, but it is under Safari.</div> as expected.
 
index 3a6be37..51be78a 100644 (file)
@@ -58,7 +58,7 @@
 
             // Bug 13603 reduction:
             testParsing("<a href=\"#1\"><div><div><a href=\"#2\"></a><p>Shouldn't be a link</p></div><p>Shouldn't be a link</p></div><p>Shouldn't be a link</p></a>",
-                        "<a href=\"#1\"></a><div><a href=\"#1\"></a><div><a href=\"#1\"></a><a href=\"#2\"></a><p>Shouldn't be a link</p></div><p>Shouldn't be a link</p></div><p>Shouldn't be a link</p>");
+                        "<a href=\"#1\"></a><div><a href=\"#1\"></a><div><a href=\"#2\"></a><p>Shouldn't be a link</p></div><p>Shouldn't be a link</p></div><p>Shouldn't be a link</p>");
 
             // Almost bug 8750 reduction:
             testParsing("<p><a>RED</p>RED<div>RED<p>RED<a>RED</a>BLACK</p>BLACK</div>BLACK",
 
             // Bug 12808 reduction:
             testParsing("<a href=\"#outside\"><p>Outside link.</p><div><div><a href=\"#inside\">Inside link.</a></div></div><p>After all links</p>",
-                        "<a href=\"#outside\"><p>Outside link.</p></a><div><a href=\"#outside\"></a><div><a href=\"#outside\"></a><a href=\"#inside\">Inside link.</a></div></div><p>After all links</p>");
+                        "<a href=\"#outside\"><p>Outside link.</p></a><div><a href=\"#outside\"></a><div><a href=\"#inside\">Inside link.</a></div></div><p>After all links</p>");
             
             // Bug 12861 reduction:
             testParsing("<a href=\"http://webkit.org\"><div><h3><a href=\"about:blank\">This is a link.</a></h3>This is not a link under Firefox, but it is under Safari.",
-                        "<a href=\"http://webkit.org\"></a><div><a href=\"http://webkit.org\"></a><h3><a href=\"http://webkit.org\"></a><a href=\"about:blank\">This is a link.</a></h3>This is not a link under Firefox, but it is under Safari.</div>");
+                        "<a href=\"http://webkit.org\"></a><div><a href=\"http://webkit.org\"></a><h3><a href=\"about:blank\">This is a link.</a></h3>This is not a link under Firefox, but it is under Safari.</div>");
             
         }
     </script>
index ef3916a..21e053b 100644 (file)
@@ -242,9 +242,6 @@ layer at (0,0) size 785x1308
                 RenderBlock (anonymous) at (2,56) size 336x0
                   RenderInline {B} at (0,0) size 0x0
                 RenderBlock {P} at (2,72) size 336x0
-                  RenderInline {B} at (0,0) size 0x0
-                    RenderInline {FONT} at (0,0) size 0x0 [color=#FF0000]
-                  RenderText {#text} at (0,0) size 0x0
       RenderBlock {P} at (0,974) size 769x146
         RenderTable {TABLE} at (0,0) size 346x146 [bgcolor=#FFE4C4] [border: (1px outset #808080)]
           RenderBlock {CAPTION} at (0,0) size 344x18
@@ -293,9 +290,6 @@ layer at (0,0) size 785x1308
                 RenderBlock (anonymous) at (2,56) size 336x0
                   RenderInline {B} at (0,0) size 0x0
                 RenderBlock {P} at (2,72) size 336x0
-                  RenderInline {B} at (0,0) size 0x0
-                    RenderInline {FONT} at (0,0) size 0x0 [color=#FF0000]
-                  RenderText {#text} at (0,0) size 0x0
       RenderBlock {P} at (0,1136) size 769x70
         RenderTable {TABLE} at (0,0) size 346x70 [bgcolor=#FFE4C4] [border: (1px outset #808080)]
           RenderBlock {CAPTION} at (0,0) size 344x18
index 2a30bfc..fdb093d 100644 (file)
@@ -2,6 +2,21 @@
 
         Reviewed by Dave Hyatt.
 
+        - fix http://bugs.webkit.org/show_bug.cgi?id=15056
+          REGRESSION (r21472): Digg Podcasts Episodes Render "Digg" counter incorrectly
+
+        Covered by fast/parser/residual-style-close-across-n-blocks.html
+
+        * html/HTMLParser.cpp:
+        (WebCore::HTMLParser::handleResidualStyleCloseTagAcrossBlocks): If the
+        residual style was closed before anything else in the block (so it does
+        not apply to anything inside the block) avoid creating an empty element for
+        it inside the block.
+
+2007-08-25  Mitz Pettel  <mitz@webkit.org>
+
+        Reviewed by Dave Hyatt.
+
         - fix http://bugs.webkit.org/show_bug.cgi?id=14972
           Moving cursor down in contentEditable section fails if styled line-height:1em
 
index c4b222f..847e68c 100644 (file)
@@ -1085,25 +1085,29 @@ void HTMLParser::handleResidualStyleCloseTagAcrossBlocks(HTMLStackElem* elem)
         if (isBlockStillInTree)
             blockElem->parentNode()->removeChild(blockElem, ec);
 
-        // Step 2: Clone |residualElem|.
-        RefPtr<Node> newNode = residualElem->cloneNode(false); // Shallow clone. We don't pick up the same kids.
-        Node* newNodePtr = newNode.get();
-        reportError(ResidualStyleError, &newNode->localName());
+        Node* newNodePtr = 0;
+        ASSERT(finished || blockElem->firstChild());
+        if (blockElem->firstChild()) {
+            // Step 2: Clone |residualElem|.
+            RefPtr<Node> newNode = residualElem->cloneNode(false); // Shallow clone. We don't pick up the same kids.
+            newNodePtr = newNode.get();
+            reportError(ResidualStyleError, &newNode->localName());
+
+            // Step 3: Place |blockElem|'s children under |newNode|.  Remove all of the children of |blockElem|
+            // before we've put |newElem| into the document.  That way we'll only do one attachment of all
+            // the new content (instead of a bunch of individual attachments).
+            Node* currNode = blockElem->firstChild();
+            while (currNode) {
+                Node* nextNode = currNode->nextSibling();
+                newNode->appendChild(currNode, ec);
+                currNode = nextNode;
+            }
 
-        // Step 3: Place |blockElem|'s children under |newNode|.  Remove all of the children of |blockElem|
-        // before we've put |newElem| into the document.  That way we'll only do one attachment of all
-        // the new content (instead of a bunch of individual attachments).
-        Node* currNode = blockElem->firstChild();
-        while (currNode) {
-            Node* nextNode = currNode->nextSibling();
-            newNode->appendChild(currNode, ec);
-            currNode = nextNode;
+            // Step 4: Place |newNode| under |blockElem|.  |blockElem| is still out of the document, so no
+            // attachment can occur yet.
+            blockElem->appendChild(newNode.release(), ec);
         }
 
-        // Step 4: Place |newNode| under |blockElem|.  |blockElem| is still out of the document, so no
-        // attachment can occur yet.
-        blockElem->appendChild(newNode.release(), ec);
-
         // Step 5: Reparent |blockElem|.  Now the full attachment of the fixed up tree takes place.
         if (isBlockStillInTree)
             parentElem->appendChild(blockElem, ec);
@@ -1129,6 +1133,7 @@ void HTMLParser::handleResidualStyleCloseTagAcrossBlocks(HTMLStackElem* elem)
             elem->node = prevMaxElem->node;
             elem->didRefNode = prevMaxElem->didRefNode;
             prevMaxElem->next = elem;
+            ASSERT(newNodePtr);
             prevMaxElem->node = newNodePtr;
             prevMaxElem->didRefNode = false;
         } else