[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