Chromium Code Reviews| Index: third_party/WebKit/Source/core/html/parser/HTMLSourceTracker.cpp |
| diff --git a/third_party/WebKit/Source/core/html/parser/HTMLSourceTracker.cpp b/third_party/WebKit/Source/core/html/parser/HTMLSourceTracker.cpp |
| index aaec23e519e49a975365549964c783acefc9164b..9c9ee2400d272ad0ae797beeef76a49230f1e91f 100644 |
| --- a/third_party/WebKit/Source/core/html/parser/HTMLSourceTracker.cpp |
| +++ b/third_party/WebKit/Source/core/html/parser/HTMLSourceTracker.cpp |
| @@ -37,7 +37,8 @@ void HTMLSourceTracker::start(SegmentedString& currentInput, |
| HTMLToken& token) { |
| if (token.type() == HTMLToken::Uninitialized && !m_isStarted) { |
| m_previousSource.clear(); |
| - if (tokenizer->numberOfBufferedCharacters()) |
| + if (needToCheckTokenizerBuffer(tokenizer) && |
| + tokenizer->numberOfBufferedCharacters()) |
| m_previousSource = tokenizer->bufferedCharacters(); |
| } else |
| m_previousSource.append(m_currentSource); |
|
Charlie Harrison
2017/03/07 18:37:48
while you are here could you add braces to the els
wanchang
2017/03/08 00:35:35
Done.
|
| @@ -56,8 +57,12 @@ void HTMLSourceTracker::end(SegmentedString& currentInput, |
| m_cachedSourceForToken = String(); |
| // FIXME: This work should really be done by the HTMLTokenizer. |
| + size_t numberOfBufferedCharacters = 0u; |
| + if (needToCheckTokenizerBuffer(tokenizer)) { |
| + numberOfBufferedCharacters = tokenizer->numberOfBufferedCharacters(); |
| + } |
| token.end(currentInput.numberOfCharactersConsumed() - |
| - tokenizer->numberOfBufferedCharacters()); |
| + numberOfBufferedCharacters); |
| } |
| String HTMLSourceTracker::sourceForToken(const HTMLToken& token) { |
| @@ -92,4 +97,11 @@ String HTMLSourceTracker::sourceForToken(const HTMLToken& token) { |
| return m_cachedSourceForToken; |
| } |
| +bool HTMLSourceTracker::needToCheckTokenizerBuffer(HTMLTokenizer* tokenizer) { |
| + HTMLTokenizer::State state = tokenizer->getState(); |
| + // considering tokenizer temporarybuffer only if in the middle of |
|
Charlie Harrison
2017/03/07 18:37:47
Phrasing suggestion:
"Consider checking the tokeni
wanchang
2017/03/08 00:35:35
Done.
|
| + // endtagbufferingstate or completed parsing the token |
| + return state == HTMLTokenizer::DataState || isEndTagBufferingState(state); |
| +} |
| + |
| } // namespace blink |