diff options
author | Matt A. Tobin <email@mattatobin.com> | 2020-04-17 06:12:55 -0400 |
---|---|---|
committer | Matt A. Tobin <email@mattatobin.com> | 2020-04-17 06:12:55 -0400 |
commit | f4a1d0123c41647f2f05aeaa2ae14bd1806fbb5c (patch) | |
tree | ff5eca8099cbf057f1aa734c951c8fecd14a165a /parser/html/nsHtml5Portability.cpp | |
parent | 675dce947209afa61950777a7e13016604b3fdb1 (diff) | |
download | UXP-f4a1d0123c41647f2f05aeaa2ae14bd1806fbb5c.tar UXP-f4a1d0123c41647f2f05aeaa2ae14bd1806fbb5c.tar.gz UXP-f4a1d0123c41647f2f05aeaa2ae14bd1806fbb5c.tar.lz UXP-f4a1d0123c41647f2f05aeaa2ae14bd1806fbb5c.tar.xz UXP-f4a1d0123c41647f2f05aeaa2ae14bd1806fbb5c.zip |
Bug 1375701 - Atomize class attribute value in the parser in the innerHTML case
Tag #1375
Diffstat (limited to 'parser/html/nsHtml5Portability.cpp')
-rw-r--r-- | parser/html/nsHtml5Portability.cpp | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/parser/html/nsHtml5Portability.cpp b/parser/html/nsHtml5Portability.cpp index 5a76b3c56..400f06204 100644 --- a/parser/html/nsHtml5Portability.cpp +++ b/parser/html/nsHtml5Portability.cpp @@ -16,12 +16,30 @@ nsHtml5Portability::newLocalNameFromBuffer(char16_t* buf, int32_t offset, int32_ return interner->GetAtom(nsDependentSubstring(buf, buf + length)); } +static bool +ContainsWhiteSpace(mozilla::Span<char16_t> aSpan) +{ + for (char16_t c : aSpan) { + if (nsContentUtils::IsHTMLWhitespace(c)) { + return true; + } + } + return false; +} + nsHtml5String nsHtml5Portability::newStringFromBuffer(char16_t* buf, int32_t offset, int32_t length, - nsHtml5TreeBuilder* treeBuilder) + nsHtml5TreeBuilder* treeBuilder, + bool maybeAtomize) { + if (!length) { + return nsHtml5String::EmptyString(); + } + if (maybeAtomize && !ContainsWhiteSpace(mozilla::MakeSpan(buf + offset, length))) { + return nsHtml5String::FromAtom(NS_AtomizeMainThread(nsDependentSubstring(buf + offset, length))); + } return nsHtml5String::FromBuffer(buf + offset, length, treeBuilder); } |