summaryrefslogtreecommitdiff
path: root/Source/WebCore/html/parser/HTMLSourceTracker.cpp
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2016-04-10 09:28:39 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2016-04-10 09:28:39 +0000
commit32761a6cee1d0dee366b885b7b9c777e67885688 (patch)
treed6bec92bebfb216f4126356e55518842c2f476a1 /Source/WebCore/html/parser/HTMLSourceTracker.cpp
parenta4e969f4965059196ca948db781e52f7cfebf19e (diff)
downloadWebKitGtk-tarball-32761a6cee1d0dee366b885b7b9c777e67885688.tar.gz
webkitgtk-2.4.11webkitgtk-2.4.11
Diffstat (limited to 'Source/WebCore/html/parser/HTMLSourceTracker.cpp')
-rw-r--r--Source/WebCore/html/parser/HTMLSourceTracker.cpp39
1 files changed, 14 insertions, 25 deletions
diff --git a/Source/WebCore/html/parser/HTMLSourceTracker.cpp b/Source/WebCore/html/parser/HTMLSourceTracker.cpp
index 0c9a04632..bf1a8c466 100644
--- a/Source/WebCore/html/parser/HTMLSourceTracker.cpp
+++ b/Source/WebCore/html/parser/HTMLSourceTracker.cpp
@@ -1,6 +1,5 @@
/*
* Copyright (C) 2010 Adam Barth. All Rights Reserved.
- * Copyright (C) 2015 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -26,7 +25,6 @@
#include "config.h"
#include "HTMLSourceTracker.h"
-
#include "HTMLTokenizer.h"
#include <wtf/text/StringBuilder.h>
@@ -36,46 +34,42 @@ HTMLSourceTracker::HTMLSourceTracker()
{
}
-void HTMLSourceTracker::startToken(SegmentedString& currentInput, HTMLTokenizer& tokenizer)
+void HTMLSourceTracker::start(SegmentedString& currentInput, HTMLTokenizer* tokenizer, HTMLToken& token)
{
- if (!m_started) {
- if (tokenizer.numberOfBufferedCharacters())
- m_previousSource = tokenizer.bufferedCharacters();
- else
- m_previousSource.clear();
- m_started = true;
+ if (token.type() == HTMLToken::Uninitialized) {
+ m_previousSource.clear();
+ if (tokenizer->numberOfBufferedCharacters())
+ m_previousSource = tokenizer->bufferedCharacters();
} else
m_previousSource.append(m_currentSource);
m_currentSource = currentInput;
- m_tokenStart = m_currentSource.numberOfCharactersConsumed() - m_previousSource.length();
+ token.setBaseOffset(m_currentSource.numberOfCharactersConsumed() - m_previousSource.length());
}
-void HTMLSourceTracker::endToken(SegmentedString& currentInput, HTMLTokenizer& tokenizer)
+void HTMLSourceTracker::end(SegmentedString& currentInput, HTMLTokenizer* tokenizer, HTMLToken& token)
{
- ASSERT(m_started);
- m_started = false;
-
- m_tokenEnd = currentInput.numberOfCharactersConsumed() - tokenizer.numberOfBufferedCharacters();
m_cachedSourceForToken = String();
+
+ // FIXME: This work should really be done by the HTMLTokenizer.
+ token.end(currentInput.numberOfCharactersConsumed() - tokenizer->numberOfBufferedCharacters());
}
-String HTMLSourceTracker::source(const HTMLToken& token)
+String HTMLSourceTracker::sourceForToken(const HTMLToken& token)
{
- ASSERT(!m_started);
-
if (token.type() == HTMLToken::EndOfFile)
return String(); // Hides the null character we use to mark the end of file.
if (!m_cachedSourceForToken.isEmpty())
return m_cachedSourceForToken;
- unsigned length = m_tokenEnd - m_tokenStart;
+ ASSERT(!token.startIndex());
+ size_t length = static_cast<size_t>(token.endIndex() - token.startIndex());
StringBuilder source;
source.reserveCapacity(length);
- unsigned i = 0;
+ size_t i = 0;
for ( ; i < length && !m_previousSource.isEmpty(); ++i) {
source.append(m_previousSource.currentChar());
m_previousSource.advance();
@@ -90,9 +84,4 @@ String HTMLSourceTracker::source(const HTMLToken& token)
return m_cachedSourceForToken;
}
-String HTMLSourceTracker::source(const HTMLToken& token, unsigned attributeStart, unsigned attributeEnd)
-{
- return source(token).substring(attributeStart - m_tokenStart, attributeEnd - attributeStart);
-}
-
}