Changeset 62891 in webkit


Ignore:
Timestamp:
Jul 8, 2010 9:48:29 PM (14 years ago)
Author:
abarth@webkit.org
Message:

2010-07-08 Adam Barth <abarth@webkit.org>

Reviewed by Eric Seidel.

Get my head wrapped around processCharacter
https://bugs.webkit.org/show_bug.cgi?id=41812

Minor test progression.

  • html5lib/runner-expected-html5.txt:

2010-07-08 Adam Barth <abarth@webkit.org>

Reviewed by Eric Seidel.

Get my head wrapped around processCharacter
https://bugs.webkit.org/show_bug.cgi?id=41812

The bulk of the patch is just stubbing out functions to document what
the spec tells us to do. I'll implement these functions in subsequent
patches.

  • html/HTMLConstructionSite.h: (WebCore::HTMLConstructionSite::insertLeadingWhitespace): (WebCore::HTMLConstructionSite::insertLeadingWhitespaceWithActiveFormattingElements):
  • html/HTMLTreeBuilder.cpp: (WebCore::HTMLTreeBuilder::processCharacter):
  • html/HTMLTreeBuilder.h: (WebCore::HTMLTreeBuilder::skipLeadingWhitespace):
Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r62889 r62891  
     12010-07-08  Adam Barth  <abarth@webkit.org>
     2
     3        Reviewed by Eric Seidel.
     4
     5        Get my head wrapped around processCharacter
     6        https://bugs.webkit.org/show_bug.cgi?id=41812
     7
     8        Minor test progression.
     9
     10        * html5lib/runner-expected-html5.txt:
     11
    1122010-07-08  Tony Chang  <tony@chromium.org>
    213
  • trunk/LayoutTests/html5lib/runner-expected-html5.txt

    r62643 r62891  
    659659|     <table>
    660660|       <colgroup>
     661|       "foo"
    661662Expected:
    662663| <html>
  • trunk/WebCore/ChangeLog

    r62889 r62891  
     12010-07-08  Adam Barth  <abarth@webkit.org>
     2
     3        Reviewed by Eric Seidel.
     4
     5        Get my head wrapped around processCharacter
     6        https://bugs.webkit.org/show_bug.cgi?id=41812
     7
     8        The bulk of the patch is just stubbing out functions to document what
     9        the spec tells us to do.  I'll implement these functions in subsequent
     10        patches.
     11
     12        * html/HTMLConstructionSite.h:
     13        (WebCore::HTMLConstructionSite::insertLeadingWhitespace):
     14        (WebCore::HTMLConstructionSite::insertLeadingWhitespaceWithActiveFormattingElements):
     15        * html/HTMLTreeBuilder.cpp:
     16        (WebCore::HTMLTreeBuilder::processCharacter):
     17        * html/HTMLTreeBuilder.h:
     18        (WebCore::HTMLTreeBuilder::skipLeadingWhitespace):
     19
    1202010-07-08  Tony Chang  <tony@chromium.org>
    221
  • trunk/WebCore/html/HTMLConstructionSite.h

    r62621 r62891  
    3030#include "HTMLElementStack.h"
    3131#include "HTMLFormattingElementList.h"
     32#include "NotImplemented.h"
    3233#include <wtf/Noncopyable.h>
    3334#include <wtf/PassRefPtr.h>
     
    5758    void insertScriptElement(AtomicHTMLToken&);
    5859    void insertTextNode(AtomicHTMLToken&);
     60
     61    bool insertLeadingWhitespace(AtomicHTMLToken&)
     62    {
     63        notImplemented();
     64        return false;
     65    }
     66
     67    bool insertLeadingWhitespaceWithActiveFormattingElements(AtomicHTMLToken&)
     68    {
     69        notImplemented();
     70        return false;
     71    }
    5972
    6073    void insertHTMLHtmlStartTagBeforeHTML(AtomicHTMLToken&);
  • trunk/WebCore/html/HTMLTreeBuilder.cpp

    r62706 r62891  
    6262namespace {
    6363
    64 inline bool isTreeBuilderWhiteSpace(UChar cc)
     64inline bool isTreeBuilderWhitepace(UChar cc)
    6565{
    6666    return cc == '\t' || cc == '\x0A' || cc == '\x0C' || cc == '\x0D' || cc == ' ';
     67}
     68
     69inline bool hasNonWhitespace(const String& string)
     70{
     71    const UChar* characters = string.characters();
     72    const unsigned length = string.length();
     73    for (unsigned i = 0; i < length; ++i) {
     74        if (!isTreeBuilderWhitepace(characters[i]))
     75            return true;
     76    }
     77    return false;
    6778}
    6879
     
    19902001    case InitialMode:
    19912002        ASSERT(insertionMode() == InitialMode);
    1992         notImplemented();
     2003        if (skipLeadingWhitespace(token))
     2004            return;
    19932005        processDefaultForInitialMode(token);
    19942006        // Fall through.
    19952007    case BeforeHTMLMode:
    19962008        ASSERT(insertionMode() == BeforeHTMLMode);
    1997         notImplemented();
     2009        if (skipLeadingWhitespace(token))
     2010            return;
    19982011        processDefaultForBeforeHTMLMode(token);
    19992012        // Fall through.
    20002013    case BeforeHeadMode:
    20012014        ASSERT(insertionMode() == BeforeHeadMode);
    2002         notImplemented();
     2015        if (skipLeadingWhitespace(token))
     2016            return;
    20032017        processDefaultForBeforeHeadMode(token);
    20042018        // Fall through.
    20052019    case InHeadMode:
    20062020        ASSERT(insertionMode() == InHeadMode);
    2007         notImplemented();
     2021        if (m_tree.insertLeadingWhitespace(token))
     2022            return;
    20082023        processDefaultForInHeadMode(token);
    20092024        // Fall through.
    20102025    case AfterHeadMode:
    20112026        ASSERT(insertionMode() == AfterHeadMode);
    2012         notImplemented();
     2027        if (m_tree.insertLeadingWhitespace(token))
     2028            return;
    20132029        processDefaultForAfterHeadMode(token);
    20142030        // Fall through
     
    20192035        m_tree.reconstructTheActiveFormattingElements();
    20202036        m_tree.insertTextNode(token);
     2037        if (m_framesetOk && hasNonWhitespace(token.characters()))
     2038            m_framesetOk = false;
    20212039        break;
    20222040    case InTableMode:
     
    20272045        m_tree.insertTextNode(token);
    20282046        break;
     2047    case InTableTextMode:
     2048        notImplemented(); // Crazy pending characters.
     2049        break;
    20292050    case InColumnGroupMode:
    20302051        ASSERT(insertionMode() == InColumnGroupMode);
    2031         notImplemented();
     2052        if (m_tree.insertLeadingWhitespace(token))
     2053            return;
     2054        if (!processColgroupEndTagForInColumnGroup()) {
     2055            ASSERT(m_isParsingFragment);
     2056            return;
     2057        }
     2058        processCharacter(token);
    20322059        break;
    20332060    case AfterBodyMode:
     
    20442071    case InHeadNoscriptMode:
    20452072        ASSERT(insertionMode() == InHeadNoscriptMode);
     2073        if (m_tree.insertLeadingWhitespace(token))
     2074            return;
    20462075        processDefaultForInHeadNoscriptMode(token);
    20472076        processToken(token);
     
    20492078    case InFramesetMode:
    20502079    case AfterFramesetMode:
    2051     case AfterAfterFramesetMode:
    20522080        ASSERT(insertionMode() == InFramesetMode || insertionMode() == AfterFramesetMode || insertionMode() == AfterAfterFramesetMode);
     2081        if (m_tree.insertLeadingWhitespace(token))
     2082            return;
    20532083        parseError(token);
     2084        // FIXME: We probably need some sort of loop here. We're basically
     2085        // filtering out the non-whitespace characters.
    20542086        break;
    20552087    case InSelectInTableMode:
     
    20582090        m_tree.insertTextNode(token);
    20592091        break;
    2060     case InTableTextMode:
    20612092    case InForeignContentMode:
    20622093        notImplemented();
     2094        break;
     2095    case AfterAfterFramesetMode:
     2096        if (m_tree.insertLeadingWhitespaceWithActiveFormattingElements(token))
     2097            return;
     2098        parseError(token);
     2099        // FIXME: We probably need some sort of loop here. We're basically
     2100        // filtering out the non-whitespace characters.
    20632101        break;
    20642102    }
  • trunk/WebCore/html/HTMLTreeBuilder.h

    r62624 r62891  
    155155    void callTheAdoptionAgency(AtomicHTMLToken&);
    156156
     157    bool skipLeadingWhitespace(AtomicHTMLToken&)
     158    {
     159        notImplemented();
     160        return false;
     161    }
     162
    157163    void closeTheCell();
    158164
Note: See TracChangeset for help on using the changeset viewer.