Changeset 62919 in webkit
- Timestamp:
- Jul 9, 2010 2:01:02 AM (14 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r62916 r62919 1 2010-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 1 34 2010-07-09 Eric Seidel <eric@webkit.org> 2 35 -
trunk/WebCore/html/HTMLTreeBuilder.cpp
r62914 r62919 691 691 ASSERT(m_tree.openElements()->top() == m_tree.openElements()->htmlElement()); 692 692 m_tree.insertHTMLElement(token); 693 m_insertionMode = InFramesetMode;693 setInsertionMode(InFramesetMode); 694 694 return; 695 695 } … … 812 812 m_tree.insertHTMLElement(token); 813 813 m_framesetOk = false; 814 m_insertionMode = InTableMode;814 setInsertionMode(InTableMode); 815 815 return; 816 816 } … … 857 857 m_originalInsertionMode = m_insertionMode; 858 858 m_framesetOk = false; 859 m_insertionMode = TextMode;859 setInsertionMode(TextMode); 860 860 return; 861 861 } … … 890 890 || m_insertionMode == InRowMode 891 891 || m_insertionMode == InCellMode) 892 m_insertionMode = InSelectInTableMode;892 setInsertionMode(InSelectInTableMode); 893 893 else 894 m_insertionMode = InSelectMode;894 setInsertionMode(InSelectMode); 895 895 return; 896 896 } … … 944 944 } 945 945 m_tree.openElements()->pop(); 946 m_insertionMode = InTableMode;946 setInsertionMode(InTableMode); 947 947 return true; 948 948 } … … 969 969 m_tree.activeFormattingElements()->appendMarker(); 970 970 m_tree.insertHTMLElement(token); 971 m_insertionMode = InCaptionMode;971 setInsertionMode(InCaptionMode); 972 972 return; 973 973 } … … 975 975 m_tree.openElements()->popUntilTableScopeMarker(); 976 976 m_tree.insertHTMLElement(token); 977 m_insertionMode = InColumnGroupMode;977 setInsertionMode(InColumnGroupMode); 978 978 return; 979 979 } … … 987 987 m_tree.openElements()->popUntilTableScopeMarker(); 988 988 m_tree.insertHTMLElement(token); 989 m_insertionMode = InTableBodyMode;989 setInsertionMode(InTableBodyMode); 990 990 return; 991 991 } … … 1076 1076 m_framesetOk = false; 1077 1077 m_tree.insertHTMLBodyElement(token); 1078 m_insertionMode = InBodyMode;1078 setInsertionMode(InBodyMode); 1079 1079 return; 1080 1080 } … … 1149 1149 m_tree.openElements()->popUntilTableBodyScopeMarker(); // How is there ever anything to pop? 1150 1150 m_tree.insertHTMLElement(token); 1151 m_insertionMode = InRowMode;1151 setInsertionMode(InRowMode); 1152 1152 return; 1153 1153 } … … 1179 1179 m_tree.openElements()->popUntilTableRowScopeMarker(); 1180 1180 m_tree.insertHTMLElement(token); 1181 m_insertionMode = InCellMode;1181 setInsertionMode(InCellMode); 1182 1182 m_tree.activeFormattingElements()->appendMarker(); 1183 1183 return; … … 1221 1221 return; 1222 1222 } 1223 m_insertionMode = InBodyMode;1223 setInsertionMode(InBodyMode); 1224 1224 processStartTag(token); 1225 1225 break; … … 1360 1360 } 1361 1361 notImplemented(); 1362 m_insertionMode = AfterBodyMode;1362 setInsertionMode(AfterBodyMode); 1363 1363 return true; 1364 1364 } … … 1524 1524 void HTMLTreeBuilder::setInsertionModeAndEnd(InsertionMode newInsertionMode, bool foreign) 1525 1525 { 1526 m_insertionMode = newInsertionMode;1526 setInsertionMode(newInsertionMode); 1527 1527 if (foreign) { 1528 1528 m_secondaryInsertionMode = m_insertionMode; 1529 m_insertionMode = InForeignContentMode;1529 setInsertionMode(InForeignContentMode); 1530 1530 } 1531 1531 } … … 1603 1603 m_tree.openElements()->popUntilTableBodyScopeMarker(); 1604 1604 m_tree.openElements()->pop(); 1605 m_insertionMode = InTableMode;1605 setInsertionMode(InTableMode); 1606 1606 return; 1607 1607 } … … 1679 1679 m_tree.openElements()->popUntilPopped(token.name()); 1680 1680 m_tree.activeFormattingElements()->clearToLastMarker(); 1681 m_insertionMode = InRowMode;1681 setInsertionMode(InRowMode); 1682 1682 ASSERT(m_tree.currentElement()->hasTagName(trTag)); 1683 1683 return; … … 1851 1851 m_tree.openElements()->popUntilPopped(captionTag.localName()); 1852 1852 m_tree.activeFormattingElements()->clearToLastMarker(); 1853 m_insertionMode = InTableMode;1853 setInsertionMode(InTableMode); 1854 1854 return true; 1855 1855 } … … 1865 1865 ASSERT(m_tree.currentElement()->hasTagName(trTag)); 1866 1866 m_tree.openElements()->pop(); 1867 m_insertionMode = InTableBodyMode;1867 setInsertionMode(InTableBodyMode); 1868 1868 return true; 1869 1869 } … … 2017 2017 return; 2018 2018 } 2019 m_insertionMode = AfterAfterBodyMode;2019 setInsertionMode(AfterAfterBodyMode); 2020 2020 return; 2021 2021 } … … 2024 2024 ASSERT(insertionMode() == AfterBodyMode || insertionMode() == AfterAfterBodyMode); 2025 2025 parseError(token); 2026 m_insertionMode = InBodyMode;2026 setInsertionMode(InBodyMode); 2027 2027 processEndTag(token); 2028 2028 break; … … 2050 2050 m_scriptToProcess = m_tree.currentElement(); 2051 2051 m_tree.openElements()->pop(); 2052 m_insertionMode = m_originalInsertionMode;2052 setInsertionMode(m_originalInsertionMode); 2053 2053 return; 2054 2054 } 2055 2055 m_tree.openElements()->pop(); 2056 m_insertionMode = m_originalInsertionMode;2056 setInsertionMode(m_originalInsertionMode); 2057 2057 break; 2058 2058 case InFramesetMode: … … 2065 2065 m_tree.openElements()->pop(); 2066 2066 if (!m_isParsingFragment && !m_tree.currentElement()->hasTagName(framesetTag)) 2067 m_insertionMode = AfterFramesetMode;2067 setInsertionMode(AfterFramesetMode); 2068 2068 return; 2069 2069 } … … 2072 2072 ASSERT(insertionMode() == AfterFramesetMode); 2073 2073 if (token.name() == htmlTag) { 2074 m_insertionMode = AfterAfterFramesetMode;2074 setInsertionMode(AfterAfterFramesetMode); 2075 2075 return; 2076 2076 } … … 2228 2228 ASSERT(m_pendingTableCharacters.isEmpty()); 2229 2229 m_originalInsertionMode = m_insertionMode; 2230 m_insertionMode = InTableTextMode;2230 setInsertionMode(InTableTextMode); 2231 2231 // Fall through. 2232 2232 } … … 2252 2252 ASSERT(insertionMode() == AfterBodyMode || insertionMode() == AfterAfterBodyMode); 2253 2253 parseError(token); 2254 m_insertionMode = InBodyMode;2254 setInsertionMode(InBodyMode); 2255 2255 goto ReprocessBuffer; 2256 2256 break; … … 2429 2429 m_tree.insertTextNode(characters); 2430 2430 m_framesetOk = false; 2431 m_insertionMode = m_originalInsertionMode;2431 setInsertionMode(m_originalInsertionMode); 2432 2432 return; 2433 2433 } 2434 2434 m_tree.insertTextNode(characters); 2435 m_insertionMode = m_originalInsertionMode;2435 setInsertionMode(m_originalInsertionMode); 2436 2436 } 2437 2437 … … 2486 2486 m_tokenizer->setState(HTMLTokenizer::RCDATAState); 2487 2487 m_originalInsertionMode = m_insertionMode; 2488 m_insertionMode = TextMode;2488 setInsertionMode(TextMode); 2489 2489 } 2490 2490 … … 2495 2495 m_tokenizer->setState(HTMLTokenizer::RAWTEXTState); 2496 2496 m_originalInsertionMode = m_insertionMode; 2497 m_insertionMode = TextMode;2497 setInsertionMode(TextMode); 2498 2498 } 2499 2499 … … 2504 2504 m_tokenizer->setState(HTMLTokenizer::ScriptDataState); 2505 2505 m_originalInsertionMode = m_insertionMode; 2506 m_insertionMode = TextMode;2506 setInsertionMode(TextMode); 2507 2507 } 2508 2508 -
trunk/WebCore/html/HTMLTreeBuilder.h
r62914 r62919 186 186 bool m_isPaused; 187 187 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. 188 191 InsertionMode m_insertionMode; 189 192 InsertionMode m_originalInsertionMode;
Note: See TracChangeset
for help on using the changeset viewer.