Title: [124353] trunk/Source/WebCore
Revision
124353
Author
[email protected]
Date
2012-08-01 12:03:14 -0700 (Wed, 01 Aug 2012)

Log Message

HTMLTreeBuilder passes a wrong token when pushing the head element
https://bugs.webkit.org/show_bug.cgi?id=92838

Patch by Kwang Yul Seo <[email protected]> on 2012-08-01
Reviewed by Adam Barth.

When the tree builder pushes the head element in the "after head" insertion mode,
it creates a HTMLStackItem from a wrong token.

Added HTMLConstructionSite::headStackItem() to retrieve the stack item for the head
element. Modified the tree builder to pass the correct stack item when pushing the head
element in the "after head" insertion mode.

No new tests, covered by existing tests.

* html/parser/HTMLConstructionSite.cpp:
(WebCore::HTMLConstructionSite::insertHTMLHeadElement):
* html/parser/HTMLConstructionSite.h:
(WebCore::HTMLConstructionSite::head):
(WebCore::HTMLConstructionSite::headStackItem):
(HTMLConstructionSite):
* html/parser/HTMLTreeBuilder.cpp:
(WebCore::HTMLTreeBuilder::processStartTag):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (124352 => 124353)


--- trunk/Source/WebCore/ChangeLog	2012-08-01 18:55:03 UTC (rev 124352)
+++ trunk/Source/WebCore/ChangeLog	2012-08-01 19:03:14 UTC (rev 124353)
@@ -1,3 +1,28 @@
+2012-08-01  Kwang Yul Seo  <[email protected]>
+
+        HTMLTreeBuilder passes a wrong token when pushing the head element
+        https://bugs.webkit.org/show_bug.cgi?id=92838
+
+        Reviewed by Adam Barth.
+
+        When the tree builder pushes the head element in the "after head" insertion mode,
+        it creates a HTMLStackItem from a wrong token.
+
+        Added HTMLConstructionSite::headStackItem() to retrieve the stack item for the head
+        element. Modified the tree builder to pass the correct stack item when pushing the head
+        element in the "after head" insertion mode.
+
+        No new tests, covered by existing tests.
+
+        * html/parser/HTMLConstructionSite.cpp:
+        (WebCore::HTMLConstructionSite::insertHTMLHeadElement):
+        * html/parser/HTMLConstructionSite.h:
+        (WebCore::HTMLConstructionSite::head):
+        (WebCore::HTMLConstructionSite::headStackItem):
+        (HTMLConstructionSite):
+        * html/parser/HTMLTreeBuilder.cpp:
+        (WebCore::HTMLTreeBuilder::processStartTag):
+
 2012-08-01  Andrei Bucur  <[email protected]>
 
         [CSS Regions] The regionLayoutUpdate event should be dispatched on the NamedFlow object

Modified: trunk/Source/WebCore/html/parser/HTMLConstructionSite.cpp (124352 => 124353)


--- trunk/Source/WebCore/html/parser/HTMLConstructionSite.cpp	2012-08-01 18:55:03 UTC (rev 124352)
+++ trunk/Source/WebCore/html/parser/HTMLConstructionSite.cpp	2012-08-01 19:03:14 UTC (rev 124353)
@@ -277,9 +277,9 @@
 void HTMLConstructionSite::insertHTMLHeadElement(AtomicHTMLToken* token)
 {
     ASSERT(!shouldFosterParent());
-    m_head = createHTMLElement(token);
-    attachLater(currentNode(), m_head);
-    m_openElements.pushHTMLHeadElement(HTMLStackItem::create(m_head, token));
+    m_head = HTMLStackItem::create(createHTMLElement(token), token);
+    attachLater(currentNode(), m_head->element());
+    m_openElements.pushHTMLHeadElement(m_head);
 }
 
 void HTMLConstructionSite::insertHTMLBodyElement(AtomicHTMLToken* token)

Modified: trunk/Source/WebCore/html/parser/HTMLConstructionSite.h (124352 => 124353)


--- trunk/Source/WebCore/html/parser/HTMLConstructionSite.h	2012-08-01 18:55:03 UTC (rev 124352)
+++ trunk/Source/WebCore/html/parser/HTMLConstructionSite.h	2012-08-01 19:03:14 UTC (rev 124353)
@@ -118,7 +118,8 @@
     HTMLElementStack* openElements() const { return &m_openElements; }
     HTMLFormattingElementList* activeFormattingElements() const { return &m_activeFormattingElements; }
 
-    Element* head() const { return m_head.get(); }
+    Element* head() const { return m_head->element(); }
+    HTMLStackItem* headStackItem() const { return m_head.get(); }
 
     void setForm(HTMLFormElement*);
     HTMLFormElement* form() const { return m_form.get(); }
@@ -166,7 +167,7 @@
     // and a Document in all other cases.
     ContainerNode* m_attachmentRoot;
     
-    RefPtr<Element> m_head;
+    RefPtr<HTMLStackItem> m_head;
     RefPtr<HTMLFormElement> m_form;
     mutable HTMLElementStack m_openElements;
     mutable HTMLFormattingElementList m_activeFormattingElements;

Modified: trunk/Source/WebCore/html/parser/HTMLTreeBuilder.cpp (124352 => 124353)


--- trunk/Source/WebCore/html/parser/HTMLTreeBuilder.cpp	2012-08-01 18:55:03 UTC (rev 124352)
+++ trunk/Source/WebCore/html/parser/HTMLTreeBuilder.cpp	2012-08-01 19:03:14 UTC (rev 124353)
@@ -1190,7 +1190,7 @@
             || token->name() == titleTag) {
             parseError(token);
             ASSERT(m_tree.head());
-            m_tree.openElements()->pushHTMLHeadElement(HTMLStackItem::create(m_tree.head(), token));
+            m_tree.openElements()->pushHTMLHeadElement(m_tree.headStackItem());
             processStartTagForInHead(token);
             m_tree.openElements()->removeHTMLHeadElement(m_tree.head());
             return;
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to