diff options
Diffstat (limited to 'Source/WebCore/html/parser/HTMLToken.h')
-rw-r--r-- | Source/WebCore/html/parser/HTMLToken.h | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/Source/WebCore/html/parser/HTMLToken.h b/Source/WebCore/html/parser/HTMLToken.h index ee87edc6c..0ec9359bd 100644 --- a/Source/WebCore/html/parser/HTMLToken.h +++ b/Source/WebCore/html/parser/HTMLToken.h @@ -112,6 +112,9 @@ public: void setSelfClosing(); + // Used by HTMLTokenizer on behalf of HTMLSourceTracker. + void setAttributeBaseOffset(unsigned attributeBaseOffset) { m_attributeBaseOffset = attributeBaseOffset; } + public: // Used by the XSSAuditor to nuke XSS-laden attributes. void eraseValueOfAttribute(unsigned index); @@ -151,6 +154,8 @@ private: // For DOCTYPE std::unique_ptr<DoctypeData> m_doctypeData; + + unsigned m_attributeBaseOffset { 0 }; // Changes across document.write() boundaries. }; const HTMLToken::Attribute* findAttribute(const Vector<HTMLToken::Attribute>&, StringView name); @@ -313,14 +318,14 @@ inline void HTMLToken::beginAttribute(unsigned offset) m_attributes.grow(m_attributes.size() + 1); m_currentAttribute = &m_attributes.last(); - m_currentAttribute->startOffset = offset; + m_currentAttribute->startOffset = offset - m_attributeBaseOffset; } inline void HTMLToken::endAttribute(unsigned offset) { ASSERT(offset); ASSERT(m_currentAttribute); - m_currentAttribute->endOffset = offset; + m_currentAttribute->endOffset = offset - m_attributeBaseOffset; #if !ASSERT_DISABLED m_currentAttribute = nullptr; #endif |