[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

abarth at webkit.org abarth at webkit.org
Wed Dec 22 12:29:57 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit acfadba839bd8b236909e2e6034d4bee20322cd9
Author: abarth at webkit.org <abarth at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue Aug 24 20:43:28 2010 +0000

    2010-08-24  Adam Barth  <abarth at webkit.org>
    
            Reviewed by Darin Adler.
    
            Remove references to LegacyHTMLTreebuilder from HTMLTreeBuilder
            https://bugs.webkit.org/show_bug.cgi?id=44544
    
            * html/HTMLDocumentParser.cpp:
            * html/HTMLDocumentParser.h:
            * html/HTMLTreeBuilder.cpp:
            (WebCore::HTMLTreeBuilder::HTMLTreeBuilder):
            (WebCore::HTMLTreeBuilder::FragmentParsingContext::FragmentParsingContext):
            (WebCore::HTMLTreeBuilder::FragmentParsingContext::document):
            (WebCore::HTMLTreeBuilder::constructTreeFromToken):
            (WebCore::HTMLTreeBuilder::finished):
            * html/HTMLTreeBuilder.h:
            (WebCore::HTMLTreeBuilder::FragmentParsingContext::contextElement):
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@65931 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index b4f12f1..d897071 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,21 @@
+2010-08-24  Adam Barth  <abarth at webkit.org>
+
+        Reviewed by Darin Adler.
+
+        Remove references to LegacyHTMLTreebuilder from HTMLTreeBuilder
+        https://bugs.webkit.org/show_bug.cgi?id=44544
+
+        * html/HTMLDocumentParser.cpp:
+        * html/HTMLDocumentParser.h:
+        * html/HTMLTreeBuilder.cpp:
+        (WebCore::HTMLTreeBuilder::HTMLTreeBuilder):
+        (WebCore::HTMLTreeBuilder::FragmentParsingContext::FragmentParsingContext):
+        (WebCore::HTMLTreeBuilder::FragmentParsingContext::document):
+        (WebCore::HTMLTreeBuilder::constructTreeFromToken):
+        (WebCore::HTMLTreeBuilder::finished):
+        * html/HTMLTreeBuilder.h:
+        (WebCore::HTMLTreeBuilder::FragmentParsingContext::contextElement):
+
 2010-08-24  Xan Lopez  <xlopez at igalia.com>
 
         Try to fix GTK+ build.
diff --git a/WebCore/html/HTMLDocumentParser.cpp b/WebCore/html/HTMLDocumentParser.cpp
index 95c4fe1..20750b7 100644
--- a/WebCore/html/HTMLDocumentParser.cpp
+++ b/WebCore/html/HTMLDocumentParser.cpp
@@ -409,11 +409,6 @@ int HTMLDocumentParser::columnNumber() const
     return m_tokenizer->columnNumber();
 }
 
-LegacyHTMLTreeBuilder* HTMLDocumentParser::htmlTreeBuilder() const
-{
-    return m_treeBuilder->legacyTreeBuilder();
-}
-
 bool HTMLDocumentParser::isWaitingForScripts() const
 {
     return m_treeBuilder->isPaused();
diff --git a/WebCore/html/HTMLDocumentParser.h b/WebCore/html/HTMLDocumentParser.h
index ee7439d..da21a2b 100644
--- a/WebCore/html/HTMLDocumentParser.h
+++ b/WebCore/html/HTMLDocumentParser.h
@@ -46,7 +46,6 @@ class HTMLTokenizer;
 class HTMLScriptRunner;
 class HTMLTreeBuilder;
 class HTMLPreloadScanner;
-class LegacyHTMLTreeBuilder;
 class ScriptController;
 class ScriptSourceCode;
 
@@ -88,9 +87,6 @@ private:
     virtual void executeScriptsWaitingForStylesheets();
     virtual int lineNumber() const;
     virtual int columnNumber() const;
-    // FIXME: HTMLFormControlElement accesses the LegacyHTMLTreeBuilder via this method.
-    // Remove this when the LegacyHTMLTreeBuilder is no longer used.
-    virtual LegacyHTMLTreeBuilder* htmlTreeBuilder() const;
 
     // HTMLScriptRunnerHost
     virtual void watchForLoad(CachedResource*);
diff --git a/WebCore/html/HTMLTreeBuilder.cpp b/WebCore/html/HTMLTreeBuilder.cpp
index 2a9575b..c853cbf 100644
--- a/WebCore/html/HTMLTreeBuilder.cpp
+++ b/WebCore/html/HTMLTreeBuilder.cpp
@@ -39,7 +39,6 @@
 #include "HTMLScriptElement.h"
 #include "HTMLToken.h"
 #include "HTMLTokenizer.h"
-#include "LegacyHTMLTreeBuilder.h"
 #include "LocalizedStrings.h"
 #include "MathMLNames.h"
 #include "NotImplemented.h"
@@ -98,13 +97,6 @@ inline bool isAllWhitespaceOrReplacementCharacters(const String& string)
     return isAllSpecialCharacters<isTreeBuilderWhitepaceOrReplacementCharacter>(string);
 }
 
-bool shouldUseLegacyTreeBuilder(Document*)
-{
-    // Never use the LegacyHTMLTreeBuilder.  We'll remove the 10k+ lines of
-    // code supporting this bool in later commits.
-    return false;
-}
-
 bool isNumberedHeaderTag(const AtomicString& tagName)
 {
     return tagName == h1Tag
@@ -206,7 +198,6 @@ bool isSpecialNode(Node* node)
 }
 
 // http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#scoping
-// Same as isScopingTag in LegacyHTMLTreeBuilder.cpp
 // and isScopeMarker in HTMLElementStack.cpp
 bool isScopingTag(const AtomicString& tagName)
 {
@@ -379,8 +370,8 @@ HTMLTreeBuilder::HTMLTreeBuilder(HTMLTokenizer* tokenizer, HTMLDocument* documen
     , m_originalInsertionMode(InitialMode)
     , m_secondaryInsertionMode(InitialMode)
     , m_tokenizer(tokenizer)
-    , m_lastScriptElementStartLine(uninitializedLineNumberValue)
     , m_scriptToProcessStartLine(uninitializedLineNumberValue)
+    , m_lastScriptElementStartLine(uninitializedLineNumberValue)
 {
 }
 
@@ -388,7 +379,7 @@ HTMLTreeBuilder::HTMLTreeBuilder(HTMLTokenizer* tokenizer, HTMLDocument* documen
 // minimize code duplication between these constructors.
 HTMLTreeBuilder::HTMLTreeBuilder(HTMLTokenizer* tokenizer, DocumentFragment* fragment, Element* contextElement, FragmentScriptingPermission scriptingPermission)
     : m_framesetOk(true)
-    , m_fragmentContext(fragment, contextElement, scriptingPermission, shouldUseLegacyTreeBuilder(fragment->document()))
+    , m_fragmentContext(fragment, contextElement, scriptingPermission)
     , m_document(m_fragmentContext.document())
     , m_tree(m_document, scriptingPermission, true)
     , m_reportErrors(false) // FIXME: Why not report errors in fragments?
@@ -397,12 +388,9 @@ HTMLTreeBuilder::HTMLTreeBuilder(HTMLTokenizer* tokenizer, DocumentFragment* fra
     , m_originalInsertionMode(InitialMode)
     , m_secondaryInsertionMode(InitialMode)
     , m_tokenizer(tokenizer)
-    , m_legacyTreeBuilder(shouldUseLegacyTreeBuilder(fragment->document()) ? new LegacyHTMLTreeBuilder(fragment, scriptingPermission) : 0)
-    , m_lastScriptElementStartLine(uninitializedLineNumberValue)
     , m_scriptToProcessStartLine(uninitializedLineNumberValue)
+    , m_lastScriptElementStartLine(uninitializedLineNumberValue)
 {
-    if (shouldUseLegacyTreeBuilder(fragment->document()))
-        return;
     if (contextElement) {
         // Steps 4.2-4.6 of the HTML5 Fragment Case parsing algorithm:
         // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-end.html#fragment-case
@@ -430,16 +418,14 @@ void HTMLTreeBuilder::detach()
 HTMLTreeBuilder::FragmentParsingContext::FragmentParsingContext()
     : m_fragment(0)
     , m_contextElement(0)
-    , m_usingLegacyTreeBuilder(false)
     , m_scriptingPermission(FragmentScriptingAllowed)
 {
 }
 
-HTMLTreeBuilder::FragmentParsingContext::FragmentParsingContext(DocumentFragment* fragment, Element* contextElement, FragmentScriptingPermission scriptingPermission, bool legacyMode)
-    : m_dummyDocumentForFragmentParsing(legacyMode ? 0 : HTMLDocument::create(0, KURL()))
+HTMLTreeBuilder::FragmentParsingContext::FragmentParsingContext(DocumentFragment* fragment, Element* contextElement, FragmentScriptingPermission scriptingPermission)
+    : m_dummyDocumentForFragmentParsing(HTMLDocument::create(0, KURL()))
     , m_fragment(fragment)
     , m_contextElement(contextElement)
-    , m_usingLegacyTreeBuilder(legacyMode)
     , m_scriptingPermission(scriptingPermission)
 {
 }
@@ -447,8 +433,6 @@ HTMLTreeBuilder::FragmentParsingContext::FragmentParsingContext(DocumentFragment
 Document* HTMLTreeBuilder::FragmentParsingContext::document() const
 {
     ASSERT(m_fragment);
-    if (m_usingLegacyTreeBuilder)
-        return m_fragment->document();
     return m_dummyDocumentForFragmentParsing.get();
 }
 
@@ -473,39 +457,6 @@ HTMLTreeBuilder::FragmentParsingContext::~FragmentParsingContext()
 {
 }
 
-static void convertToOldStyle(AtomicHTMLToken& token, Token& oldStyleToken)
-{
-    switch (token.type()) {
-    case HTMLToken::Uninitialized:
-    case HTMLToken::DOCTYPE:
-        ASSERT_NOT_REACHED();
-        break;
-    case HTMLToken::EndOfFile:
-        ASSERT_NOT_REACHED();
-        notImplemented();
-        break;
-    case HTMLToken::StartTag:
-    case HTMLToken::EndTag: {
-        oldStyleToken.beginTag = (token.type() == HTMLToken::StartTag);
-        // The LegacyHTMLTreeBuilder seems to work better if we lie here and
-        // say that tags are never self closing.  As a wise man once said:
-        // "You can't handle the truth!"
-        oldStyleToken.selfClosingTag = false;
-        oldStyleToken.tagName = token.name();
-        oldStyleToken.attrs = token.takeAtributes();
-        break;
-    }
-    case HTMLToken::Comment:
-        oldStyleToken.tagName = commentAtom;
-        oldStyleToken.text = token.comment().impl();
-        break;
-    case HTMLToken::Character:
-        oldStyleToken.tagName = textAtom;
-        oldStyleToken.text = StringImpl::create(token.characters().data(), token.characters().size());
-        break;
-    }
-}
-
 PassRefPtr<Element> HTMLTreeBuilder::takeScriptToProcess(int& scriptStartLine)
 {
     // Unpause ourselves, callers may pause us again when processing the script.
@@ -537,75 +488,8 @@ HTMLTokenizer::State HTMLTreeBuilder::adjustedLexerState(HTMLTokenizer::State st
     return state;
 }
 
-void HTMLTreeBuilder::passTokenToLegacyParser(HTMLToken& token)
-{
-    ASSERT(m_document);
-    if (token.type() == HTMLToken::DOCTYPE) {
-        DoctypeToken doctypeToken;
-        doctypeToken.m_name.append(token.name().data(), token.name().size());
-        doctypeToken.m_publicID = token.publicIdentifier();
-        doctypeToken.m_systemID = token.systemIdentifier();
-        doctypeToken.m_forceQuirks = token.forceQuirks();
-
-        m_legacyTreeBuilder->parseDoctypeToken(&doctypeToken);
-        return;
-    }
-
-    if (token.type() == HTMLToken::EndOfFile)
-        return;
-
-    // For now, we translate into an old-style token for testing.
-    Token oldStyleToken;
-    AtomicHTMLToken atomicToken(token);
-    convertToOldStyle(atomicToken, oldStyleToken);
-
-    RefPtr<Node> result =  m_legacyTreeBuilder->parseToken(&oldStyleToken);
-    if (token.type() == HTMLToken::StartTag) {
-        // This work is supposed to be done by the parser, but
-        // when using the old parser for we have to do this manually.
-        if (oldStyleToken.tagName == scriptTag) {
-            m_tokenizer->setState(HTMLTokenizer::ScriptDataState);
-            m_lastScriptElement = static_pointer_cast<Element>(result);
-            m_lastScriptElementStartLine = m_tokenizer->lineNumber();
-        } else if (oldStyleToken.tagName == preTag || oldStyleToken.tagName == listingTag)
-            m_tokenizer->setSkipLeadingNewLineForListing(true);
-        else
-            m_tokenizer->setState(adjustedLexerState(m_tokenizer->state(), oldStyleToken.tagName, m_document->frame()));
-    } else if (token.type() == HTMLToken::EndTag) {
-        if (oldStyleToken.tagName == scriptTag) {
-            if (m_lastScriptElement) {
-                ASSERT(m_lastScriptElementStartLine != uninitializedLineNumberValue);
-                if (m_fragmentContext.scriptingPermission() == FragmentScriptingNotAllowed) {
-                    // FIXME: This is a horrible hack for platform/Pasteboard.
-                    // Clear the <script> tag when using the Parser to create
-                    // a DocumentFragment for pasting so that javascript content
-                    // does not show up in pasted HTML.
-                    m_lastScriptElement->removeChildren();
-                } else if (insertionMode() != AfterFramesetMode) {
-                    ASSERT(!m_scriptToProcess); // Caller never called takeScriptToProcess!
-                    ASSERT(m_scriptToProcessStartLine == uninitializedLineNumberValue); // Caller never called takeScriptToProcess!
-                    // Pause ourselves so that parsing stops until the script can be processed by the caller.
-                    m_isPaused = true;
-                    m_scriptToProcess = m_lastScriptElement.get();
-                    // Lexer line numbers are 0-based, ScriptSourceCode expects 1-based lines,
-                    // so we convert here before passing the line number off to HTMLScriptRunner.
-                    m_scriptToProcessStartLine = m_lastScriptElementStartLine + 1;
-                }
-                m_lastScriptElement = 0;
-                m_lastScriptElementStartLine = uninitializedLineNumberValue;
-            }
-        } else if (oldStyleToken.tagName == framesetTag)
-            setInsertionMode(AfterFramesetMode);
-    }
-}
-
 void HTMLTreeBuilder::constructTreeFromToken(HTMLToken& rawToken)
 {
-    if (m_legacyTreeBuilder) {
-        passTokenToLegacyParser(rawToken);
-        return;
-    }
-
     AtomicHTMLToken token(rawToken);
     processToken(token);
 
@@ -2933,13 +2817,6 @@ void HTMLTreeBuilder::processScriptStartTag(AtomicHTMLToken& token)
 void HTMLTreeBuilder::finished()
 {
     ASSERT(m_document);
-    // We should call m_document->finishedParsing() here, except
-    // m_legacyTreeBuilder->finished() does it for us.
-    if (m_legacyTreeBuilder) {
-        m_legacyTreeBuilder->finished();
-        return;
-    }
-
     if (isParsingFragment()) {
         m_fragmentContext.finished();
         return;
diff --git a/WebCore/html/HTMLTreeBuilder.h b/WebCore/html/HTMLTreeBuilder.h
index 7d6cca7..99d6a58 100644
--- a/WebCore/html/HTMLTreeBuilder.h
+++ b/WebCore/html/HTMLTreeBuilder.h
@@ -47,7 +47,6 @@ class DocumentFragment;
 class Frame;
 class HTMLToken;
 class HTMLDocument;
-class LegacyHTMLTreeBuilder;
 class Node;
 
 class HTMLTreeBuilder : public Noncopyable {
@@ -77,10 +76,6 @@ public:
 
     static HTMLTokenizer::State adjustedLexerState(HTMLTokenizer::State, const AtomicString& tagName, Frame*);
 
-    // FIXME: This is a dirty, rotten hack to keep HTMLFormControlElement happy
-    // until we stop using the legacy parser. DO NOT CALL THIS METHOD.
-    LegacyHTMLTreeBuilder* legacyTreeBuilder() const { return m_legacyTreeBuilder.get(); }
-
     static bool scriptEnabled(Frame*);
     static bool pluginsEnabled(Frame*);
 
@@ -120,8 +115,6 @@ private:
 
     bool isParsingFragment() const { return !!m_fragmentContext.fragment(); }
 
-    void passTokenToLegacyParser(HTMLToken&);
-
     void processToken(AtomicHTMLToken&);
 
     void processDoctypeToken(AtomicHTMLToken&);
@@ -210,12 +203,12 @@ private:
     class FragmentParsingContext : public Noncopyable {
     public:
         FragmentParsingContext();
-        FragmentParsingContext(DocumentFragment*, Element* contextElement, FragmentScriptingPermission, bool usingLegacyTreeBuilder);
+        FragmentParsingContext(DocumentFragment*, Element* contextElement, FragmentScriptingPermission);
         ~FragmentParsingContext();
 
         Document* document() const;
         DocumentFragment* fragment() const { return m_fragment; }
-        Element* contextElement() const { ASSERT(m_fragment); ASSERT(!m_usingLegacyTreeBuilder); return m_contextElement; }
+        Element* contextElement() const { ASSERT(m_fragment); return m_contextElement; }
         FragmentScriptingPermission scriptingPermission() const { ASSERT(m_fragment); return m_scriptingPermission; }
 
         void finished();
@@ -224,7 +217,6 @@ private:
         RefPtr<Document> m_dummyDocumentForFragmentParsing;
         DocumentFragment* m_fragment;
         Element* m_contextElement;
-        bool m_usingLegacyTreeBuilder;
 
         // FragmentScriptingNotAllowed causes the Parser to remove children
         // from <script> tags (so javascript doesn't show up in pastes).
@@ -254,16 +246,13 @@ private:
     // from within parser actions.
     HTMLTokenizer* m_tokenizer;
 
-    // We're re-using logic from the old LegacyHTMLTreeBuilder while this class is being written.
-    OwnPtr<LegacyHTMLTreeBuilder> m_legacyTreeBuilder;
-
-    // These members are intentionally duplicated as the first set is a hack
-    // on top of the legacy parser which will eventually be removed.
-    RefPtr<Element> m_lastScriptElement; // FIXME: Hack for <script> support on top of the old parser.
-    int m_lastScriptElementStartLine; // FIXME: Hack for <script> support on top of the old parser.
-
     RefPtr<Element> m_scriptToProcess; // <script> tag which needs processing before resuming the parser.
     int m_scriptToProcessStartLine; // Starting line number of the script tag needing processing.
+
+    // FIXME: We probably want to remove this member.  Originally, it was
+    // created to service the legacy tree builder, but it seems to be used for
+    // some other things now.
+    int m_lastScriptElementStartLine;
 };
 
 }

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list