Changeset 62919 in webkit


Ignore:
Timestamp:
Jul 9, 2010 2:01:02 AM (14 years ago)
Author:
eric@webkit.org
Message:

2010-07-09 Eric Seidel <eric@webkit.org>

Reviewed by Adam Barth.

Add setInsertionMode setter in preparation for "in foreign content" mode
https://bugs.webkit.org/show_bug.cgi?id=41942

"in foreign content" mode needs to be able to use a fake
insertion mode for processing. We need to be able to save the
original insertion mode, set a fake one, and then restore the original
if it wasn't changed. To detect changes, we need all callsites to
use a setInsertionMode accessor instead of m_insertionMode =

No functional changes, thus no tests.

  • html/HTMLTreeBuilder.cpp: (WebCore::HTMLTreeBuilder::processStartTagForInBody): (WebCore::HTMLTreeBuilder::processColgroupEndTagForInColumnGroup): (WebCore::HTMLTreeBuilder::processStartTagForInTable): (WebCore::HTMLTreeBuilder::processStartTag): (WebCore::HTMLTreeBuilder::processBodyEndTagForInBody): (WebCore::HTMLTreeBuilder::setInsertionModeAndEnd): (WebCore::HTMLTreeBuilder::processEndTagForInTableBody): (WebCore::HTMLTreeBuilder::processEndTagForInCell): (WebCore::HTMLTreeBuilder::processCaptionEndTagForInCaption): (WebCore::HTMLTreeBuilder::processTrEndTagForInRow): (WebCore::HTMLTreeBuilder::processEndTag): (WebCore::HTMLTreeBuilder::processCharacter): (WebCore::HTMLTreeBuilder::processDefaultForInTableTextMode): (WebCore::HTMLTreeBuilder::processGenericRCDATAStartTag): (WebCore::HTMLTreeBuilder::processGenericRawTextStartTag): (WebCore::HTMLTreeBuilder::processScriptStartTag):
Location:
trunk/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r62916 r62919  
     12010-07-09  Eric Seidel  <eric@webkit.org>
     2
     3        Reviewed by Adam Barth.
     4
     5        Add setInsertionMode setter in preparation for "in foreign content" mode
     6        https://bugs.webkit.org/show_bug.cgi?id=41942
     7
     8        "in foreign content" mode needs to be able to use a fake
     9        insertion mode for processing.  We need to be able to save the
     10        original insertion mode, set a fake one, and then restore the original
     11        if it wasn't changed.  To detect changes, we need all callsites to
     12        use a setInsertionMode accessor instead of m_insertionMode =
     13
     14        No functional changes, thus no tests.
     15
     16        * html/HTMLTreeBuilder.cpp:
     17        (WebCore::HTMLTreeBuilder::processStartTagForInBody):
     18        (WebCore::HTMLTreeBuilder::processColgroupEndTagForInColumnGroup):
     19        (WebCore::HTMLTreeBuilder::processStartTagForInTable):
     20        (WebCore::HTMLTreeBuilder::processStartTag):
     21        (WebCore::HTMLTreeBuilder::processBodyEndTagForInBody):
     22        (WebCore::HTMLTreeBuilder::setInsertionModeAndEnd):
     23        (WebCore::HTMLTreeBuilder::processEndTagForInTableBody):
     24        (WebCore::HTMLTreeBuilder::processEndTagForInCell):
     25        (WebCore::HTMLTreeBuilder::processCaptionEndTagForInCaption):
     26        (WebCore::HTMLTreeBuilder::processTrEndTagForInRow):
     27        (WebCore::HTMLTreeBuilder::processEndTag):
     28        (WebCore::HTMLTreeBuilder::processCharacter):
     29        (WebCore::HTMLTreeBuilder::processDefaultForInTableTextMode):
     30        (WebCore::HTMLTreeBuilder::processGenericRCDATAStartTag):
     31        (WebCore::HTMLTreeBuilder::processGenericRawTextStartTag):
     32        (WebCore::HTMLTreeBuilder::processScriptStartTag):
     33
    1342010-07-09  Eric Seidel  <eric@webkit.org>
    235
  • trunk/WebCore/html/HTMLTreeBuilder.cpp

    r62914 r62919  
    691691        ASSERT(m_tree.openElements()->top() == m_tree.openElements()->htmlElement());
    692692        m_tree.insertHTMLElement(token);
    693         m_insertionMode = InFramesetMode;
     693        setInsertionMode(InFramesetMode);
    694694        return;
    695695    }
     
    812812        m_tree.insertHTMLElement(token);
    813813        m_framesetOk = false;
    814         m_insertionMode = InTableMode;
     814        setInsertionMode(InTableMode);
    815815        return;
    816816    }
     
    857857        m_originalInsertionMode = m_insertionMode;
    858858        m_framesetOk = false;
    859         m_insertionMode = TextMode;
     859        setInsertionMode(TextMode);
    860860        return;
    861861    }
     
    890890             || m_insertionMode == InRowMode
    891891             || m_insertionMode == InCellMode)
    892             m_insertionMode = InSelectInTableMode;
     892            setInsertionMode(InSelectInTableMode);
    893893        else
    894             m_insertionMode = InSelectMode;
     894            setInsertionMode(InSelectMode);
    895895        return;
    896896    }
     
    944944    }
    945945    m_tree.openElements()->pop();
    946     m_insertionMode = InTableMode;
     946    setInsertionMode(InTableMode);
    947947    return true;
    948948}
     
    969969        m_tree.activeFormattingElements()->appendMarker();
    970970        m_tree.insertHTMLElement(token);
    971         m_insertionMode = InCaptionMode;
     971        setInsertionMode(InCaptionMode);
    972972        return;
    973973    }
     
    975975        m_tree.openElements()->popUntilTableScopeMarker();
    976976        m_tree.insertHTMLElement(token);
    977         m_insertionMode = InColumnGroupMode;
     977        setInsertionMode(InColumnGroupMode);
    978978        return;
    979979    }
     
    987987        m_tree.openElements()->popUntilTableScopeMarker();
    988988        m_tree.insertHTMLElement(token);
    989         m_insertionMode = InTableBodyMode;
     989        setInsertionMode(InTableBodyMode);
    990990        return;
    991991    }
     
    10761076            m_framesetOk = false;
    10771077            m_tree.insertHTMLBodyElement(token);
    1078             m_insertionMode = InBodyMode;
     1078            setInsertionMode(InBodyMode);
    10791079            return;
    10801080        }
     
    11491149            m_tree.openElements()->popUntilTableBodyScopeMarker(); // How is there ever anything to pop?
    11501150            m_tree.insertHTMLElement(token);
    1151             m_insertionMode = InRowMode;
     1151            setInsertionMode(InRowMode);
    11521152            return;
    11531153        }
     
    11791179            m_tree.openElements()->popUntilTableRowScopeMarker();
    11801180            m_tree.insertHTMLElement(token);
    1181             m_insertionMode = InCellMode;
     1181            setInsertionMode(InCellMode);
    11821182            m_tree.activeFormattingElements()->appendMarker();
    11831183            return;
     
    12211221            return;
    12221222        }
    1223         m_insertionMode = InBodyMode;
     1223        setInsertionMode(InBodyMode);
    12241224        processStartTag(token);
    12251225        break;
     
    13601360    }
    13611361    notImplemented();
    1362     m_insertionMode = AfterBodyMode;
     1362    setInsertionMode(AfterBodyMode);
    13631363    return true;
    13641364}
     
    15241524void HTMLTreeBuilder::setInsertionModeAndEnd(InsertionMode newInsertionMode, bool foreign)
    15251525{
    1526     m_insertionMode = newInsertionMode;
     1526    setInsertionMode(newInsertionMode);
    15271527    if (foreign) {
    15281528        m_secondaryInsertionMode = m_insertionMode;
    1529         m_insertionMode = InForeignContentMode;
     1529        setInsertionMode(InForeignContentMode);
    15301530    }
    15311531}
     
    16031603        m_tree.openElements()->popUntilTableBodyScopeMarker();
    16041604        m_tree.openElements()->pop();
    1605         m_insertionMode = InTableMode;
     1605        setInsertionMode(InTableMode);
    16061606        return;
    16071607    }
     
    16791679        m_tree.openElements()->popUntilPopped(token.name());
    16801680        m_tree.activeFormattingElements()->clearToLastMarker();
    1681         m_insertionMode = InRowMode;
     1681        setInsertionMode(InRowMode);
    16821682        ASSERT(m_tree.currentElement()->hasTagName(trTag));
    16831683        return;
     
    18511851    m_tree.openElements()->popUntilPopped(captionTag.localName());
    18521852    m_tree.activeFormattingElements()->clearToLastMarker();
    1853     m_insertionMode = InTableMode;
     1853    setInsertionMode(InTableMode);
    18541854    return true;
    18551855}
     
    18651865    ASSERT(m_tree.currentElement()->hasTagName(trTag));
    18661866    m_tree.openElements()->pop();
    1867     m_insertionMode = InTableBodyMode;
     1867    setInsertionMode(InTableBodyMode);
    18681868    return true;
    18691869}
     
    20172017                return;
    20182018            }
    2019             m_insertionMode = AfterAfterBodyMode;
     2019            setInsertionMode(AfterAfterBodyMode);
    20202020            return;
    20212021        }
     
    20242024        ASSERT(insertionMode() == AfterBodyMode || insertionMode() == AfterAfterBodyMode);
    20252025        parseError(token);
    2026         m_insertionMode = InBodyMode;
     2026        setInsertionMode(InBodyMode);
    20272027        processEndTag(token);
    20282028        break;
     
    20502050            m_scriptToProcess = m_tree.currentElement();
    20512051            m_tree.openElements()->pop();
    2052             m_insertionMode = m_originalInsertionMode;
     2052            setInsertionMode(m_originalInsertionMode);
    20532053            return;
    20542054        }
    20552055        m_tree.openElements()->pop();
    2056         m_insertionMode = m_originalInsertionMode;
     2056        setInsertionMode(m_originalInsertionMode);
    20572057        break;
    20582058    case InFramesetMode:
     
    20652065            m_tree.openElements()->pop();
    20662066            if (!m_isParsingFragment && !m_tree.currentElement()->hasTagName(framesetTag))
    2067                 m_insertionMode = AfterFramesetMode;
     2067                setInsertionMode(AfterFramesetMode);
    20682068            return;
    20692069        }
     
    20722072        ASSERT(insertionMode() == AfterFramesetMode);
    20732073        if (token.name() == htmlTag) {
    2074             m_insertionMode = AfterAfterFramesetMode;
     2074            setInsertionMode(AfterAfterFramesetMode);
    20752075            return;
    20762076        }
     
    22282228        ASSERT(m_pendingTableCharacters.isEmpty());
    22292229        m_originalInsertionMode = m_insertionMode;
    2230         m_insertionMode = InTableTextMode;
     2230        setInsertionMode(InTableTextMode);
    22312231        // Fall through.
    22322232    }
     
    22522252        ASSERT(insertionMode() == AfterBodyMode || insertionMode() == AfterAfterBodyMode);
    22532253        parseError(token);
    2254         m_insertionMode = InBodyMode;
     2254        setInsertionMode(InBodyMode);
    22552255        goto ReprocessBuffer;
    22562256        break;
     
    24292429        m_tree.insertTextNode(characters);
    24302430        m_framesetOk = false;
    2431         m_insertionMode = m_originalInsertionMode;
     2431        setInsertionMode(m_originalInsertionMode);
    24322432        return;
    24332433    }
    24342434    m_tree.insertTextNode(characters);
    2435     m_insertionMode = m_originalInsertionMode;
     2435    setInsertionMode(m_originalInsertionMode);
    24362436}
    24372437
     
    24862486    m_tokenizer->setState(HTMLTokenizer::RCDATAState);
    24872487    m_originalInsertionMode = m_insertionMode;
    2488     m_insertionMode = TextMode;
     2488    setInsertionMode(TextMode);
    24892489}
    24902490
     
    24952495    m_tokenizer->setState(HTMLTokenizer::RAWTEXTState);
    24962496    m_originalInsertionMode = m_insertionMode;
    2497     m_insertionMode = TextMode;
     2497    setInsertionMode(TextMode);
    24982498}
    24992499
     
    25042504    m_tokenizer->setState(HTMLTokenizer::ScriptDataState);
    25052505    m_originalInsertionMode = m_insertionMode;
    2506     m_insertionMode = TextMode;
     2506    setInsertionMode(TextMode);
    25072507}
    25082508
  • trunk/WebCore/html/HTMLTreeBuilder.h

    r62914 r62919  
    186186    bool m_isPaused;
    187187
     188    // FIXME: InsertionModes should be a separate object to prevent direct
     189    // manipulation of these variables.  For now, be careful to always use
     190    // setInsertionMode and never set m_insertionMode directly.
    188191    InsertionMode m_insertionMode;
    189192    InsertionMode m_originalInsertionMode;
Note: See TracChangeset for help on using the changeset viewer.