// Copyright 2018 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifdef UNSAFE_BUFFERS_BUILD // TODO(crbug.com/351564777): Remove this and convert code to safer constructs. #pragma allow_unsafe_buffers #endif #include "third_party/blink/renderer/core/dom/names_map.h" #include <memory> #include "third_party/blink/renderer/core/dom/space_split_string.h" #include "third_party/blink/renderer/core/html/parser/html_parser_idioms.h" #include "third_party/blink/renderer/platform/heap/garbage_collected.h" #include "third_party/blink/renderer/platform/wtf/text/string_hash.h" #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" namespace blink { NamesMap::NamesMap(const AtomicString& string) { … } void NamesMap::Set(const AtomicString& source) { … } void NamesMap::Add(const AtomicString& key, const AtomicString& value) { … } // Parser for HTML exportparts attribute. See // http://drafts.csswg.org/css-shadow-parts/. // // Summary is that we are parsing a comma-separated list of part-mappings. A // part mapping is a part name or 2 colon-separated part names. If any // part-mapping is invalid, we ignore it and continue parsing after the next // comma. Part names are delimited by space, comma or colon. Apart from that, // whitespace is not significant. // The states that can occur while parsing the part map and their transitions. // A "+" indicates that this transition should consume the current character. A // "*" indicates that this is invalid input. In general invalid input causes us // to reject the current mapping and returns us to searching for a comma. enum State { … }; template <typename CharacterType> void NamesMap::Set(const AtomicString& source, const CharacterType* characters) { … } SpaceSplitString* NamesMap::Get(const AtomicString& key) const { … } } // namespace blink